Java 从流程实例获取变量映射
有没有办法从流程实例获取变量映射,或者我必须使用执行,使用执行不会总是帮助我获取流程实例的变量映射,因为一个流程实例可能有多个执行请查看Java 从流程实例获取变量映射,java,activiti,bpmn,Java,Activiti,Bpmn,有没有办法从流程实例获取变量映射,或者我必须使用执行,使用执行不会总是帮助我获取流程实例的变量映射,因为一个流程实例可能有多个执行请查看org.activiti.engine.RuntimeService.getVariable*(*),它允许您访问所有流程实例变量。当然,您需要一个执行ID来标识流程实例。如果这不是您想要的,请改进您的问题。我也遇到过类似的问题。您需要执行以获取变量映射。正如您所说,对于给定的流程实例,可以有多个执行。因此,您需要找到变量所在的根执行。我已经编写了一些代码来查找
org.activiti.engine.RuntimeService.getVariable*(*)
,它允许您访问所有流程实例变量。当然,您需要一个执行ID来标识流程实例。如果这不是您想要的,请改进您的问题。我也遇到过类似的问题。您需要执行以获取变量映射。正如您所说,对于给定的流程实例,可以有多个执行。因此,您需要找到变量所在的根执行。我已经编写了一些代码来查找根执行。我已经针对一个具有多个嵌套调用活动的流程进行了测试。我没有针对子流程尝试过,但我认为您可以让它工作:
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);
读者:注意bpmn标记。这里,流程可能是指业务流程。我需要使用流程实例id而不是执行id来获取变量,因为使用执行id效率不高,特别是当流程实例的执行次数超过id@BOB很高兴听到这个消息,如果它对你有帮助的话,你可以在上面签字作为答复。怎么做?我对stack不太熟悉,没有时间阅读指南。再次感谢。