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

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

 前 次 目次 索引 PDFで表示  

プラグイン開発の基礎

この章では、プラグイン開発に必要な基本的タスクについて説明します。この章の内容は以下のとおりです。

また、『BPM クライアント アプリケーション プログラミング ガイド』の次の章も参考になります。

 


パッケージおよびインタフェースのインポート

BPM パッケージおよびインタフェースをインポートし、必要であれば汎用 Java パッケージ もインポートします。

プラグイン管理のために使用される以下のものも含めて、インポートするパッケージやインタフェースの説明については、『BPM クライアント アプリケーション プログラミング ガイド』の「パッケージおよびインタフェースのインポート」を参照してください。

 


Plug-in Manager への接続

BPM Plug-in Manager に接続するには、PluginManager セッション EJBと PluginManagerCfg セッション EJBのどちらか一方、または両方を使用します。

他の EJB と同じく、PluginManager EJB または PluginManagerCfg EJB にアクセスするには、ホーム インタフェースおよびリモート インタフェースを使用する必要があります。そのための手順は次のとおりです。

  1. JNDI でセッション EJB のホーム インタフェースをルックアップします。

  2. そのホーム インタフェースを使用して、リモート セッション オブジェクト(EJBObject)を作成します。

API セッション EJB(この場合は、PluginManager EJB と PluginManagerCfg EJB)へのアクセス方法については、『BPM クライアント アプリケーション プログラミング ガイド』の「プロセス エンジンへの接続」を参照してください。

プラグイン サンプルから抜粋した後述のコード リストは、次の 2 ステップの手順により Plug-in Manager に接続する方法を示しています。

  1. 初期コンテキストを作成し、JNDI コンテキスト lookup() メソッドを使用して、セッション EJB ホーム インタフェースにアクセスします。

  2. そのホーム インタフェースを使用して、リモート セッション オブジェクトを作成します。

この抜粋は、SAMPLES_HOME/integration/samples/bpm_api/plugin/src/com/bea/wlpi/tour/po/plugin ディレクトリの SamplePluginBean.java ファイルから取り出したものです。重要なコード行は、太字で示します。

注意: 初期コンテキストの詳細については、javax.naming.InitialContext() Javadoc を参照してください。

コード リスト 2-1 Plug-in Manager への接続

    private final static String PLUGIN_MANAGER_CFG_HOME =
"java:comp/env/ejb/PluginManagerCfg";
.
.
.
private PluginManagerCfg getPluginManagerCfg() throws PluginException {

PluginManagerCfg pm = null;
InitialContext ic = null;

try {
ic = new InitialContext();

PluginManagerCfgHome pmHome =
(PluginManagerCfgHome)ic.lookup(PLUGIN_MANAGER_CFG_HOME);

pm = pmHome.create();
} catch (Exception e) {
e.printStackTrace();

throw new PluginException(SamplePluginConstants.PLUGIN_NAME,
"Unable to get PluginManagerCfg");
} finally {
try {
ic.close();
} catch (Exception e) {
}
}

return pm;
}

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

 


プラグイン フレームワーク バージョンの取得

プラグイン フレームワーク バージョンを取得するには、次のいずれかのメソッドを使用します。

public com.bea.wlpi.common.VersionInfo com.bea.wlpi.server.plugin.PluginManager.getFrameworkVersion(
) throws java.rmi.RemoteException
public com.bea.wlpi.common.VersionInfo com.bea.wlpi.common.plugin.PluginInfo.getPluginFrameworkVersion(
) throws java.rmi.RemoteException

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

たとえば、次のコードは、PluginManager オブジェクト メソッドを使用して Plug-in Manager バージョンを取得し、その情報を version オブジェクトに保存します。この例では、pmPluginManager EJB への EJBObject 参照を表します。

VersionInfo version = pm.getFrameworkVersion();

