프로세스 인스턴스에서 변수 맵을 얻는 방법이 있습니까, 아니면 실행을 사용하면 실행 프로세스를 사용하여 프로세스 인스턴스의 변수 맵을 얻는 데 항상 도움이되지 않습니다. 인스턴스가 두 번 이상 실행될 수 있습니다.프로세스 인스턴스에서 변수 맵 가져 오기
답변
나는 비슷한 문제에 직면 해있다. 변수 맵을 얻으려면 실행이 필요합니다. 말했듯이 주어진 프로세스 인스턴스에 대해 둘 이상의 실행이있을 수 있습니다. 따라서 변수가있는 곳에서 루트 실행을 찾아야합니다. 루트 실행을 찾기 위해 몇 가지 코드를 작성했습니다. 둘 이상의 중첩 호출 활동이있는 프로세스에 대해 테스트했습니다. I 하위 프로세스에 대해 그것을 시도하지 않은하지만 난 당신이 일을 얻을 수 있다고 생각 :
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);
감사합니다. 충분할 것입니다. –
@BOB 그것을 듣고 기꺼이, 당신이 도움이된다면 대답으로 서명 할 수 있습니다. – GokcenG
어떻게? 나는 스택에 익숙하지 않고 가이드를 읽을 시간이 없다. 다시 한번 감사드립니다. –
org.activiti.engine.RuntimeService.getVariable*(*)
을 보시면 모든 프로세스 인스턴스 변수에 액세스 할 수 있습니다. 프로세스 인스턴스를 식별하려면 실행 ID가 필요합니다. 이것이 원하는 것이 아니라면 질문을 수정하십시오.
실행 ID를 사용하면 프로세스 인스턴스가 실행 ID보다 많을 때 효율적이지 않으므로 실행 ID가 아닌 프로세스 인스턴스 ID를 사용하여 변수를 가져와야합니다. –
독자 : bpmn 태그를 기록하십시오. 여기서 * process *는 비즈니스 프로세스를 나타낼 가능성이 큽니다. –
그래서 ... –