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