更改jBPM中的流程实例数据(启动实例后)

时间:2016-08-03 01:26:32

标签: jbpm

有没有办法可以修改已经启动的jBPM中的流程实例的数据(在启动实例之后)。

我已经使用

开始了一个过程

ProcessInstance processInstance = ksession.startProcess(procId,params);

现在在一些事件之后我需要修改流程实例数据:

((WorkflowProcessInstance)processInstance)。setVariable(“transit_To”,“DONE”);

这给了我错误:进程实例875 [或.example.proc]已断开连接。

任何形式的信息都会非常有用。

感谢。

1 个答案:

答案 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);
}