2016-08-03 12 views
0

Gibt es eine Möglichkeit, die Daten einer Prozessinstanz in jBPM zu ändern, die bereits gestartet wurde (nach dem Starten der Instanz).Ändern der Prozessinstanzdaten in jBPM (nach dem Starten der Instanz)

Ich habe ein Verfahren unter Verwendung von

ProcessInstance ProcessInstance = ksession.startProcess (procid, params) gestartet;

und jetzt nach einem Ereignis Ich muss die Prozessinstanzdaten ändern:

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

Das gibt mir einen Fehler: Process Instanz 875 [or.example.proc] ist getrennt.

Jede Art von Informationen wäre wirklich hilfreich.

Danke.

Antwort

0

Ich habe eine Klasse erstellt UpdateVariableCommand Hexe implementiert 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; 
} 

Aktualisierung ich die Variable wie folgt aus:

/** 
* @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); 
}