2016-08-03 5 views
0

이미 시작된 (인스턴스 시작 후) jBPM에서 프로세스 인스턴스의 데이터를 수정할 수있는 방법이 있습니까?jBPM의 프로세스 인스턴스 데이터 변경 (인스턴스 시작 후)

제가

ProcessInstance processInstance = ksession.startProcess (procId, PARAMS)를 사용하는 프로세스를 시작;

지금은 프로세스 인스턴스 데이터를 수정해야 할 몇 가지 이벤트 후 :

((WorkflowProcessInstance) processInstance) .setVariable ("transit_To", "DONE");

이렇게하면 오류가 발생합니다. 프로세스 인스턴스 875 [or.example.proc]의 연결이 끊어졌습니다.

어떤 종류의 정보라도 도움이 될 것입니다.

감사합니다.

답변

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