4

有没有办法从流程实例中获取变量映射,或者我必须使用执行,使用执行不会总是帮助我获取流程实例的变量映射,因为一个流程实例可能有多个执行

4

2 回答 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 回答