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

B2B Intgration ロジック プラグイン プログラミング ガイド

 前 次 目次 索引 PDF で表示  

ロジック プラグインの作成と追加(非推奨)

以下の節では、WebLogic Integration でロジック プラグインを開発する方法について説明します。

 


ロジック プラグインについて

以下の節では、ロジック プラグイン、および関連する概念について説明します。

ロジック プラグインの概要

注意: カスタムロジック プラグインは本リリースの WebLogic Integration では非推奨となりました。代わりとなる機能については、『BEA WebLogic Integration リリース ノート.』を参照してください。

ロジック プラグインは、B2B エンジンを通過するビジネス メッセージに対して特殊な処理を実行する Java クラスです。ロジック プラグインは、WebLogic Integration プロバイダまたはトレーディング パートナによって、カスタム サービスとして開発されます。

ロジック プラグインは、WebLogic Integration B2B システムを通過するビジネス メッセージのパスに沿った重要な場所にルールおよびビジネス ロジックを挿入します。ロジック プラグインは、WebLogic Integration でビジネス プロトコルが作成されるときに作成される Java クラスのインスタンスです。ロジック プラグインは、トレーディング パートナの配信チャネルが起動されたときにアクティブ化され、メッセージが B2B エンジンを通過するときに呼び出されます。

ロジック プラグインは、ビジネス プロトコルに個別に対応します。ロジック プラグインでは、特定のビジネス プロトコルを使用して交換されるメッセージのみが処理されます。たとえば、あるプラグインが XOCP プロトコルと関連付けられている場合、そのプラグインは XOCP ビジネス メッセージのみを処理します。

ロジック プラグインが処理するタスク

WebLogic Integration では、サポートされるビジネス プロトコルに対してルータ ロジック プラグインおよびフィルタ ロジック プラグインが提供されています。ルーティング機能やフィルタ機能の他に、カスタム ロジック プラグインがさまざまなサービスを実行できます。たとえば、請求処理が目的であれば、トレーディング パートナから送信されるメッセージの数をカスタム ロジック プラグインでトラッキングできます。

次の表は、ロジック プラグインによって実行されるタスクの種類を示します。

表3-1 ロジック プラグインによって実行されるタスク

タスク

目的

ルート変更

ビジネス メッセージの受信側のリストを変更する。受信側による会話およびコラボレーション アグリーメントの検証を条件とする。この機能は、WebLogic Integration B2B システム プラグインおよびカスタム プラグインによって提供される。

検査

ビジネス メッセージの内容を調べ、その結果に基づいて特定のアクションを起こす。この機能はカスタム プラグインによって提供される。

注意: 検査されるビジネス メッセージの大多数は、暗号化された内容を含みません


 

チェーン

ルータとフィルタには、ビジネス メッセージがルータとフィルタを通過するときに実行される任意の数のロジック プラグインがあります。同一のビジネス プロトコルを共有する複数のロジック プラグインは、ロジック プラグイン チェーンとして順に並べられます。

チェーンの中で、ロジック プラグインは実行時に順番に処理されます。1 つのロジック プラグインの実行が完了すると、チェーン内の次のプラグインがアクティブ化されます。連続するロジック プラグインのそれぞれが、B2B エンジンでビジネス メッセージが処理される間に共有メッセージ情報に加えられた任意の変更を参照できます。

注意: チェーン内のロジック プラグインの位置は、WebLogic Integration B2B Console を使用してリポジトリでコンフィグレーションされます。詳細については、『B2B Integration Administration Console オンライン ヘルプ』を参照してください。

次の図は、ルータにある XOCP ロジック プラグインのチェーンの例を示します。

図3-1 XOCP ルータ チェーンの例


 

ルーティング機能やフィルタ機能を提供しないカスタム ロジック プラグインもルータまたはフィルタ ロジック プラグイン チェーンの一部でなければならない点に注意してください。この例では、チェーンに 4 つのロジック プラグインがあり、次の表に示されている順番で処理されます。

表3-2 サンプルの XOCP ルータ チェーンにあるロジック プラグイン

ロジック プラグイン

説明

XOCP ルータ

システム ロジック プラグイン。WebLogic Integration によってこのロジック プラグインが提供される。リポジトリでコンフィグレーションされている XPath ルータ式に基づいて XOCP ビジネス メッセージの受信側リストを変更できる。このロジック プラグインは、XOCP ルータ チェーンの先頭になければならない。

XOCP-MessageTracker

カスタム ロジック プラグイン。WebLogic Integration のオーナまたはトレーディング パートナは、こうしたカスタム ロジック プラグインを用意して、各トレーディング パートナから請求処理の目的で送信されるビジネス メッセージの数をトラッキングできる。

XOCP-MessageInspector

