我想在Parallel Gateway中根据文件类型(如word和pdf)拆分Alfresco工作流文件,将其指向两条不同的路径。如下图所示。 Please click to show the image
我正在使用并行网关,它是正确的方式还是需要一些其他网关来解决这类问题? 我是Alfresco工作流实施的新手,所以请帮助我。
答案 0 :(得分:1)
Alfresco正在为工作时使用activiti工作流引擎。请注意您应该使用哪个网关取决于您的要求。
主要使用3个网关
并行网关:它将为每个序列流创建一个并发执行。
独占网关:当执行到达此网关时,将按照定义它们的顺序评估所有传出顺序流。选择条件评估为真的顺序流程以继续该过程。
如果您不确定工作流程中的网关是什么,请参阅以下链接。
有关活动门方式的详细说明: 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>
现在我能够获取文件类型并且工作正常。 谢谢你的支持!!!