getFrameworkVersion() メソッドの詳細については、com.bea.wlpi.server.plugin.PluginManager Javadoc を参照してください。getPluginFrameworkVersion() メソッドの詳細については、com.bea.wlpi.common.plugin.PluginInfo Javadoc を参照してください。

 


プラグイン値オブジェクトの使い方

com.bea.wlpi.common.plugin パッケージは、定義時と実行時の両方でプラグイン オブジェクト データを取得するための Info クラス、すなわち 値オブジェクトを提供します。プロセス エンジンと BPM クライアント アプリケーションは、プラグイン値オブジェクトを使用して、指定されたロケールに関するプラグイン オブジェクト データを要求し、プラグインで表示文字列などのリソースを適切にローカライズできるようにします。

値オブジェクトは、設計クライアントでのリモート クラスのロードに重要な役割を果たします。特に、BPM 設計クライアントは値オブジェクトを使用して、次のことを行います。

  1. プラグイン コンポーネントの名前および ID に基づいて、プラグインに含まれる Java クラスの名前を検索します。

  2. 戻り値に基づいて、設計クライアントでリモート クラス ロードを開始し、定義されたクラスのインスタンスを取得します。

リモート クラス ロードの詳細については、プラグイン実装へのアクセスを参照してください。

次の表に、プラグイン オブジェクト データの作成およびアクセスに使用できる値オブジェクトを示します。

表2-1 プラグイン値オブジェクト

使用する値オブジェクト

アクセスするプラグイン

com.bea.wlpi.common.plugin.ActionCategoryInfo

アクションまたはアクション カテゴリ情報

com.bea.wlpi.common.plugin.ActionInfo

アクション情報

com.bea.wlpi.common.plugin.CategoryInfo

アクション カテゴリ情報

com.bea.wlpi.common.plugin.ConfigurationData

コンフィグレーション データ

com.bea.wlpi.common.plugin.ConfigurationInfo

コンフィグレーション情報

com.bea.wlpi.common.plugin.DoneInfo

完了ノード情報

com.bea.wlpi.common.plugin.EventHandlerInfo

イベント ハンドラ情報

com.bea.wlpi.common.plugin.EventInfo

イベント ノード情報

com.bea.wlpi.common.plugin.FieldInfo

メッセージ タイプ情報

com.bea.wlpi.common.plugin.FunctionInfo

エバリュエータ関数情報

com.bea.wlpi.common.plugin.HelpSetInfo

オンライン ヘルプ情報

com.bea.wlpi.common.plugin.InfoObject

すべてのプラグイン値オブジェクトのための抽象ベース クラス

com.bea.wlpi.common.plugin.PluginCapabilitiesInfo

機能情報

com.bea.wlpi.common.plugin.PluginDependency

依存関係情報

com.bea.wlpi.common.plugin.PluginInfo

基本プラグイン情報

com.bea.wlpi.common.plugin.StartInfo

開始ノード情報

com.bea.wlpi.common.plugin.TemplateDefinitionPropertiesInfo

テンプレート定義プロパティ情報

com.bea.wlpi.common.plugin.TemplateNodeInfo

テンプレート ノード(完了および開始)情報

com.bea.wlpi.common.plugin.TemplatePropertiesInfo

テンプレート プロパティ情報

com.bea.wlpi.common.plugin.VariableTypeInfo

変数タイプ情報


 

次の節では、値オブジェクトの作成および使用方法について説明します。

値オブジェクト コンストラクタ、および関連付けられた get メソッドと set メソッドの詳細については、プラグイン値オブジェクトのまとめを参照してください。値オブジェクトにより共有される一般的特性のリストと、値オブジェクトをソートする方法については、『BPM クライアント アプリケーション プログラミング ガイド』の「値オブジェクトの使用法」を参照してください。

プラグイン値オブジェクトの定義

プラグイン値オブジェクトを定義するには、関連付けられているコンストラクタを使用します。プラグイン値オブジェクトの表に記載された各プラグイン値オブジェクトには、オブジェクト データを作成するためのコンストラクタが 1 つまたは複数用意されています。値オブジェクトを作成するためのコンストラクタの詳細については、プラグイン値オブジェクトのまとめを参照してください。

