我希望在一个文件夹中创建一个规则,该规则监视工作流的(最终)结果任务,并将文档移动到另一个文件夹。我使用了修改后的池式评审模板,该模板位于Repository > Dictionary >Script目录(start-组合式- review -workflow.js. use )中。
我创建的规则是:
+++++++++
When:
项目被更新
如果满足所有条件,则为:
结果包含“任务已完成”
-结果等于bpm:结果名称。从“显示更多..”菜单选择。
执行操作:
把物品移到..。
+++++++++
但我无法像预期的那样得到最终结果的价值:Task 。因此,规则是永远不要将文档移动到另一个文件夹。
我在Alfresco论坛上也发现了类似的问题:
有人能给我个线索吗?如何正确地捕获工作流的最终状态/结果?
非常感谢!
发布于 2016-09-16 17:48:11
您应该在高级工作流上阅读和使用本教程。
该教程中包含的示例之一是如何对工作流包中的每个文档运行操作。代码片段如下所示:
<userTask id="usertask4" name="Approved Notification" activiti:assignee="${initiator.properties.userName}" activiti:formKey="scwf:activitiApprovedNotification">
<extensionElements>
<activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
var setWebFlagAction = actions.create("set-web-flag");
setWebFlagAction.parameters["active"] = true;
for (var i = 0; i < bpm_package.children.length; i++) {
logger.log("Approving node:" + bpm_package.children[i].nodeRef);
setWebFlagAction.execute(bpm_package.children[i]);
}
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>在本例中,当为用户创建“已批准的通知”任务时,代码将运行。JavaScript正在运行该操作。
在这种情况下,如果您只想设置一个属性,则不需要运行一个操作。您可以只使用JavaScript API来设置属性。会是这样的:
<userTask id="usertask4" name="Approved Notification" activiti:assignee="${initiator.properties.userName}" activiti:formKey="scwf:activitiApprovedNotification">
<extensionElements>
<activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
var setWebFlagAction = actions.create("set-web-flag");
setWebFlagAction.parameters["active"] = true;
for (var i = 0; i < bpm_package.children.length; i++) {
var doc = bpm_package.children[i];
doc.properties["cm:description"] = "Set via workflow";
doc.save();
}
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>这里我设置了描述,但它可以是任何属性,包括自定义属性。
此时,您可以配置一条规则,以便在该属性以某种方式设置时执行某些操作。
这些示例将代码放入用户任务中。Activiti还允许您拥有基本上只是脚本执行的任务,所以您不必仅仅为了运行一些脚本就将一个任务分配给一个人。这些被称为服务任务。下面是一个示例:
<serviceTask id="exampleServiceTask" name="Example Service Task" activiti:class="org.alfresco.repo.workflow.activiti.script.AlfrescoScriptDelegate">
<extensionElements>
<activiti:field name="script">
<activiti:string><![CDATA[
logger.log("Just an example");
]]></activiti:string>
</activiti:field>
</extensionElements>
</serviceTask>在文档、这个答案和工作流教程之间,您应该拥有所需的内容。
https://stackoverflow.com/questions/39511250
复制相似问题