カスタム ロジック プラグイン。WebLogic Integration のオーナまたはトレーディング パートナは、こうしたカスタム ロジック プラグインを用意して、B2B エンジンを通じて交換されている各種のビジネス ドキュメント(たとえば発注書、インボイスなど)の統計を検査および保持できる。

XOCP ルータ エンキュー

システム ロジック プラグイン。WebLogic Integration によってこのロジック プラグインが提供される。内部の WebLogic Integration B2B ルータ メッセージ キューに XOCP ビジネス メッセージを追加する。このロジック プラグインは、XOCP ルータ チェーンの末尾になければならない。


 

この例では、XOCP ビジネス メッセージのみがこの XOCP ルータ チェーンにあるロジック プラグインをトリガします。非XOCP ビジネス メッセージ(たとえば RosettaNet や cXML メッセージ)は、それらを扱うビジネス プロトコルと関連付けられているルータ チェーンで別個に処理されます。

システム ロジック プラグインとカスタム ロジック プラグイン

ビジネス メッセージを処理するための標準的なサービスを提供するために、WebLogic Integration B2B では以下のロジック プラグインが用意されています。

表3-3 システム ロジック プラグイン

ロジック プラグイン

説明

XOCP ルータ(XOCP router)

リポジトリでコンフィグレーションされている XPATH ルータ式に基づいて XOCP ビジネス メッセージの受信側のリストを変更する。このシステム ロジック プラグインは、ルータ ロジック プラグイン チェーンの先頭である必要がある。先頭にあれば、受信側のリストが既知になるので、カスタム ロジック プラグインがビジネス メッセージを処理できる。

XOCP ルータ エンキュー

WebLogic Integration B2B ルータ メッセージ キューに XOCP ビジネス メッセージを追加する。このシステム ロジック プラグインは、XOCP ルータ ロジック プラグイン チェーンの末尾になければならない。

XOCP フィルタ(XOCP filter)

リポジトリでコンフィグレーションされている XPATH フィルタ式に基づいて、特定のトレーディング パートナへ XOCP ビジネス メッセージを送信するかどうかを決定する。このシステム ロジック プラグインは、XOCP フィルタ ロジック プラグイン チェーンの末尾になければならない。

RosettaNet ルータ エンキュー

WebLogic Integration B2B ルータ メッセージ キューに RosettaNet ビジネス メッセージを追加する。このシステム ロジック プラグインは、RosettaNet ルータ ロジック プラグイン チェーンの末尾になければならない。

RosettaNet フィルタ(RosettaNet filter)

RosettaNet ビジネス メッセージを特定のトレーディング パートナへ送信するかどうかを決定する。このシステム ロジック プラグインは、RosettaNet フィルタ ロジック プラグイン チェーンの末尾になければならない。


 

システム ロジック プラグインを使用する他に、WebLogic Integration 上に構築されたトレーディング パートナは独自のロジック プラグインを開発して専用のサービスを用意することができます。各ロジック プラグインは、ロジック プラグイン API を実装する Java クラスです。詳細については、ロジック プラグインのプログラミング ステップを参照してください。

 


ロジック プラグイン API

WebLogic Integration で提供されるロジック プラグイン API を使用して、WebLogic Integration B2B アプリケーションでは以下のことが可能になります。

次の表は、ロジック プラグイン API の各コンポーネントを示します。詳細については、『BEA WebLogic Integration Javadoc』を参照してください。

表3-4 ロジック プラグイン API

クラス/インタフェース

説明

com.bea.b2b.protocol.PlugIn

汎用のロジック プラグインを表すタグ付けインタフェース。つまり、実行するためにルータまたはフィルタに挿入できるコード。

com.bea.b2b.protocol.PlugInException

ロジック プラグインの実行中にエラーが発生すると送出される例外クラス。

com.bea.b2b.protocol.messaging.
MessageEnvelope

ビジネス メッセージのコンテナ(エンベロープ)を表す。MessageEnvelope には、実際のビジネス メッセージに加えて、関連するルーティングおよび処理の高度な情報が含まれている。たとえば、送信側 URL、および 1 名の受信側のための URL (受信側の各自に 1 つずつメッセージ エンベロープがある)などである。ネイティブなメッセージへのアクセスが必要な場合に備えて、 Java の InputStream も利用可能である(ただし、メッセージ内容の変更は不可なので、OutputStream は一切提供されない)。

com.bea.b2b.protocol.messaging.
メッセージ

Message インタフェースには、WebLogic Integration B2B エンジンでビジネス メッセージを処理するために必要なすべての情報が含まれている。Message インタフェースによって、トレーディング パートナ間でメッセージを適切にルーティングするために使用される情報が提供される。また 、Message インタフェースには、ビジネス メッセージに使用されている特定のビジネス プロトコルに固有の情報も含まれている。使用されるプロトコルに応じて、通常 Message クラスはメッセージに関するプロトコル固有の追加情報を提供するためのサブクラスを含んでいる。

