Правильный способ установки или обновления переменных процесса JBPM6 - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь установить переменную процесса, но получаю ошибку ниже

java.lang.IllegalStateException: Process instance 10[SampleBusinessProcess] is disconnected.
at org.jbpm.process.instance.impl.ProcessInstanceImpl.getProcess(ProcessInstanceImpl.java:100)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.setVariable(WorkflowProcessInstanceImpl.java:343)

Вот мой код -

ProcessInstance processInstance = runtimeEngine.getKieSession().getProcessInstance(processInstanceId);
((WorkflowProcessInstanceImpl) processInstance).setVariable("myvariable", "myvalue");

Пожалуйста, помогите мне с лучшим способом установить переменную процесса.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Я не могу комментировать предыдущий ответ, поэтому я публикую этот ответ.

Быстрый и грязный способ, который я нашел (вдохновленный предыдущим ответом):

public void setProcessInstanceVariables(long processInstanceId, Map<String, Object> variables) {
    kieSession.execute(new SetProcessInstanceVariablesCommand(processInstanceId, variables));
}

Большое спасибо, Крис Верлаенен!

0 голосов
/ 31 мая 2018

Я бы порекомендовал использовать jbpm-сервисы для взаимодействия с движком, здесь предлагается операция по установке переменной: https://github.com/kiegroup/jbpm/blob/7.7.0.Final/jbpm-services/jbpm-services-api/src/main/java/org/jbpm/services/api/ProcessService.java#L223

В качестве альтернативы, если вы убедитесь, что ваш код выполняется в том жетранзакции (например, запустив и зафиксировав транзакцию самостоятельно, используя код, который у вас есть), вы сможете установить переменную таким образом, поскольку экземпляр процесса будет отключаться только после фиксации транзакции.

...