2016-04-21 77 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

在過程部署時間:

  • 您可以通過擴展org.activiti.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory在Java中添加表達條件,並注入到ProcessEngineConfigurationImpl

在流程執行時間:

  • 你可以n將過程變量添加爲您定義的表達式的變量。這可能是你的情況的結果是在Java中:${result == true}

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