首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得“结果”值和管理规则,以便将文档移动到Alfresco中的另一个文件夹?

问如何获得“结果”值和管理规则,以便将文档移动到Alfresco中的另一个文件夹?
EN

Stack Overflow用户
提问于 2016-09-15 12:37:27
回答 1查看 619关注 0票数 0

我希望在一个文件夹中创建一个规则,该规则监视工作流的(最终)结果任务,并将文档移动到另一个文件夹。我使用了修改后的池式评审模板,该模板位于Repository > Dictionary >Script目录(start-组合式- review -workflow.js. use )中。

我创建的规则是:

+++++++++

When:

项目被更新

如果满足所有条件,则为:

结果包含“任务已完成”

-结果等于bpm:结果名称。从“显示更多..”菜单选择。

执行操作:

把物品移到..。

+++++++++

但我无法像预期的那样得到最终结果的价值:Task 。因此,规则是永远不要将文档移动到另一个文件夹。

我在Alfresco论坛上也发现了类似的问题:

https://forums.alfresco.com/forum/end-user-discussions/alfresco-share/how-manage-rule-move-approved-files-another-folder

https://forums.alfresco.com/forum/installation-upgrades-configuration-integration/configuration/triggering-rule-when-document

有人能给我个线索吗?如何正确地捕获工作流的最终状态/结果?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-16 17:48:11

您应该在高级工作流上阅读和使用本教程。

该教程中包含的示例之一是如何对工作流包中的每个文档运行操作。代码片段如下所示:

代码语言:javascript
复制
<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 &lt; 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来设置属性。会是这样的:

代码语言:javascript
复制
<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 &lt; 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还允许您拥有基本上只是脚本执行的任务,所以您不必仅仅为了运行一些脚本就将一个任务分配给一个人。这些被称为服务任务。下面是一个示例:

代码语言:javascript
复制
<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>

在文档、这个答案和工作流教程之间,您应该拥有所需的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39511250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档