我在Activiti中有一个独家网关,如何在Java代码中为独占网关设置条件变量?
variableData.put("condition", conditionVar);
taskService.complete(task.getId(), variableData);
如何在网关流上提取任务变量?是否可以使用过程变量?
答案 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