我正在尝试构建一个实现以下过程的工作流程:
当用户收到任务时,他有两个选择:
点击任务完成任务
使用mutliple实例任务将任务转移给多个受理人。
我将受理人(协会)保存在执行变量中,然后尝试在下一个用户任务中使用它。
工作流程bpm文件:
<userTask id="doOrReassign" name="Do Or Reassign" activiti:formKey="swwf:DoOrReassign">
<extensionElements>
<activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
execution.setVariable('swwf_ActionsToDo', task.getVariable('swwf_ActionsToDo'));
execution.setVariable('swwf_assignees',task.getVariable('swwf_assignees').toString());
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
<userTask id="delegatedTask" name="DelegatedTask" activiti:assignee="${assignee}">
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${swwf_assignees}" activiti:elementVariable="assignee"></multiInstanceLoopCharacteristics>
</userTask>
工作流程模型:
<type name="swwf:DoOrReassign">
<parent>bpm:workflowTask</parent>
<properties>
<property name="swwf:ActionsToDo">
<type>d:text</type>
<default>Approved</default>
<constraints>
<constraint name="swwf:ActionToDoOptions" type="LIST">
<parameter name="allowedValues">
<list>
<value>TaskDone</value>
<value>ReAssign</value>
</list>
</parameter>
</constraint>
</constraints>
</property>
</properties>
<associations>
<association name="swwf:assignees">
<title>Assignees</title>
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
<overrides>
<property name="bpm:outcomePropertyName">
<default>{http://smartway-me.com/model/workflow/1.0}ActionsToDo</default>
</property>
</overrides>
</type>
当我点击重新分配按钮时,我收到以下错误
${swwf_assignees}' didn't resolve to a Collection
答案 0 :(得分:1)
在工作流程定义中,您要为swwf_assignees分配:
execution.setVariable('swwf_assignees',task.getVariable('swwf_assignees').toString());
toString()将列表转换为字符串。