如何获取 "Outcome" 值并管理规则以将文档移动到 Alfresco 中的另一个文件夹?
How to get "Outcome" value and manage rule to move document to another folder in Alfresco?
我想在一个文件夹中创建一个规则来监控工作流的(最终)结果任务并将文档移动到另一个文件夹。我使用修改后的 Pooled review 基本模板,它位于 Repository > Data Dictionary > Scripts 目录 (start-pooled-review-workflow.js).
我创建的规则是:
+++++++++
时间:
项目已更新
如果满足所有条件:
结果包含 'Task Done'
--结果等于bpm:outcome名字。从 "Show more.." 菜单选择。
执行操作:
将项目移至...
+++++++++
但我无法按预期获得最终结果的值:任务完成。
因此,规则永远不会将文档移动到另一个文件夹。
我在Alfresco论坛上也发现了类似的问题:
任何人都可以给我一些线索吗?如何以正确的方式捕获工作流的最终 status/outcome?
非常感谢!
您应该阅读并完成 this tutorial 高级工作流程。
该教程中包含的示例之一是如何 运行 对工作流包中的每个文档执行操作。代码片段如下所示:
<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>
在此示例中,当为用户创建 "Approved Notification" 任务时,代码将 运行。 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>
在文档、此答案和工作流教程之间,您应该拥有所需的一切。
我想在一个文件夹中创建一个规则来监控工作流的(最终)结果任务并将文档移动到另一个文件夹。我使用修改后的 Pooled review 基本模板,它位于 Repository > Data Dictionary > Scripts 目录 (start-pooled-review-workflow.js).
我创建的规则是:
+++++++++
时间:
项目已更新
如果满足所有条件:
结果包含 'Task Done'
--结果等于bpm:outcome名字。从 "Show more.." 菜单选择。
执行操作:
将项目移至...
+++++++++
但我无法按预期获得最终结果的值:任务完成。 因此,规则永远不会将文档移动到另一个文件夹。
我在Alfresco论坛上也发现了类似的问题:
任何人都可以给我一些线索吗?如何以正确的方式捕获工作流的最终 status/outcome?
非常感谢!
您应该阅读并完成 this tutorial 高级工作流程。
该教程中包含的示例之一是如何 运行 对工作流包中的每个文档执行操作。代码片段如下所示:
<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>
在此示例中,当为用户创建 "Approved Notification" 任务时,代码将 运行。 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>
在文档、此答案和工作流教程之间,您应该拥有所需的一切。