Alfresco任务监听器变量

时间:2015-06-23 07:12:57

标签: workflow listener alfresco

我有两个任务监听器,第一个位于event="create",第二个位于event="complete"。 在第一个我正在计算任务创建时的文件,在第二个任务完成时,查看文件数是否相等会引发错误。但这不起作用,我有ReferenceError: "count" is not defined

<extensionElements>
        <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string><![CDATA[
               var count = 0;
               for (var i = 0; i < bpm_package.children.length; i++) 
                {
                  count++;
                }
        ]]></activiti:string>
          </activiti:field>
        </activiti:taskListener>

        <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
            <activiti:string><![CDATA[
               var count_new = 0;
               for (var i = 0; i < bpm_package.children.length; i++) 
                {
                  count_new++;
                }
                if (count ==count_new)
                 {
                    var message = "\n\nAdd files\n";
                    throw new Error(message + "\n");
                 }
    ]]></activiti:string>
          </activiti:field>
        </activiti:taskListener>
      </extensionElements>

2 个答案:

答案 0 :(得分:1)

我解决了如何定义变量的问题。您需要将execution.setVariable ('zvernennya_count', count);添加到第一个任务侦听器。

但它并没有解决我测试附件的问题,因为变量count被定义一次,并且任务具有多用户访问权限,并且当第一个用户任务完成时,下一个用户任务已经具有变量count_newcount不同。

答案 1 :(得分:0)

您收到 ReferenceError ,因为“count”变量对其他Listener不可见。

如果你需要保留变量的值,你必须在工作流模型中定义变量,使用该变量代替局部变量count。

RFC 6266

这应该给你一个很好的起点。