如何根据Parallel Gateway中的文件类型拆分Alfresco工作流文件,将其指向两个不同的路径

时间:2017-05-16 08:40:46

标签: workflow alfresco activiti

我想在Parallel Gateway中根据文件类型(如word和pdf)拆分Alfresco工作流文件,将其指向两条不同的路径。如下图所示。 Please click to show the image

我正在使用并行网关,它是正确的方式还是需要一些其他网关来解决这类问题? 我是Alfresco工作流实施的新手,所以请帮助我。

2 个答案:

答案 0 :(得分:1)

Alfresco正在为工作时使用activiti工作流引擎。请注意您应该使用哪个网关取决于您的要求。

主要使用3个网关

  1. 并行网关:它将为每个序列流创建一个并发执行。

  2. 独占网关:当执行到达此网关时,将按照定义它们的顺序评估所有传出顺序流。选择条件评估为真的顺序流程以继续该过程。

  3. 包含网关:包容性网关可视为独占网关和并行网关的组合。与专用网关一样,您可以定义传出顺序流的条件,并且包含网关将对它们进行评估。但主要区别在于包容性网关可以采用多个序列流,如并行网关。
  4. 如果您不确定工作流程中的网关是什么,请参阅以下链接。

    有关活动门方式的详细说明:  https://www.activiti.org/userguide/#bpmnGateways

    网关的Alfresco文档:http://docs.alfresco.com/4.0/concepts/wf-process-def-gateways.html

答案 1 :(得分:0)

我用Alfresco jscripting完成了如下操作:

<activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
      <activiti:field name="script">
        <activiti:string><![CDATA[execution.setVariable('bpm_assignee', task.getVariable('bpm_assignee'));
            execution.setVariable('bpm_comment', task.getVariable('bpm_comment'));
            execution.setVariable('wf_manager', person);
            execution.setVariable('bpm_dueDate', task.dueDate);
            execution.setVariable('bpm_priority', task.priority);

            var fileExtention="";

            for (var i = 0; i < bpm_package.children.length; i++) {
                var child = bpm_package.children[i];

                var fileArray = child.properties['cm:name'].split('.'); 
                logger.log("#############FileArray >>"+fileArray);
                fileExtention = fileArray[fileArray.length-1];   
                logger.log("###########FileExtention1  >>"+fileExtention );
                break;
            }

            logger.log("#############FileExtention2  >>"+fileExtention );
            if(fileExtention.indexOf('pdf') != -1){
                execution.setVariable('wf_file_type_pdf', true);
                logger.log("##############PDF found##################");
            } else{
                execution.setVariable('wf_file_type_pdf', false);
                logger.log("##############Word found##################");
            }]]></activiti:string>
      </activiti:field>
    </activiti:taskListener>

现在我能够获取文件类型并且工作正常。 谢谢你的支持!!!