高度なカスタマイズ > ビジネスロジックのカスタマイズ > 変更管理のカスタマイズ > 変更ワークフローの終了 > ソリューション > 手順 - 同期終了を使用するようにワークフローを更新する
  
手順 - 同期終了を使用するようにワークフローを更新する
次の例は、同期終了によってレビュータスクが完了した後に「レビュー中」から「解決済み」状態に移行する基本的なワークフローを示しています。
1. ワークフローテンプレートの「Properties」リンクを選択します。「Variables」タブに移動し、デフォルト値が true に設定されている handlesClosure という新しいブール変数を追加します。
2. 「Review Task」と「Set State Resolved」の間に新しい Synchronize 定義式を追加します。
3. "オブジェクトイベント" と同期化するように新しい Synchronize 定義式を更新します。「親の変更管理オブジェクトの状態変更」イベントまたは「子の変更管理オブジェクトの状態変更」イベントのいずれかを選択します。それぞれのイベントの詳細については、ソリューションを参照してください。以下の 2 つの定義式のいずれかを「初期定義式」と「ルーティング定義式」に追加します。
「親の変更管理オブジェクトの状態変更」をリッスンする場合:
if(com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.
isRelatedParentsInStates (primaryBusinessObject,
new String[]{"RESOLVED"})) {
result = "Resolved";
}
「子の変更管理オブジェクトの状態変更」をリッスンする場合:
if(com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.
isRelatedChildrenInStates(primaryBusinessObject,
new String[]{"RESOLVED"})) {
result = "Resolved";
}
変更管理オブジェクト関係の役割 A は親オブジェクト、役割 B は子オブジェクトと見なされることに注意してください。
4. 「Synchronize」と「Set State Resolved」の間に新規定義式を追加します。その名前を "Set Resolution Date" に設定します。
5. 変更管理オブジェクトに対して解決日を設定するように "Set Resolution Date" を更新します。
com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.
setResolutionDate(primaryBusinessObject);
6. 変更プロセスを強制終了する必要がある場合は、親または子関連付けを終了する新規定義式を "Set State Resolved" の後に追加できます。次の例は、関連親変更管理オブジェクトを「解決済み」状態で強制終了する定義式の実装を示しています。
java.util.Map<java.lang.Class, wt.lifecycle.State> parentStateMap = new
java.util.HashMap<java.lang.Class, wt.lifecycle.State>(1);
parentStateMap.put(wt.change2.FlexibleChangeItem.class,
wt.lifecycle.State.toState("RESOLVED"));
com.ptc.windchill.pdmlink.change.server.impl.WorkflowProcessHelper.
closeChangeParents(primaryBusinessObject, parentStateMap);