根据 .bpmn2 文件中 variable/condition 的值将任务分配给特定的露天用户

Assign a task to particular alfresco user based on value of variable/condition inside .bpmn2 file

向社区问好!我正在使用带有嵌入式 activiti 工作流引擎的 alfresco 社区版 6.0.0。我已经创建了一些用户,我想创建和部署一个 .bpmn2 文件,它将描述以下工作流场景:

"Concerning the value of variable 'X', assign this task to this user".

我的bpmn2文件的进程目前有这个结构

<process isExecutable="true" id="example" name="example Activiti process">
    <startEvent id="start"
        activiti:formKey="wf:submitAdhocTask" />
    <sequenceFlow id='flow1' 
        sourceRef='start'
        targetRef='task1' />

    <userTask id="task1" name="The first task"
        activiti:formKey="wf:task1">
        <documentation> 
             The user assigned to this task will be decided according to the value of a variable
        </documentation>
       <extensionElements>
           <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
              <activiti:field name="script">
                 <activiti:string>

                 </activiti:string>
              </activiti:field>
           </activiti:taskListener>
       </extensionElements>
        <humanPerformer>
            <resourceAssignmentExpression>
                <formalExpression>${bpm_assignee.properties.userName}</formalExpression>
            </resourceAssignmentExpression>
        </humanPerformer>
    </userTask>

    <sequenceFlow id='flow3' sourceRef='task2'
        targetRef='theEnd' />

    <endEvent id="theEnd" />

我想实现以下场景:

if(X < 5 ) { assign task1 to userA} else { assign task1 to userB}

我的问题如下:

1) 在哪里设置这个变量?我使用工作流控制台创建了一个:

var bpm:X*=5 

2) 如何使用上述变量来实现我的场景?

如有任何帮助,我们将不胜感激!谢谢 :)

您是否尝试过创建该表达式: ${bean.function(X)}

其中 bean.function(X) returns 应根据您的业务逻辑分配的用户,在本例中为 if(X < 5) 。

关于设置变量,您可以在启动流程时或在需要该逻辑的任务之前的任何用户或服务任务中设置变量。你真的不需要:activiti:taskListener

我设法通过将以下内容添加到我的 activiti taskListener

来解决这个问题
 <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
              <activiti:field name="script">
                 <activiti:string>
                  if (bpm_Y == 5 ) task.assignee = 'userA';
                  if (bpm_Y != 5)  task.assignee = 'userB';
                 </activiti:string>
              </activiti:field>
           </activiti:taskListener>

并在启动过程中传递变量,如 'start bpm:Y=10 '