0

我正在尝试设置过程变量但低于错误

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");

请帮助我设置过程变量的最佳方法。

谢谢。

4

2 回答 2

0

我建议使用 jbpm-services 与引擎交互,这提供了设置变量的操作:https ://github.com/kiegroup/jbpm/blob/7.7.0.Final/jbpm-services/jbpm-服务-api/src/main/java/org/jbpm/services/api/ProcessService.java#L223

或者,如果您确保您的代码在同一个事务中执行(例如,通过您自己启动和提交事务,围绕您当前拥有的代码),您将能够以这种方式设置变量,因为流程实例将仅在事务提交后立即断开连接。

于 2018-05-31T14:47:25.547 回答
0

我无法评论上一个答案,所以我发布了这个答案。

我发现的快速而肮脏的方式(灵感来自先前的答案)是:

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

非常感谢克里斯·维拉宁!

于 2018-06-05T11:46:38.177 回答