我正在尝试设置流程变量但是低于错误
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");
请帮我设置过程变量的最佳方法。
感谢。
答案 0 :(得分:0)
我建议使用jbpm-services与引擎进行交互,这提供了设置变量的操作: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
或者,如果您确保您的代码在同一事务中执行(例如,您自己启动并提交事务,围绕您当前拥有的代码),您将能够以这种方式设置变量,如只有在事务提交时,流程实例才会断开连接。
答案 1 :(得分:0)
我无法对之前的答案发表评论,所以我发布了这个答案。
我发现的快速而肮脏的方式(灵感来自之前的回答)是:
public void setProcessInstanceVariables(long processInstanceId, Map<String, Object> variables) {
kieSession.execute(new SetProcessInstanceVariablesCommand(processInstanceId, variables));
}
非常感谢Kris Verlaenen!