有没有办法可以修改已经启动的jBPM中的流程实例的数据(在启动实例之后)。
我已经使用
开始了一个过程ProcessInstance processInstance = ksession.startProcess(procId,params);
现在在一些事件之后我需要修改流程实例数据:
((WorkflowProcessInstance)processInstance)。setVariable(“transit_To”,“DONE”);
这给了我错误:进程实例875 [或.example.proc]已断开连接。
任何形式的信息都会非常有用。
感谢。
答案 0 :(得分:0)
我创建了一个UpdateVariableCommand
类,实现了GenericCommand
。
@Override
public Object execute(Context context) {
KieSession ksession = ((KnowledgeCommandContext) context).getKieSession();
WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.getProcessInstance(instanceId);
VariableScopeInstance variableScope = (VariableScopeInstance) processInstance
.getContextInstance(VariableScope.VARIABLE_SCOPE);
variableScope.setVariable(name, value);
return true;
}
我像这样更新变量:
/**
* @param processInstanceId
* @param name of variable
* @param value of variable
*/
public void setVariable(Long processInstanceId, String name, Object value) {
UpdateVariableCommand command = new UpdateVariableCommand(processInstanceId, name, value);
ksession.execute(command);
}