【问题标题】:Assign a task to particular alfresco user based on value of variable/condition inside .bpmn2 file根据 .bpmn2 文件中的变量/条件的值将任务分配给特定的 alfresco 用户
【发布时间】:2018-10-22 12:25:30
【问题描述】:

向社区致敬!我正在使用带有嵌入式 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

我的问题如下:

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

var bpm:X*=5 

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

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

【问题讨论】:

    标签: alfresco activiti bpmn


    【解决方案1】:

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

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

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

    【讨论】:

    • 考虑以下场景,我使用命令“start bpm:varY=5”从 alfresco 工作流控制台开始我的工作流,并且在我的 bpmn 中我想在我的 ${bpm_assignee.properties.userName} 类似:“if bpm_varY > 5” ---> userA else ----> userB 而不是 ${bpm_assignee.properties。我当前使用的 userName} 并在启动时作为参数传递
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多