多实例任务受理人的执行变量类型

时间:2016-01-14 13:26:35

标签: java-ee alfresco activiti

我正在尝试构建一个实现以下过程的工作流程:

当用户收到任务时,他有两个选择:

  1. 点击任务完成任务

  2. 使用mutliple实例任务将任务转移给多个受理人。

  3. 我将受理人(协会)保存在执行变量中,然后尝试在下一个用户任务中使用它。

    工作流程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
    

1 个答案:

答案 0 :(得分:1)

在工作流程定义中,您要为swwf_assignees分配:

execution.setVariable('swwf_assignees',task.getVariable('swwf_assignees').toString());

toString()将列表转换为字符串。