API: Как получить переменную процесса по id процесса

Собственно сабж.
У меня есть табличка, содержащая в себе бизнес-данны и process instance id. Все выводится в форму. Хотим дообогатить данные переменными процесса. Не могу найти в API в Runtime Service метод для получения переменной процесса по его ID.

Помогите)

runtimeService.getVariable(processInstanceId, variableName)

?

ошибка:

m—#033[0;39m #033[2m[nio-8081-exec-3]#033[0;39m #033[36morg.camunda.bpm.engine.context #033[0;39m #033[2m:#033[0;39m ENGINE-16004
Exception while closing command context: executionId is null
Feb 3 22:39:32 msk-finance-camunda java[18589]: org.camunda.bpm.engine.exception.NullValueException: executionId is null

Вот так можно получить execution
Optional executionOptional = runtimeService.createExecutionQuery()
.processInstanceId(processInstanceId)
.list()
.stream()
.findFirst();

А потом передать в getVariable, пример
Date date = (Date) runtimeService.getVariable(
executionOptional.get().getId(),
“variableName”);

2 лайка

@Dmitry.Raz Дмитрий, извините, ввел Вас в заблуждение :slight_smile:

@sskvortsov прав - в экземпляре процесса могут быть разные потоки исполнения. в метод getVariable(String, String) нужно передавать executionId, а не processInstanseId.

Удачи!

@Mstislav @sskvortsov спасибо)
я сначала тоже подумал про Process Instance ID

1 лайк