オブジェクトのワークフローイベントのカスタマイズ
オブジェクトでのカスタマイズしたイベントの作成
「テキストの調整」ユーティリティを使用するか、Java リソースバンドルファイルを更新することで、カスタムイベントを作成できます。「テキストの調整」ユーティリティを使用することをお勧めします。
推奨される方法
カスタムイベント MY_EVENT を作成する例を次に示します。
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
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 を取得する方法はありません。