2016-04-21 2 views
3

У меня есть эксклюзивный шлюз в Activiti, как я могу установить переменную условия в Java-коде для эксклюзивного шлюза?Эксклюзивный шлюз Activiti - использование на Java

variableData.put("condition", conditionVar); 
taskService.complete(task.getId(), variableData); 

Как я могу извлечь переменную задачи при перемещении шлюза? Возможно ли, или я должен использовать переменную процесса?

+1

Вы можете лучше описать то, что вам нужно? – fersmi

ответ

6

При разработке рабочего процесса с системой условного эксклюзивного шлюза, то он будет генерировать XML, как показано ниже,

<exclusiveGateway id="exclusiveGw" name="Exclusive Gateway" /> 

<sequenceFlow id="flow2" sourceRef="exclusiveGw" targetRef="theTask1"> 
    <conditionExpression xsi:type="tFormalExpression">${input == 1}</conditionExpression> 
</sequenceFlow> 

так что вам нужно для обеспечения значения 'input' переменным как

variableData.put("input", 1);

Если ваша задача ServiceTask, то вы можете сделать, как показано ниже

delegateExecution.setVariable("input",1); 

Для получения дополнительной помощи http://www.activiti.org/userguide/#bpmnExclusiveGateway

+1

Хороший ответ! Помогли :) –

1

В процессе время развертывания:

  • вы можете добавить выражение условия в Java с помощью расширяет org.activiti.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory и вводят в ProcessEngineConfigurationImpl

во время выполнения процесса:

  • вы ca n добавить переменные процесса в качестве переменной вашего определенного выражения. Это может быть результатом вашего состояния в Java: ${result == true}

    variableData.put("result", resultOfJavaCondition); taskService.complete(task.getId(), variableData);

Смежные вопросы