根据.bpmn2文件中的变量/条件的值,将任务分配给特定的露天用户

时间:2018-10-22 12:25:31

标签: alfresco activiti bpmn

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

“关于变量'X'的值,将此任务分配给该用户”。

我的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){将task1分配给userA}否则{将task1分配给userB}

我的问题如下:

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

var bpm:X*=5 

2)如何使用以上变量来实现我的方案?

任何帮助将不胜感激!谢谢:)

2 个答案:

答案 0 :(得分:0)

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

其中bean.function(X)返回应根据您的业务逻辑分配的用户,在这种情况下为if(X <5)。

关于设置变量,可以在启动进程时或在任何需要用户逻辑的用户或服务任务之前设置变量。您实际上并不需要:activiti:taskListener

答案 1 :(得分:0)

我设法通过将以下内容添加到我的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'