Activiti独家网关 - 在Java中使用

时间:2016-04-21 10:16:07

标签: java activiti

我在Activiti中有一个独家网关,如何在Java代码中为独占网关设置条件变量?

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

如何在网关流上提取任务变量?是否可以使用过程变量?

3 个答案:

答案 0 :(得分: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)

在流程部署时间:

  • 您可以通过扩展ans = dcast(ans, ID + AgeC + GenderC + fruit ~ buy_eat, value.var="freq") # ID AgeC GenderC fruit buy eat # 1: 1234 25-30 female apples onceinaweek onceinaweek # 2: 1234 25-30 female pears NA onceinamonth # 3: 1235 31+ male apples everyday NA # 4: 1235 31+ male pears NA everyday # 5: 1236 25-30 female apples NA onceinaweek # 6: 1236 25-30 female pears NA NA # 7: 1237 20-24 female apples NA NA # 8: 1237 20-24 female pears onceinaweek onceinaweek 在Java中添加表达式条件并注入org.activiti.engine.impl.bpmn.parser.factory.DefaultActivityBehaviorFactory

在流程执行时间:

  • 您可以将过程变量添加为您定义的表达式的变量。这可能是您在Java中的条件的结果:ProcessEngineConfigurationImpl

    ${result == true}

答案 2 :(得分:0)

如何在网关流上提取任务变量?有可能还是我必须使用过程变量?

你不能。您需要从任务变量中检索值并将其复制到过程变量中。之后,您可以使用它来决定流量。

工作流中的变量存在两个层次;流程执行级别和任务级别。如果您在任务中设置变量的值,则新值在流程级别不可用。如果要跨任务或在任务和条件流之间使用变量,则需要将变量复制到流程执行级别。流程级变量可用于任务和顺序流。

https://docs.alfresco.com/5.0/concepts/wf-process-def-variables.html