2016-08-03 1 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); 
} 
関連する問題