我有两个任务监听器,第一个位于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>
答案 0 :(得分:1)
我解决了如何定义变量的问题。您需要将execution.setVariable ('zvernennya_count', count);
添加到第一个任务侦听器。
但它并没有解决我测试附件的问题,因为变量count
被定义一次,并且任务具有多用户访问权限,并且当第一个用户任务完成时,下一个用户任务已经具有变量count_new
与count
不同。
答案 1 :(得分:0)
您收到 ReferenceError ,因为“count”变量对其他Listener不可见。
如果你需要保留变量的值,你必须在工作流模型中定义变量,使用该变量代替局部变量count。
这应该给你一个很好的起点。