プロセスインスタンス間の同期化
このトピックでは、アクティビティ状態の変更をリッスンする同期化ロボットノードの例を示します。
参照ワークフロー
SynchronizationAccrossProcessInstances.xml
SynchronizeProcessInstance.xml
説明
この種の同期化は、独立プロセスの同期化によく似ています。ただ 1 つの相違点は、この場合、ロボットが WfAssignedActivity の代わりに、wt.workflow.engine.WfProcess の ACTIVITY_STATE_CHANGED イベントをリッスンするということです。下記の定義式で、ロボットは、State_Changed イベントを発生させたプロセスが、必要とするプロセスと同じであるかチェックします。同じ場合、そのプロセスの状態に基づいてルーティグを実行します。
指示
processName はロボットの親プロセスで定義される変数です。ロボットが必要とするプロセスの名前を示します。
* 
複数のプロセスが「processName」という名前を持つことがあります。
以下のコードをコピーします。
//get the process that emitted the event
wt.workflow.engine.WfProcess processInstance = ( wt.workflow.engine.WfProcess ) ((wt.events.KeyedEvent)event).getEventTarget();
//Check if the process that triggered the event is the same one we are interested in.
if ( processInstance.getName( ).equals(processName)){
//If so, check for the state of the process. Set result to "completed" if the process has been successfully completed
// and to "terminated" if the process has been terminated. In all other cases, check again.
if ( wt.workflow.engine.WfState.CLOSED_COMPLETED_EXECUTED.equals(processInstance.getState( ))){
result= "completed";
}
else if ( wt.workflow.engine.WfState.CLOSED_TERMINATED.equals(processInstance.getState( ))){
result= "terminated";
}
}
これは役に立ちましたか?