高度なカスタマイズ > ビジネスロジックのカスタマイズ > ワークフロー管理のカスタマイズ > オブジェクトのワークフローイベントのカスタマイズ
オブジェクトのワークフローイベントのカスタマイズ
* 
以前のリリースの Windchill から移行する場合は、「カスタマイズされた UI 文字列の移行」の手順に従って、カスタムイベントの既存の UI テキストを移行します。
オブジェクトでのカスタマイズしたイベントの作成
「テキストの調整」ユーティリティを使用するか、Java リソースバンドルファイルを更新することで、カスタムイベントを作成できます。「テキストの調整」ユーティリティを使用することをお勧めします。
推奨される方法
カスタムイベント MY_EVENT を作成する例を次に示します。
1. 「テキストの調整」ユーティリティにアクセスします。詳細については、「テキストの調整」ユーティリティを参照してください。
2. カスタムイベント名への特殊文字の追加をサポートしている synchEventResource リソースバンドルを選択します。詳細については、初めてカスタマイズするテキストの選択を参照してください。
3. synchEventResource でカスタムイベントの文字列を作成します。詳細については、文字列の作成を参照してください。
文字列の以下のプロパティを指定します。
「キー」 - MY_EVENT
「値」 - MY_EVENT
「エイリアス」 - */wt.workflow.engine.WfCustomEventTypeResource/MY_EVENT
「エイリアス」プロパティは、文字列名で特殊文字を指定するために使用されます。
4. 同期化ロボットを使用してワークフローテンプレートを設計するには、ワークフローテンプレートエディタを使用します。
a. 「同期化」ロボットのプロパティウィンドウで、「同期化」タブの「オブジェクトイベント」をクリックします。
b. 「イベント」リストで、「MY_EVENT」を選択します。
c. 適切な初期定義式とルーティング定義式を指定します。
詳細については、「ワークフローテンプレートエディタ」「同期化ロボット」を参照してください。
以前の方法
以下の例は、オブジェクトにカスタマイズしたワークフローイベント (wt.workflow.engine.WfCustomEvent) を作成する方法を示します。この例でカスタマイズしたイベントは MY_EVENT です。
1. <Windchill>/src/wt/workflow/engine/WfCustomEventTypeResource.java に以下のエントリを追加します。
@RBEntry("MY_EVENT")
public static final String MY_EVENT = "MY_EVENT";
2. <Windchill>/src/wt/workflow/robots/synchEventResource.java に以下のエントリを追加します。
@RBEntry("MY_EVENT")
public static final String PRIVATE_CONSTANT_39 =
"*/wt.workflow.engine.WfCustomEventTypeResource/MY_EVENT";
* 
ユーザー定義のイベントを新規の変数として宣言します。たとえば、synchEventResource.java ファイルに存在するリソースの総数が 39 である場合、MY_EVENT を 40 番目の変数として宣言します。
public static final String PRIVATE_CONSTANT_<next_count>=“*/<Classpath>/<Custom_Event>”;
3. Windchill シェルで以下を実行することでこれらのリソースを再構築します。
ant -f bin/tools.xml class -Dclass.includes=wt/workflow/robots/synchEventResource.java
ant -f bin/tools.xml class -Dclass.includes=wt/workflow/engine/WfCustomEventTypeResource.java
4. クライアント JAR を再構築します (PTC 提供のファイルをカスタマイズするための最良事例の「クライアント JAR の再構築」を参照してください)。
ant -f codebase/MakeJar.xml custUpdate
5. クライアントマシンの Java プラグインキャッシュを削除します。
6. メソッドサーバーを再起動します。
7. 同期化ロボットを使用してワークフローテンプレートを設計するには、ワークフローテンプレートエディタを使用します。
a. 「同期化」ロボットのプロパティウィンドウで、「同期化」タブの「オブジェクトイベント」をクリックします。
b. 「イベント」リストで、「MY_EVENT」を選択します。
c. 適切な初期定義式とルーティング定義式を指定します。
詳細については、「ワークフローテンプレートエディタ」「同期化ロボット」を参照してください。
カスタマイズしたイベントの発生
引き続き上の例を使用すると、カスタマイズしたイベントの発生には以下のコードが必要です。
java.util.Hashtable valueMap = new java.util.Hashtable();
public static final WfEngineServiceSvr service = (WfEngineServiceSvr) ManagerServiceFactory.getDefault().getManager (WfEngineService.class);
service.emitCustomObjectEvent ("MY_EVENT",primaryBusinessObject, valueMap);
ここで、
MY_EVENT は、上の例で作成した、カスタマイズしたイベントです。あるいは、「同期化」ロボットのプロパティウィンドウ内の「イベント」リストで選択したイベントが代わりに挿入されます。
PrimaryBusinessObject は、イベントを発生するオブジェクトです。つまり、同期化ロボットが MY_EVENT (カスタマイズしたイベント) のリスニングを行うオブジェクトです。
* 
カスタマイズしたイベントは、カスタマイズしたコードや定義式ロボットから発生できます。
発生したイベントを処理する場合、同期化定義式構文ではオブジェクトベースのイベントのイベントオブジェクトを取得できないので、イベントから valueMap Hashtable を取得する方法はありません。
これは役に立ちましたか?