BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

BPM プラグイン プログラミング ガイド

 前 次 目次 索引 PDFで表示  

プラグイン通知の使い方

この章では、プラグイン通知を使用する方法について説明します。この章の内容は以下のとおりです。

 


概要

BPM は、通知のブロードキャストによりプラグインと通信します。通知とは、次の図に示すように、イベントが発生したことを WebLogic Integration プロセス エンジンがプラグインに送信するメッセージです。

図5-1 WebLogic Integration プロセス エンジンによりプラグインに送信される通知


 

プラグインを通知リスナとして登録することにより、com.bea.wlpi.server.plugin パッケージの一部として提供される最大 4 タイプの通知を受信できます。

注意: パフォーマンスへの影響を最小限に抑えるため、受信が不可欠な通知についてのみ、プラグインを登録してください。特に、実行時インスタンス通知とタスク通知を受信するために登録する場合は注意してください。

次の表では、以下について定義します。

次の節では、プラグインを通知リスナとして登録および登録解除する方法、および受信した通知に関する情報を取得する方法について説明します。

 


通知リスナとしてのプラグインの登録

通常、プラグインはロード時に自分を通知リスナとして登録する必要があります。たとえば、ライフサイクル管理メソッドに説明されているように、load() メソッドを実装する場合、必要であれば、このプラグインを通知リスナとして登録します。

プラグインを通知リスナとして登録するには、プラグインに受信させる通知のタイプに基づいて、次の表に定義されている com.bea.wlpi.server.plugin.PluginManager メソッドの 1 つ(または必要な複数のメソッド)を使用します。

注意: Plug-in Manager への接続方法については、Plug-in Manager への接続を参照してください。

表5-2 プラグイン通知登録メソッド

プラグインを登録するリスナ

使用するメソッド

InstanceNotification リスナ

public void addInstanceListener(
com.bea.wlpi.server.plugin.Plugin
plugin, int mask) throws java.rmi.RemoteException

TaskNotification リスナ

public void addTaskListener(
com.bea.wlpi.server.plugin.Plugin
plugin, int mask) throws java.rmi.RemoteException

TemplateDefinitionNotification リスナ

public void addTemplateDefinitionListener(
com.bea.wlpi.server.plugin.Plugin
plugin, int mask) throws java.rmi.RemoteException

TemplateNotification リスナ

public void addTemplateListener(
com.bea.wlpi.server.plugin.Plugin
plugin, int mask) throws java.rmi.RemoteException


 


 

次の表で、プラグイン通知登録メソッドのために値を指定する必要のあるパラメータについて説明します。

表5-3 プラグイン通知登録メソッド パラメータ

パラメータ

説明

plugin

プラグイン リモート インタフェースを実装する EJBObject。

mask

登録するイベントを指定する整数ビットマスク。有効な値のリストは、通知タイプと関連イベントの表に示した通知 com.bea.wlpi.common.plugin.PluginConstants 値を参照。mask 値は、特定のカテゴリのすべてのイベントをグローバルに登録/登録解除するために、それぞれ EVENT_NOTIFICATION_ALL または EVENT_NOTIFICATION_NONE に対して設定することもできる。

この値は、必要なイベント定数に対してビット演算子 OR を実行することにより作成される。


 

通知リスナ登録メソッドの詳細については、com.bea.wlpi.server.plugin.PluginManagerCfg Javadoc を参照してください。

プラグイン サンプルから抜粋した次のコード リストは、プラグインをすべての通知タイプおよびそのすべての関連イベントの通知リスナとして登録する方法を示しています。この抜粋は、SAMPLES_HOME/integration/samples/bpm_api/plugin/src/com/bea/wlpi/tour/po/plugin ディレクトリの SamplePluginBean.java ファイルから取り出したものです。重要なコード行は、太字で示します。

コード リスト 5-1 通知リスナとしてのプラグインの登録

      .
.
.
public void load(PluginObject pluginData) throws PluginException {
.
.
.
pm.addInstanceListener(plugin, PluginConstants.EVENT_NOTIFICATION_ALL);
pm.addTaskListener(plugin, PluginConstants.EVENT_NOTIFICATION_ALL);
pm.addTemplateDefinitionListener(plugin,
PluginConstants.EVENT_NOTIFICATION_ALL);
pm.addTemplateListener(plugin, PluginConstants.EVENT_NOTIFICATION_ALL);
.
.
.
}

プラグイン サンプルの詳細については、BPM プラグイン サンプルを参照してください。

 


受信した通知に関する情報の取得

通知を受信した後、そのソースなど、通知に関する情報を取得できます。

次の表に、受信した通知に関する情報を取得するために利用できるメソッドを示します。これらのメソッドには、すべての通知タイプを拡張する com.bea.wlpi.server.plugin.PluginNotification クラスを介してアクセスできます。

表5-4 一般的なプラグイン通知情報メソッド

メソッド

説明

public int getEventType()

イベント タイプを取得する。

このメソッドは、通知タイプと関連イベントの表に定義されているように、関連イベントに対応する com.bea.wlpi.common.plugin.PluginConstants インタフェース整数値を返す。

