【发布时间】:2018-11-06 23:13:16
【问题描述】:
有一个审核和批准工作流程
开始表格是附加文件和选定的执行者(Package Items 和 People selection)。
然后创建一个任务分配给之前选择的执行者。
每个执行者都可以看到分配给它的任务和文件附件。
我需要检查添加文件。虽然执行者尚未添加文件,但它无法批准该任务。
我在创建任务时创建了计数器taskListener event="create"。
他计算发送给执行者的文件。
然后我在任务完成时创建了另一个计数器taskListener event="complete",它还计算文件。
然后我比较这两个计数器,如果它们相等
这意味着执行者没有附加文件,他看到了错误。
但是这种方法只适用于批准任务的第一个执行者。
其余的执行者已经可以在不添加文件的情况下批准任务。
我不知道是什么问题。
这是我实现它的代码:
<userTask id="userTask5" name="Revies" activiti:assignee="${zvernennya_reviewnachassignee.properties.userName}" activiti:formKey="zvernennya:reviewnach">
<documentation>Review task</documentation>
<extensionElements>
<activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string><![CDATA[
if (typeof bpm_workflowDueDate != 'undefined') task.dueDate = bpm_workflowDueDate;
if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;;
var count=0;
for (var i = 0; i < bpm_package.children.length; i++)
{
count++;
}
execution.setVariable ('count', 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[
if(task.getVariableLocal('zvernennya_reviewnachtransitions') == 'Approve') {
execution.setVariable('zvernennya_reviewnachapprovalcount', zvernennya_reviewnachapprovalcount + 1);
}
var count_new=0;
for (var i = 0; i < bpm_package.children.length; i++)
{
count_new++;
}
if (count==count_new) {
var message = "\n\nAttach files!!\n";
throw new Error(message + "\n");
}
]]></activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="zvernennya_executers" activiti:elementVariable="zvernennya_reviewnachassignee">
<completionCondition>${zvernennya_reviewnachapprovalcount >= zvernennya_reviewnachrequiredapprovalcount}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
【问题讨论】: