基本的な管理機能 > コラボレーションのサポート > ワークフロー管理 > ワークフローツール > ワークフローテンプレート管理 > ワークフローのコーディング例 > 同期化ロボットの例 > カスタムワークフローイベントの同期化
  
カスタムワークフローイベントの同期化
このトピックでは、別のプロセスで特定のユーザー定義イベントが発生するまで、プロセスを停止する同期化ロボットノードの例を示します。
参照ワークフロー
SynchronizationOfUserDefinedEvents.xml
UserEventsWorkflow.xml
説明
別のプロセスで特定のユーザー定義イベントが発生するまで、プロセスの進行を停止するようにロボットを定義できます。以下の定義式では、ロボットはアクティビティの ACTIVITY_STATE_CHANGED イベントをリッスンし、ユーザー定義の 3 つのイベント (熱伝導解析、疲労解析、応力解析) のいずれかが起動されているかどうかを調べます。ロボットはこれらの各イベントに対して、発生させる必要のある独自の対応イベントを持ちます。このイベントはベクトル tempResult に追加されます。最終的に、結果をベクトル tempResult に設定します。ここでロボットは、結果ベクトルに含まれるすべてのイベントを発生します。
指示
以下のコードをコピーします。
Vector tempResult = new Vector ();
//Get activity that caused the event
WfAssignedActivity activity = (WfAssignedActivity) (( wt.events.KeyedEvent) event).getEventTarget();
//Check if the activity and process are the one's we're looking for
if (activity.getName().equals(activityName)){
//Check if the Parent process of the activity is the one we are interested in.
if (activity.getParentProcess().getName().equals(processName)){
//Check if the list of events for the activity contains the event "thermal analysis".
//If so, add to the Vector tempResult, the appropriate event to fire for the robot.
if (activity.getAllEvents().contains("thermal analysis")){
tempResult.addElement("thermal analysis");
}
//Check if the list of events for the activity contains the event "fatigue analysis".
//If so, add to the Vector tempResult, appropriate event for the robot.
if (activity.getAllEvents().contains("fatigue analysis")){
tempResult.addElement("fatigue analysis");
}
//Check if the list of events for the activity contains the event "stress analysis".
//If so, add to the Vector tempResult, appropriate event for the robot.
if (activity.getAllEvents().contains("stress analysis")){
tempResult.addElement("stress analysis");
}
}
}
//Set result to the Vector tempResult.
//Note that in the previous steps, all the events that the robot must fire were added to tempResult.
result = tempResult;