public java.lang.Object getSource()

変更されたワークフロー エンティティ オブジェクトを取得する。

このメソッドは、変更されたワークフロー エンティティを示す java.lang.Object オブジェクトを返し、InstanceInfoTaskInfoTemplateDefinitionInfo、または TemplateInfo のいずれかの com.bea.wlpi.common.plugin 値オブジェクトとすることができる。それぞれの値オブジェクトに関する情報を取得するために利用できるメソッドについては、プラグイン値オブジェクトのまとめを参照。


 

これらのメソッドの詳細については、com.bea.wlpi.server.plugin.PluginNotification Javadoc を参照してください。

さらに、次の表では、変更されたソース コンポーネントに関する追加情報を取得するために各通知タイプに対して利用できるメソッドを示します。

表5-5 通知タイプに基づくプラグイン通知情報メソッド

通知タイプ

メソッド

説明

InstanceNotification

public com.bea.wlpi.common.InstanceInfo getInstance()

変更されたワークフロー インスタンスに関する情報を取得する。

このメソッドは、com.bea.wlpi.common.InstanceInfo オブジェクトを返す。ワークフロー インスタンスに関する情報にアクセスするには、『BPM クライアント アプリケーション プログラミング ガイド』の「値オブジェクトのまとめ」の「InstanceInfo オブジェクト」に説明されている InstanceInfo オブジェクト メソッドを使用する。

TaskNotification

public com.bea.wlpi.common.TaskInfo getTask()

変更されたタスクに関する情報を取得する。

このメソッドは、com.bea.wlpi.common.TaskInfo オブジェクトを返す。タスクに関する情報にアクセスするには、『BPM クライアント アプリケーション プログラミング ガイド』の「値オブジェクトのまとめ」の「TaskInfo オブジェクト」に説明されている TaskInfo オブジェクト メソッドを使用する。

TemplateDefinitionNotification

public com.bea.wlpi.common.TemplateDefinitionInfo getTemplateDefinition()

変更されたテンプレート定義に関する情報を取得する。

このメソッドは、com.bea.wlpi.common.TemplateDefinitionInfo オブジェクトを返す。テンプレート定義に関する情報にアクセスするには、『BPM クライアント アプリケーション プログラミング ガイド』の「値オブジェクトのまとめ」の「TemplateDefinitionInfo オブジェクト」に説明されている TemplateDefinitionInfo オブジェクト メソッドを使用する。

TemplateNotification

public com.bea.wlpi.common.TemplateInfo getTemplate()

変更されたテンプレートに関する情報を取得する。

このメソッドは、com.bea.wlpi.common.TemplateInfo オブジェクトを返す。テンプレートに関する情報にアクセスするには、『BPM クライアント アプリケーション プログラミング ガイド』の「値オブジェクトのまとめ」の「TemplateInfo オブジェクト」に説明されている TemplateInfo オブジェクト メソッドを使用する。

 


通知リスナとしてのプラグインの登録解除

通常、プラグインはアンロード時に自分の通知リスナとしての登録を解除する必要があります。たとえば、ライフサイクル管理メソッドに説明されているように、unload() メソッドを実装する場合、必要であれば、このプラグインの通知リスナとしての登録を解除します。

プラグインの通知リスナとしての登録を解除するには、削除する通知リスナのタイプに基づいて、次の表に定義されている com.bea.wlpi.server.plugin.PluginManager メソッドの 1 つ(または必要な複数のメソッド)を使用します。

注意: Plug-in Manager への接続方法については、Plug-in Manager への接続を参照してください。

表5-6 プラグイン通知登録解除メソッド

プラグインを登録解除するリスナ

使用するメソッド

InstanceNotification リスナ

public void removeInstanceListener(
com.bea.wlpi.server.plugin.Plugin plugin) throws java.rmi.RemoteException

TaskNotification リスナ

public void removeTaskListener(
com.bea.wlpi.server.plugin.Plugin plugin) throws java.rmi.RemoteException

TemplateDefinitionNotification リスナ

public void removeTemplateDefinitionListener(
com.bea.wlpi.server.plugin.Plugin plugin) throws java.rmi.RemoteException

TemplateNotification リスナ

public void removeTemplateListener(
com.bea.wlpi.server.plugin.Plugin plugin) throws java.rmi.RemoteException


 

どの場合も、通知リスナとしての登録を解除するプラグインを識別する com.bea.wlpi.server.plugin.Plugin オブジェクトを指定する必要があります。

次のコード リストは、すべての通知タイプおよびそのすべての関連イベントについてプラグインの通知リスナとしての登録を解除する方法を示しています。重要なコード行は、太字で示します。

コード リスト 5-2 通知リスナとしてのプラグインの登録解除

public void unload() throws PluginException {
.
.
.
pm.removeInstanceListener(plugin);
pm.removeTaskListener(plugin);
pm.removeTemplateDefinitionListener(plugin);
pm.removeTemplateListener(plugin);
.
.
}

 

ページの先頭 前 次