我遇到过类似的问题.您需要执行才能获得变量映射.正如您所说,给定流程实例可以有多个执行.因此,您需要找到变量所在的根执行.我写了一些代码来查找root执行.我已经针对具有多个嵌套调用活动的进程测试了它.我没有尝试过它来反对子流程,但我认为你可以让它工作:
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);