开发者问题收集

Alfresco 任务监听器变量

2015-06-23
1275

我有两个任务监听器,第一个监听 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个回答

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

但是这并不能解决我测试附件的问题,因为变量 count 只定义一次,而任务是多用户访问的,当第一个用户的任务完成后,下一个用户的任务已经有了不同于 count 的变量 count_new

Tackle Berry
2015-06-23

您收到 ReferenceError ,因为该“count”变量对其他侦听器不可见。

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

http://docs.alfresco.com/4.0/concepts/wf-task-model.html

这应该为您提供良好的起点。

mitpatoliya
2015-06-23