com.bea.wlpi.common.plugin.PluginCapabilitiesInfo オブジェクトを定義する際には、それぞれのプラグイン コンポーネントについてプラグイン値オブジェクトを渡す必要があります。詳細については、リモート インタフェース プラグイン情報メソッドの表の getPluginCapabilitiesInfo() メソッドの説明を参照してください。

値オブジェクトを作成する場合、次を指定する必要があります。

たとえば、次のコードは、StartInfo オブジェクトを作成し、結果のオブジェクトを si に割り当てます。

si = new StartInfo(SamplePluginConstants.PLUGIN_NAME, 5,
bundle.getString("startOrderName"),
bundle.getString("startOrderDesc"), ICON_BYTE_ARRAY,
SamplePluginConstants.START_CLASSES, orderFieldInfo);

START_CLASSES 配列は、プラグイン開始ノードのためのプラグイン データ、プラグイン パネル、実行時コンポーネント クラス名を定義します。START_CLASSES 配列は、SamplePluginConstants.java クラス ファイル内で次のように定義されます。

final static String[] START_CLASSES = { 
START_DATA,
START_PANEL,
START_NODE };

この例では、配列変数値は、SamplePluginConstants.javaファイルで次のように定義されます。

final static String START_NODE = 
"com.bea.wlpi.tour.po.plugin.StartNode";
final static String START_DATA =
"com.bea.wlpi.tour.po.plugin.StartNodeData";
final static String START_PANEL =
"com.bea.wlpi.tour.po.plugin.StartNodePanel";

ICON_BYTE_ARRAY 変数は、グラフィカル イメージ(アイコン)のバイト配列表現を指定するもので、Studio インタフェース ビューが有効な場合に、プラグインを表すために Studio により使用されます。

値オブジェクト コンストラクタ、および関連付けられた get メソッドと set メソッドの詳細については、プラグイン値オブジェクトのまとめを参照してください。

オブジェクト データの取得と設定

プラグイン値オブジェクトの表に記載した各プラグイン値オブジェクトは、オブジェクト データの取得および設定のためのさまざまなメソッドを提供します。これらのメソッドの詳細については、プラグイン値オブジェクトのまとめを参照してください。

たとえば、次のコードは、プラグイン開始ノードのための PluginTriggerPanel 実装クラスを取得し、それを startpanel 文字列に保存します。

java.lang.String startpanel = si.getClassName(KEY_PANEL);

この例では、si は、プラグイン開始ノードのための com.bea.wlpi.common.plugin.StartInfo 値オブジェクトに対する参照を表します。

プラグイン値オブジェクト メソッドの詳細については、プラグイン値オブジェクトのまとめを参照してください。

 


Plug-in Manager からの切断

BPM Plug-in Manager から切断するには、次の手順を実行します。

  1. セッション EJB 参照を削除し、そのシステム スペースを他の EJB のために利用できるようにします。

    たとえば、プラグイン サンプルから抜粋した次のコードは、PluginManagerCfg EJB 参照を削除する方法を示しています。この例では、pmPluginMangerCfg EJB への EJBObject 参照を表します。

    try {
    if (pm != null)
    pm.remove();
    } catch (Exception e) {}

    詳細については、『BPM クライアント アプリケーション プログラミング ガイド』の「プロセス エンジンからの切断」の「セッション EJB 参照の削除」を参照してください。

  2. JMS 接続など、その他のリソースを削除し(該当する場合)、コンテキストをクローズします。

    たとえば、次のコードは、JNDI コンテキスト リソースをクローズします。

    try {
    ic.close();
    { catch(Exception exp) {}

    詳細については、『BPM クライアント アプリケーション プログラミング ガイド』の「プロセス エンジンからの切断」の「他のリソースの解放」を参照してください。

 

ページの先頭 前 次