com.bea.b2b.protocol.messaging.
PayloadPart

メッセージ ペイロードのコンポーネントを表す。この情報を実装する特定のクラスは、ビジネス メッセージの各部ごとに提供されている。たとえば XML 部分と非 XML 部分などである。つまり、ビジネス プロトコル固有の情報へのアクセスを補助するために提供されている。

com.bea.b2b.protocol.conversation.
ConversationType

特定の会話定義の中で 1 つのロールを表す。ConversationType クラスには、会話名、会話バージョン、およびトレーディング パートナ ロールなどの情報が含まれる。

com.bea.b2b.tpa.CAInstance

コラボレーション アグリーメントのインスタンスを表す。利用可能なメソッドによって、コラボレーション アグリーメントに関するさまざまな情報を取得できる。この API でコラボレーション アグリーメントを変更することは許可されていないので、取得および検証のためのメソッドのみが提供されている。

com.bea.b2b.tpa.PartyInstance

コラボレーション アグリーメントのパーティを表す。利用可能なメソッドによって、コラボレーション アグリーメントのパーティに関する情報を検証または取得できる。たとえば、コラボレーション アグリーメントのパーティによって使用されている配信チャネルなどである。

com.bea.b2b.tpa.
TradingPartnerInstance

実行時のトレーディング パートナのインスタンスを表す。このクラスは PartyInstance とともに使用されるか、ルータまたはフィルタとともにスタンドアロン モードで使用される。


 

 


ロジック プラグインについてのルールおよびガイドライン

ロジック プラグインは以下のルールおよびガイドラインに従う必要があります。

 


ロジック プラグインの開発と管理

カスタム ロジック プラグインを実装するには、開発のタスクと管理のタスクを組み合わせる必要があります。以下のステップで、必要な手順を説明します。

ロジック プラグインのプログラミング ステップ

この節では、ロジック プラグインのコードに関して実行する必要があるプログラミング ステップを説明します。ロジック プラグインはビジネス メッセージを各自の方法で処理しますが、すべてのロジック プラグインが実行しなければならないタスクもあります。

ロジック プラグインを実装するには、以下のステップを完了してください。

この節で引用されるコード例は、次のようなロジック プラグインからのものです。

手順 1 : 必要なパッケージをインポートする

少なくとも、ロジック プラグインは以下のパッケージをインポートする必要があります。

SentMsgCounter.java ファイルから引用された以下のリストは、必要なパッケージをインポートする方法を示します。

コード リスト 3-1 必要なパッケージのインポート

import java.util.Hashtable;
import com.bea.b2b.protocol.*;
import com.bea.b2b.protocol.messaging.*;
import com.bea.eci.logging.*;
import javax.naming.*;
import javax.sql.DataSource;

// このパッケージは DB プールへのアクセスに必要
import java.sql.*;

手順 2 : PlugIn インタフェースを実装する

ロジック プラグインは com.bea.b2b.protocol.PlugIn インタフェースを実装する必要があります。次のリストに例を示します。

コード リスト 3-2 PlugIn インタフェースの実装

public class SentMsgCounter implements PlugIn
{
...
}

手順 3 : 例外処理モデルを指定する

以下の場合に、PlugInException が送出されます。

ロジック プラグインに指定された例外処理モデルは、例外が送出された場合に何が起きるかを決定します。ロジック プラグインは、exceptionProcessingModel メソッドを実装して、次の表に示される戻り値のうち 1 つを指定する必要があります。

表3-5 例外処理モデルのオプション

クラス/インタフェース

説明

EXCEPTION_CONTINUE

PlugInException が送出されても、処理を停止しないようにする。処理は、チェーン内の次のロジック プラグインまで継続される。

このオプションは、ロジック プラグインの実行中にエラーが発生した場合でもビジネス メッセージの処理を継続できるようにするために使用する。

EXCEPTION_STOP

PlugInException が送出されたら、現在のロジック プラグインで処理が停止されるようにする。ビジネス メッセージは、チェーン内の次のロジック プラグインへ進まない。

このオプションは、メッセージの処理をキャンセルして以後の処理を回避するために使用する。たとえば、ビジネス ドキュメントを検証しているロジック プラグインは、不十分または不正なデータがあるドキュメントを拒絶することができる。

EXCEPTION_UNWIND

PlugInExcepton が送出されたら処理を後戻りさせる。ビジネス メッセージは、チェーン内の次のロジック プラグインへ進まない。

