Workflow 如何在并行网关中根据文件类型拆分露天工作流文件,将其引导到两条不同的路径中

Workflow 如何在并行网关中根据文件类型拆分露天工作流文件,将其引导到两条不同的路径中,workflow,alfresco,activiti,Workflow,Alfresco,Activiti,我想在并行网关中根据文件类型(如word和pdf)拆分Alfresco工作流文件,将其引导到两个不同的路径中。如下图所示。 我使用的是并行网关,这是正确的方法还是需要其他网关来解决这类问题? 我不熟悉Alfresco工作流实施,请帮助我。Alfresco正在为Workfow使用activiti工作流引擎。关于您应该使用哪个网关,这取决于您的要求 主要使用了3个网关 并行网关:它将为每个序列流创建一个并发执行 独占网关:当执行到达该网关时,所有传出序列流都将按照其定义的顺序进行评估。选择条件评估

我想在并行网关中根据文件类型(如word和pdf)拆分Alfresco工作流文件,将其引导到两个不同的路径中。如下图所示。

我使用的是并行网关,这是正确的方法还是需要其他网关来解决这类问题?
我不熟悉Alfresco工作流实施,请帮助我。

Alfresco正在为Workfow使用activiti工作流引擎。关于您应该使用哪个网关,这取决于您的要求

主要使用了3个网关

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

  • 独占网关:当执行到达该网关时,所有传出序列流都将按照其定义的顺序进行评估。选择条件评估为true的序列流以继续该过程

  • 包容性网关:包容性网关可以看作是独占网关和并行网关的组合。与独占网关一样,您可以定义传出序列流的条件,并且独占网关将对其进行评估。但主要区别在于,与并行网关一样,包容性网关可以接受多个序列流
  • 如果您不确定工作流中的网关是什么,请参阅下面的链接以了解相同内容

    活动门通道的详细说明:


    网关的Alfresco文档:

    我使用Alfresco JScript完成了以下工作:

    <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>
    
    
    
    现在我能够得到文件类型,它工作得很好。
    谢谢你的支持

    我认为,Inclusive Gateway可以解决我的问题,但现在我关心的是如何分割工作流文件并检查它们的文件类型或MIMETYPE,以便我可以将其转发到理想的方向?在工作流脚本中,您正在编写的任何代码都是alfresco javascript api。您可以通过“document.MIMETYPE”获取MIMETYPE。有关详细信息,请查看链接。如果正确,请将其标记为正确;)我从另一个问题中看到了这个代码ref:ActivitiScriptNode scriptNode=(ActivitiScriptNode)execution.getVariable(WorkflowNotificationUtils.PROP_包);NodeRef packagenode=scriptNode.getNodeRef();NodeRef docRef=Configuration.serviceRegistry.getNodeService().getChildAssocs(packagenode.get(0.getChildRef());我可以从docRef变量中获取MIMETYPE吗?如果是,那么怎么做?在java中,您需要这样做:ContentData ContentData=(ContentData)nodeService.getProperty(nodeRef,ContentModel.PROP_CONTENT);字符串nodeMimeType=contentData.getMimetype();