高度なカスタマイズ > ビジネスロジックのカスタマイズ > ワークフロー管理のカスタマイズ > オブジェクトのワークフローイベントのカスタマイズ
  
オブジェクトのワークフローイベントのカスタマイズ
オブジェクトでのカスタマイズしたイベントの作成
以下の例は、オブジェクトにカスタマイズしたワークフローイベント (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. MY_EVENT を選択します。
d. 初期定義式とルーティング定義式に適切な定義式を作成します。
ワークフロープロセスエディタの詳細については、Windchill Business Administrator's Guide を参照してください。
カスタマイズしたイベントの発生
引き続き上の例を使用すると、カスタマイズしたイベントの発生には以下のコードが必要です。
java.util.Hashtable valueMap = new java.util.Hashtable();
wt.workflow.engine.WfEngineServerHelper.service.emitCustomObjectEvent ("MY_EVENT",
primaryBusinessObject, valueMap);
ここで、
MY_EVENT は、上の例で作成した、カスタマイズしたイベントです。あるいは、同期化ロボットのプロパティウィンドウ内の「イベント」ドロップダウンリストで選択したイベントが代わりに挿入されます。
PrimaryBusinessObject は、イベントを発生するオブジェクトです。つまり、同期化ロボットが MY_EVENT (カスタマイズしたイベント) のリスニングを行うオブジェクトです。
* 
カスタマイズしたイベントは、カスタマイズしたコードや定義式ロボットから発生できます。
発生したイベントを処理する場合、同期化定義式構文ではオブジェクトベースのイベントのイベントオブジェクトを取得できないので、イベントから valueMap Hashtable を取得する方法はありません。