Как получить переменные после завершения выполнения рабочего процесса в camunda?

Я пытаюсь установить переменные во время выполнения рабочего процесса после его завершения.

Создание рабочего процесса в классе WorkflowStart, а затем получение значений

ProcessInstance pi = runtimeService.startProcessInstanceByKey("workflowName");
System.out.println("runtimeService.getVariables(getId()) "+runtimeService.getVariables(pi.getId()));   

вышеуказанные команды запускают рабочий процесс и выполняют все действия. Итак, когда я пишу

 public class FlowDelegate  implements JavaDelegate {
    public void execute(DelegateExecution execution) throws Exception {
        execution.setVariable("abc123", "123");
        System.out.println("Execution variables - "+execution.getVariables());      
 }
}

вышеприведенная линия печатает

{
  abc123 => Value '123' of type 'PrimitiveValueType[string]'
}

Итак, после того, как processInstance выполняет рабочий процесс и пытается получить доступ к переменным, я получаю эту трассировку стека

и выполняет

 System.out.println("runtimeService.getVariables(getId()) "+runtimeService.getVariables(pi.getId()));


ENGINE-16004 Exception while closing command context: execution e575eb8b-7b84-11e8-a237-54e1ad4a38ce doesn't exist: execution is null
 org.camunda.bpm.engine.exception.NullValueException: execution e575eb8b-7b84-11e8-a237-54e1ad4a38ce doesn't exist: execution is null

person surbhi bakshi    schedule 29.06.2018    source источник


Ответы (1)


После завершения процесса он больше не доступен через API среды выполнения. Ты можешь использовать. HistoryService # createHistoricVariableInstanceQuery для доступа к значениям.

Обновление: в то время как camunda поддерживает возвращаемые значения для запуска процесса, вы можете использовать RuntimeService.html # createProcessInstanceById, а затем executeWithVariablesInReturn (), чтобы немедленно получить переменные запущенный экземпляр, без необходимости в дополнительном (дорогостоящем) запросе по историческим переменным.

person Jan Galinski    schedule 30.06.2018