从流程实例获取变量映射

时间:2013-06-19 19:03:35

标签: java activiti bpmn

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

2 个答案:

答案 0 :(得分:4)

我遇到过类似的问题。您需要执行才能获得变量映射。正如您所说,给定流程实例可以有多个执行。因此,您需要找到变量所在的根执行。我写了一些代码来查找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);

答案 1 :(得分:2)

查看org.activiti.engine.RuntimeService.getVariable*(*),它可以让您访问所有流程实例变量。当然,您需要一个执行ID才能识别流程实例。如果这不是您想要的,请改进您的问题。