2016-04-21 76 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);