有没有办法从流程实例中获取变量映射,或者我必须使用执行,使用执行不会总是帮助我获取流程实例的变量映射,因为一个流程实例可能有多个执行
问问题
7132 次
2 回答
4
我遇到过类似的问题。您需要执行才能获取变量映射。正如您所说,一个给定的流程实例可以有多个执行。因此,您需要找到变量所在的根执行。我编写了一些代码来查找根执行。我已经针对具有多个嵌套调用活动的流程对其进行了测试。我没有针对子流程尝试过它,但我认为你可以让它工作:
ExecutionEntity executionEntity = (ExecutionEntity) runtimeService.createExecutionQuery().executionId(executionId).singleResult();
if (executionEntity == null) {
return null;
}
String parentId = executionEntity.getParentId();
boolean parentNotEmpty = StringUtils.isNotEmpty(parentId);
String superExecutionId = executionEntity.getSuperExecutionId();
boolean superNotEmpty = StringUtils.isNotEmpty(superExecutionId);
if (parentNotEmpty) {
return getRootExecution(parentId);
} else if (superNotEmpty) {
return getRootExecution(superExecutionId);
} else {
return executionEntity;
}
此片段获取属于您的流程实例的任何执行 ID,您可以提供其中任何一个。它返回根执行。然后使用此代码,您可以获得变量:
Object variable = getRuntimeService().getVariable(rootExecutionId, variableName);
于 2013-07-04T14:07:54.193 回答
2
看一下org.activiti.engine.RuntimeService.getVariable*(*)
,它使您可以访问所有流程实例变量。当然,您需要一个执行 ID 来识别流程实例。如果这不是您想要的,请完善您的问题。
于 2013-06-21T12:11:17.637 回答