Присвойте задачу конкретному пользователю под открытым небом на основании значения переменной / условия в файле .bpmn2. - PullRequest
0 голосов
/ 22 октября 2018

Приветствую сообщество!Я использую Alfresco Community Edition 6.0.0 со встроенным механизмом документооборота activiti.Я уже создал некоторых пользователей, и я хотел бы создать и развернуть файл .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" />

Я хочу добиться следующего сценария:

, если(X <5) {назначить задачу1 пользователю A} иначе {назначить задачу1 пользователюB} </p>

У меня следующие вопросы:

1) Где установить эту переменную?Я создал один с помощью консоли рабочего процесса:

var bpm:X*=5 

2) Как использовать вышеуказанную переменную для реализации моего сценария?

Любая помощь будет принята с благодарностью!спасибо :)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Мне удалось решить эту проблему, добавив следующее в мой 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'

0 голосов
/ 23 октября 2018

вы пытались создать это выражение: $ {bean.function (X)}

, где bean.function (X) возвращает пользователя, который должен быть назначен на основе вашей бизнес-логики, в этом случае if (Х <5).</p>

Что касается установки переменной, вы устанавливаете переменную при запуске процесса или в любой задаче пользователя или службы перед той, в которой вам нужна эта логика.Вам действительно не нужно: activiti: taskListener

...