兄弟サブプロセスによる同期化
このトピックでは、親のサブプロセスのアクティビティ状態の変更をリッスンする同期化ロボットノードの例を示します。
参照ワークフロー
SynchronizingOnSiblingSubProcess.xml
SiblingSubProcess.xml
説明
下記の定義式は、割当アクティビティにより発生する ACTIVITY_STATE_CANGED イベントをリッスンするロボットに対して使用されます。この定義式は、イベントを発生させたアクティビティノードが、同期化ロボットノードが属する親ワークフローテンプレートのサブプロセスの 1 つに属するかどうかを確認します。属している場合は、アクティビティノードの状態に基づいて、対応するルーティングイベントを起動します。
指示
このケースでは、ロボットは ACTIVITY_STATE_CHANGED イベントをリッスンします。注意すべき Windchill クラスは wt.workflow.work.WfAssignedActivity です。
この例では、アクティビティが第 1 レベルのプロセスに属すると仮定します。つまり、ネステッドサブプロセスには存在しません。このようなアクティビティを追跡することは可能ですが、そのためには、ネスティッドサブプロセスの構造をロボットが認識している必要があります。
以下のコードをコピーします。
//Get the Activity that generated the event
wt.workflow.engine.WfActivity activity = (( wt.workflow.engine.WfActivity ) (((wt.events.KeyedEvent)event).getEventTarget()));
//Get the sub process that the Activity belongs to
wt.workflow.engine.WfProcess subProcess = activity.getParentProcess();
//Get the Parent of that sub process
wt.workflow.engine.WfProcess activityParentProcess = (( wt.workflow.engine.WfActivity ) subProcess.getRequester( )). getParentProcess( );
//Get the parent process of the Synch robot that has this expression
wt.workflow.engine.WfProcess myParentProcess = ( wt.workflow.engine.WfProcess ) self.getObject( );
//If the object IDs of the parent of the activity and the parent of the Synch Robot are the same,check for the state of the activity.
if ( wt.fc.PersistenceHelper.isEquivalent(activityParentProcess , myParentProcess )){
//If the Activity has been executed, set result to "completed" and if it has been terminated, setresult to "terminated". Else wait //for a state change.
if ( wt.workflow.engine.WfState.CLOSED_COMPLETED_EXECUTED.equals(activity.getState( ))){
result= "completed";
}
else if ( wt.workflow.engine.WfState.CLOSED_TERMINATED.equals(activity.getState( ))){
result= "terminated";
}
}
これは役に立ちましたか?