このオプションを使用して、メッセージの拒絶、B2B エンジンでの以後の処理の回避、およびプラグインによるすべての変更の破棄(チェーン内で先の順番にあるプラグインによるすべての変更も含む)ができる。例外が送出された場合に、このモデルが例外処理モデルであれば、チェーンで現在よりも前にあるすべてのプラグイン(ただし現在のロジック プラグインは除く)で unwind メソッドが呼び出される。呼び出しの順番は、チェーンをさかのぼる形になる。結果的に、チェーンによるすべての変更が後戻りによってキャンセルされる。

たとえば、ロジック プラグインによってデータベース テーブルに 1 行が挿入されている場合は、ロジック プラグインの unwind メソッドでその行が削除される。

注意: この例外処理モデルを使用するには、チェーン内のすべてのロジック プラグインが unwind メソッドを実装している必要がある。たとえ何もしないメソッドとしてでも、このメソッドの実装が必要です。


 

ビジネス メッセージが拒絶された場合、次の処理をどうするかは、メッセージと関連付けられているサービス品質の指定だけでなくビジネス プロトコルにも依存します。たとえば、メッセージを送信した B2B アプリケーションにメッセージ配信の失敗が通知されたら、アプリケーションはビジネス メッセージの再送を試みます。

次のリストは、SentMsgCounter プラグインの exceptionProcessingModel メソッドの実装を示します。

コード リスト 3-3 例外処理モデルの指定

public int exceptionProcessingModel()
{
return EXCEPTION_CONTINUE;
}

手順 4 : process メソッドを実装する

ビジネス メッセージを処理するために、ロジック プラグインは process メソッドを実装する必要があります。このメソッドには、ビジネス メッセージのメッセージ エンベロープを唯一のパラメータとして指定できます。次のリストは、SentMsgCounter クラスでの process メソッドの実装の冒頭を示します。ここでは、メッセージ プロパティを格納するために後で使用される変数が定義されています。

コード リスト 3-4 process メソッドの実装

public void process(MessageEnvelope mEnv) throws PlugInException
{

String sender, conversation;
String tRecipient;
Connection conn = null;
Statement stmt = null;
Message bMsg = null;
...
}

注意: ビジネス メッセージを処理するとき、ロジック プラグインはメッセージ エンベロープのみを変更できます。ビジネス メッセージ自体は変更できません。

手順 5 : メッセージ エンベロープからビジネス メッセージを取得する

ロジック プラグインでビジネス メッセージの内容を調べる必要がある場合は、MessageEnvelope インスタンスの getMessage メソッドを呼び出して、ビジネス メッセージを Message オブジェクトとして取得する必要があります。

次のリストでは、SentMsgCounter クラスが getMessage メソッドを呼び出してメッセージ エンベロープからビジネス メッセージを取得します。

コード リスト 3-5 メッセージ エンベロープからビジネス メッセージを取得

if((bMsg = mEnv.getMessage())== null)
{
throw new PlugInException("message is NULL");
}

手順 6 : ビジネス メッセージを検証する

ロジック プラグインは、あるメッセージが処理されるべき有効なビジネス メッセージであるか、あるいは無視できるシステム メッセージであるかを判別することもできます。ビジネス メッセージを検証するために、ロジック プラグインでは Message インスタンスの isBusinessMessage メソッドを呼び出すことができます。次のリストでは、SentMsgCounter クラスで isBusinessMessage メソッドが使用されています。

コード リスト 3-6 ビジネス メッセージの検証

if (bMsg.isBusinessMessage())
{
...
}

手順 7 : ビジネス メッセージのプロパティを取得する

ロジック プラグインは、ビジネス メッセージの特定のプロパティを取得するために MessageEnvelope または Message インスタンスで必要なメソッドを呼び出すことができます。次のリストでは、SentMsgCounter クラスが、メッセージの送信元である会話と関連付けられている会話定義の名前、ビジネス メッセージの送信側の名前、および受信側トレーディング パートナの名前を取得しています。

コード リスト 3-7 ビジネス メッセージのプロパティの取得

conversation= bMsg.getConversationType().getName();
sender = mEnv.getSender();
tRecipient = mEnv.getRecipient();

手順 8 : ビジネス メッセージを処理する

ロジック プラグインは、ビジネス メッセージから必要な情報を取得し、処理することができます。たとえば、SentMsgCounter プラグインは、収集したメッセージ統計で請求処理データベースを更新します。

管理タスク

管理者がリポジトリにロジック プラグイン定義を追加するには、WebLogic Integration B2B Console の [ロジック プラグイン] タブで以下のタスクを実行します。

  1. 以下のロジック プラグイン プロパティを指定します。

  2. ビジネス プロトコルにロジック プラグインを割り当てます。

  3. チェーン内でのロジック プラグインの順位を指定します。

管理タスクの詳細については、『B2B Integration 管理ガイド』および『B2B Integration Administration Console オンライン ヘルプ』を参照してください。

 

ページの先頭 前 次