【问题标题】:Revert to the version of the document before workflow - Alfresco恢复到工作流程之前的文档版本 - Alfresco
【发布时间】:2016-02-21 12:54:23
【问题描述】:

在我的自定义工作流程中,我在创建工作流程时对 PDF 进行了一些更改:

<activiti:executionListener event="start" class="pt.entp.fields.CreateFields"></activiti:executionListener>

我希望,当我取消工作流时,工作流会清除创建时所做的更改。没办法吗?

【问题讨论】:

    标签: workflow alfresco activiti alfresco-share


    【解决方案1】:

    首先将您当前的版本存储在启动工作流侦听器中:

        NodeRef myPdfnode = ...
        String currentversion = serviceRegistry.getVersionService.getCurrentVersion(myPdfnode).getVersionLabel(); 
        execution.setVariable("mynode_currentversion", currentversion);
    

    您需要使用结束工作流侦听器恢复 pdf 文档的版本

     <activiti:executionListener event="end"
     class="pt.entp.fields.WorkflowEnded"></activiti:executionListener>
    

    在那里,检查工作流程是否确实被取消,然后恢复到您保存的版本:

     String deleteReason = execution.getDeleteReason();
    
         if ("cancelled".equals(deleteReason)){
           NodeRef myPdfnode = ...
           String initialversionLabel = execution.getVaraible("mynode_currentversion");
           Version initialversion = serviceRegistry.getVersionService.getVersionHistory(myPdfnode).getVersion(initialversionLabel );
           serviceRegistry.getVersionService.revert(myPdfnode, initialversion);
         }
    

    【讨论】:

    • 我试过了,确实是 1.0 版,但是文档与我在启动工作流时创建的字段相同。
    • 我怀疑我的恢复版本的代码不好。不知道该怎么做。您可以在 ScriptNode.java 源代码中找到示例代码,其中有一个 revert() 方法。
    • 我已经更新了答案。它现在恢复到第一个版本。如果您需要不同的版本,请将版本存储在 startlistener 的 wf executioncontext 中,然后在 endlistener 中找到该版本。
    • cannot find symbol [ERROR] symbol: method getRootVersion(org.alfresco.service.cmr.repository.NodeRef)
    • 如何在 startlistener 的 wf 执行上下文中保存实际版本?可以举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    相关资源
    最近更新 更多