BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
|
e-docs > WebLogic Integration > B2B トピック > B2B Intgration ロジック プラグイン プログラミング ガイド > ビジネス メッセージのルーティングとフィルタ処理 |
B2B Intgration ロジック プラグイン プログラミング ガイド |
ビジネス メッセージのルーティングとフィルタ処理
以下の節では、トレーディング パートナ間で交換されるビジネス メッセージのフローを制御するために、ルーティング、フィルタ処理、および XPath 式を使用する方法を説明します。
ビジネス メッセージおよびメッセージ エンベロープ
ビジネス メッセージは、会話のトレーディング パートナ間で交換される通信の基本単位です。ビジネス メッセージには、メッセージの受信側のリストがあります。1 つのビジネス メッセージは、B2B integration API では com.bea.b2b.protocol.messaging.Message インタフェースによって表されます。以下のクラスは、このインタフェースを実装して、プロトコル固有のビジネス メッセージを表します。
ビジネス メッセージを受信すると、B2B エンジンはメッセージ エンベロープを作成します。メッセージ エンベロープは、B2B エンジンで処理されるビジネス メッセージのコンテナになります。メッセージ エンベロープは、com.bea.b2b.protocol.messaging.MessageEnvelope クラスのインスタンスです。
メッセージ エンベロープはルーティングのために使用されるもので、手紙の封筒に相当します。メッセージ エンベロープには、ビジネス メッセージに加えて、送信側の識別情報(返信先アドレス)およびビジネス メッセージの受信者(送り先アドレス)といったアドレス情報が含まれます。次に図を示します。
図2-1 XOCP ビジネス メッセージを含んでいるメッセージ エンベロープ
また、メッセージ エンベロープにはビジネス メッセージに関するその他の情報も含まれます。MessageEnvelope クラスの詳細については、『BEA WebLogic Integration Javadoc』を参照してください。
実行時のメッセージ処理
WebLogic Integration B2B エンジンはロジック プラグインをルータまたはフィルタとして利用して、トレーディング パートナへのビジネス メッセージのフローを管理します。次の例は、XOCP ビジネス メッセージに対するこの処理の実装を示します。
注意: XOCP ビジネス プロトコルは、WebLogic Integration の本リリースより非推奨になりました。代替機能に関する情報については、『BEA WebLogic Integration リリース ノート』を参照してください。
次の図は、B2B エンジンによるメッセージ処理の概要を示します。
図2-2 メッセージ処理の概要
WebLogic Integration では、サポートされるビジネス プロトコルごとにルータが提供されています。次の図は、ルータの詳細を示します。 図2-3 WebLogic IntegrationB2B ルータ
WebLogic Integration では、サポートされるビジネス プロトコルごとにフィルタが提供されています。次の図は、フィルタの詳細を示します。 図2-4 WebLogic IntegrationB2B フィルタ
次の図は、B2B エンジンによる XOCP ビジネス メッセージ処理の詳細を示します。RosettaNet ビジネス メッセージの処理も同様です。詳細については、『B2B Integration RosettaNet の実装』を参照してください。 図2-5 XOCP メッセージの処理
以下の節では、B2B エンジンの送信側および受信側での XOCP ビジネス メッセージの処理について説明します。
送信側
以下の節では、B2B エンジンの送信側のコンポーネントと XOCP ビジネス メッセージの処理について説明します。
メッセージ XPath 式
XOCP ビジネス メッセージを送信する際に、送信側トレーディング パートナのための B2B エンジンではビジネス メッセージの受信側を定義するメッセージ XPath 式を指定できます。このメッセージ XPath 式は、Business Process Management (BPM) ワークフロー、またはローカルに実行される B2B Integration アプリケーションで定義されます。メッセージ XPath 式の詳細については、メッセージ XPath 式の作成を参照してください。
転送サービス
転送サービスは受信 XOCP ビジネス メッセージを読み取って以下の処理を行います。
デコーダ
デコーダは以下の処理を行います。
スケジューリング サービス
スケジューリング サービスはメッセージをキューに入れて格納し、後に XOCP ルータで取得できるようにします。
XOCP ルータ
XOCP ルータはロジック プラグインをつなげたもので、XOCP ビジネス メッセージの受信側を指定します。各ロジック プラグインは、受信側トレーディング パートナのセットについてトレーディング パートナを追加または削除できます。
XOCP ルータにあるロジック プラグインは、以下の順序で並べられます。
以下の節では、これらのロジック プラグインについて説明します。
XOCP ルータ ロジック プラグイン
XOCP ルータ ロジック プラグインは、以下の処理を行います。
メッセージコンテキスト ドキュメントは、XOCP ビジネス メッセージおよびリポジトリ中の関連する情報から XOCP ルータ ロジック プラグインによって作成される XML ドキュメントです。メッセージコンテキスト ドキュメントは、ビジネス プロトコル、会話、送信側トレーディング パートナ、および受信側トレーディング パートナといった、XOCP ビジネス メッセージに関するヘッダおよびコンテキストの情報を示します。XOCP ルータ ロジック プラグインは XPath 式を使用してメッセージコンテキスト ドキュメントを評価します。メッセージコンテキスト ドキュメントの詳細については、メッセージコンテキスト ドキュメントでの作業を参照してください。
トレーディング パートナ XPath ルータ式は送信側トレーディング パートナ用のリポジトリで定義され、当該のトレーディング パートナによって送信されるすべての XOCP ビジネス メッセージに適用されます。送信側トレーディング パートナは複数のトレーディング パートナ XPath ルータ式を持つことができます。
トレーディング パートナ XPath ルータ式は、メッセージコンテキスト ドキュメントのさまざまな部分を調べて受信側トレーディング パートナの別のセットを選択します。各式によって生成されたトレーディング パートナは、以前に生成された受信側トレーディング パートナのセットと置き換えられたり、現在のセットに追加されたりできます。
顧客提供のルータ ロジック プラグイン
ロジック プラグインを作成して、XOCP ルータに追加することができます。新しいロジック プラグインを作成した場合、それをチェーンに追加する際の場所は XOCP ルータ ロジック プラグインの後で、かつ XOCP ルータ エンキュー ロジック プラグインの前です。XOCP ルータ チェーン内でのロジック プラグインの順序は、XOCP ビジネス プロトコル定義で指定されます。
顧客提供のロジック プラグインは、ルータ機能を持たなくとも XOCP ルータの一部になることができます。たとえば、顧客提供のロジック プラグインは、特定の送信側トレーディング パートナによって送信されたメッセージの数をトラッキングし、該当するメッセージについてトレーディング パートナに請求することで請求処理の機能を提供できます。顧客提供のロジック プラグインは、ルーティングおよびフィルタ処理の機能を提供していなくても、XOCP ルータまたは XOCP フィルタのみに追加できます。顧客提供のロジック プラグインの詳細については、ロジック プラグインの作成と追加(非推奨)を参照してください。
顧客提供のルータ ロジック プラグインが処理された後で、受信側トレーディング パートナのセットが空でなければ、B2B エンジンはメッセージの処理を継続します。空である場合、顧客提供のルータ ロジック プラグインはメッセージを次のコンポーネントでの処理に転送しません。
XOCP ルータ エンキュー ロジック プラグイン
XOCP ルータ エンキュー ロジック プラグインは、以下の処理を行います。
ルーティング サービス
ルーティング サービスは以下の処理を行います。
受信側
以下の節では、B2B エンジンの受信側のコンポーネントと XOCP ビジネス メッセージの処理について説明します。
XOCP フィルタ
XOCP フィルタはロジック プラグインのチェーンで、XOCP ビジネス メッセージを受信側へ送信するかどうかを決定します。これらのロジック プラグインは、XOCP ルータ ロジック プラグインの後で評価され、XOCP ルータによる結果を変更またはオーバーライドすることができます。各ロジック プラグインで、メッセージの非送信を決定できます。
XOCP フィルタにあるロジック プラグインは、以下の順序で並べられます。
以下の節では、これらのロジック プラグインについて説明します。
XOCP フィルタ ロジック プラグイン
XOCP フィルタ ロジック プラグインは、以下の処理を行います。
メッセージコンテキスト ドキュメントは、XOCP ビジネス メッセージおよびリポジトリ中の関連する情報から XOCP フィルタ ロジック プラグインによって作成される XML ドキュメントです。メッセージコンテキスト ドキュメントは、ビジネス プロトコル、会話、送信側トレーディング パートナ、および受信側トレーディング パートナといった、XOCP ビジネス メッセージに関するヘッダおよびコンテキストの情報を示します。XOCP フィルタ ロジック プラグインは XPath 式を使用してメッセージコンテキスト ドキュメントを評価します。メッセージコンテキスト ドキュメントの詳細については、メッセージコンテキスト ドキュメントでの作業を参照してください。
トレーディング パートナ XPath フィルタ式は受信側トレーディング パートナ用のリポジトリで定義され、当該のトレーディング パートナ宛のすべての XOCP ビジネス メッセージに適用されます。受信側トレーディング パートナは複数のトレーディング パートナ XPath フィルタ式を持つことができます。
トレーディング パートナ XPath フィルタ式は、メッセージコンテキスト ドキュメントのさまざまな部分を調べてメッセージの受信または拒否を示すブール値の結果を返します。この処理は、false と評価される式が出るか、すべての式が処理されるまで継続されます。
顧客提供のフィルタ ロジック プラグイン
ロジック プラグインを作成して、XOCP フィルタに追加することができます。新しいロジック プラグインを作成した場合、それをチェーンに追加する際の場所は XOCP フィルタ ロジック プラグインの前です。XOCP フィルタ チェーン内でのロジック プラグインの順序は、XOCP ビジネス プロトコル定義で指定されます。
顧客提供のロジック プラグインは、フィルタ機能を持たなくとも XOCP フィルタの一部になることができます。たとえば、顧客提供のロジック プラグインは、特定の受信側トレーディング パートナへ送信されたメッセージの型をトラッキングすることでサンプリングの機能を提供できます。顧客提供のロジック プラグインは、ルーティングおよびフィルタ処理の機能を提供していなくても、XOCP ルータまたは XOCP フィルタのみに追加できます。ロジック プラグインの詳細については、ロジック プラグインの作成と追加(非推奨)を参照してください。
顧客提供のロジック プラグインが受信側への XOCP ビジネス メッセージの配信をキャンセルした場合、顧客提供のロジック プラグインはメッセージを B2B エンジン内の次のコンポーネントへ転送しません。メッセージが転送された場合は、B2B エンジンでメッセージの処理が継続されます。
スケジューリング サービス
スケジューリング サービスは以下の処理を行います。
エンコーダ
エンコーダは、ビジネス プロトコルをサポートする必要に応じてメッセージを変換し、そのメッセージを転送サービスへ転送します。
転送サービス
転送サービスは、メッセージを受信側へ転送します。
メッセージコンテキスト ドキュメントでの作業
メッセージコンテキスト ドキュメントの作成および使用の詳細については、XOCP ルータ ロジック プラグインおよびXOCP フィルタ ロジック プラグインを参照してください。
次のリストは、メッセージコンテキスト ドキュメント用の文書型定義(DTD)を示します。
コード リスト 2-1 メッセージコンテキスト ドキュメント用の文書型定義
<!-- Copyright (c) 2001 BEA Systems, Inc. -->
<!-- All rights reserved -->
<!-- この DTD は XPATH ルータ および フィルタ用のメッセージコンテキスト ドキュメントを示す -->
<!ELEMENT wlc (business-protocol, conversation, sender, trading-partner+) >
<!ATTLIST wlc context ( message-router | trading-partner-router | hub-router | trading-partner-filter | hub-filter ) #REQUIRED >
<!ELEMENT business-protocol EMPTY >
<!ATTLIST business-protocol name CDATA #REQUIRED >
<!ATTLIST business-protocol version CDATA #REQUIRED >
<!ELEMENT conversation EMPTY >
<!ATTLIST conversation name CDATA #REQUIRED >
<!ATTLIST conversation version CDATA #REQUIRED >
<!ATTLIST conversation sender-role CDATA #REQUIRED >
<!ATTLIST conversation receiver-role CDATA #REQUIRED >
<!-- 送信側は、会話中のロールからメッセージを送信したトレーディング パートナ -->
<!ELEMENT sender ( trading-partner ) >
<!-- トレーディング パートナはメッセージを送受信する企業などエンティティを表す -->
<!ELEMENT trading-partner ( address, extended-property-set* ) >
<!ATTLIST trading-partner email CDATA #IMPLIED >
<!ATTLIST trading-partner fax CDATA #IMPLIED >
<!ATTLIST trading-partner name ID #REQUIRED >
<!ATTLIST trading-partner phone CDATA #IMPLIED >
<!ELEMENT address ANY >
<!ELEMENT extended-property-set ANY >
<!ATTLIST extended-property-set name CDATA #REQUIRED >
XPath 式での作業
この節では、XPath 式とその作成方法について説明します。
XPath 式について
XPath は World Wide Web Consortium で定義されている XML パス言語です。XOCP ルータ ロジック プラグインおよび XOCP フィルタ ロジック プラグインは、XPath 式を使用してメッセージコンテキスト ドキュメントを評価します。XOCP ルータ ロジック プラグインおよび XOCP フィルタ ロジック プラグインが使用するための XPath 式をリポジトリに追加することができます。
XOCP ルータ ロジック プラグインおよび XOCP フィルタ ロジック プラグインにある XPath 式は、以下の機能を実行します。
XOCP ルータ ロジック プラグインでは、XPath 式はメッセージ配信のビジネス基準を指定します。たとえば、バイヤは XPath ルータ式を使用して入札要求を特定の市外局番のすべてのセラーに送信したり、大口の注文を扱えるセラーに送信したりできます。
XOCP フィルタ ロジック プラグインでは、XPath 式は B2B エンジンが特定のビジネス メッセージを特定のトレーディング パートナへ送信するかどうかを決定します。XOCP フィルタ ロジック プラグイン内の XPath フィルタ式は、受信側トレーディング パートナにとって不要なビジネス メッセージをフィルタするゲートキーパとして動作します。
次の表は、各種の XPath 式の概要を示します。
XOCP ルータ ロジック プラグインでは、XPath ルータ式によってメッセージコンテキスト ドキュメントの各部が調べられ、別の受信側トレーディング パートナのセットが選択されます。各式によって生成されたトレーディング パートナは、以前に生成された受信側トレーディング パートナのセットと置き換えられたり、現在のセットに追加されたりできます。 次の表は、XPath ルータ式がどのように使用されるかをステップを追って示します。
XOCP フィルタ ロジック プラグインでは、XPath ルータ式によってメッセージコンテキスト ドキュメントの各部が調べられ、受信側トレーディング パートナへメッセージを転送するかどうかが決定されます。XPath フィルタ式は、さまざまな選択基準に基づいて true または false を返します。false が返されると、そのメッセージは評価が中止されて、受信側には送信されません。 XPath 式は、以下の情報を参照できます。
Xpath 式の詳細については、『B2B Integration 管理ガイド』の「高度なコンフィグレーション タスク」を参照。
メッセージ XPath 式の作成
XOCP ビジネス メッセージを送信する際に、送信側トレーディング パートナは XPath 式を指定して、ビジネス メッセージの受信側を定義することができます。メッセージ XPath ルータ式は、Business Process Management ワークフローまたは WebLogic Integration B2B Java アプリケーションで定義されています。この XPath 式で、XOCP ルータ ロジック プラグインによって生成される メッセージコンテキスト XML ドキュメントから <trading-partner> ノードのサブセットが選択されます。
送信側トレーディング パートナはこの XPath 式を定義して、メッセージとともに送信します。XPath 式は、B2B Integration では次のようにして定義されます。
注意: 多くの場合、トレーディング パートナがビジネス メッセージを送信する相手は、単一で既知の、他のトレーディング パートナです。たとえば、トレーディング パートナからの要求に応答する場合などです。この場合、送信側トレーディング パートナは、受信側トレーディング パートナの名前を XPath 式の代わりに指定することで、XOCP ルータ ロジック プラグインでの XPath 式の評価を回避することができます。トレーディング パートナ名を指定するには、com.bea.b2b.protocol.messaging.Message インスタンスの setExpression メソッドではなく setRecipient メソッドを呼び出してください。
トレーディング パートナ XPath 式の作成
トレーディング パートナ XPath 式は、トレーディング パートナごとに定義される XPath 式です。ルーティングの場合、トレーディング パートナ XPath 式は XOCP ルータ ロジック プラグインに使用されて、送信側トレーディング パートナについて定義されます。フィルタ処理の場合、トレーディング パートナ XPath 式は XOCP フィルタ ロジック プラグインに使用されて、受信側トレーディング パートナについて定義されます。
トレーディング パートナ XPath 式はリポジトリに定義されます。XOCP ルータ ロジック プラグインおよび XOCP フィルタ ロジック プラグインで使用されるトレーディング パートナ XPath 式を作成するために、以下のツールを使用できます。
<xpath-expression expression="//TradingPartner1" location="ROUTER" type="APPEND"/>
XPath の構文および使用法の詳細については、World Wide Web Consortium によって公開されている「XML Path Language Specification」を参照してください。この文書は次の URL にあります。
次の表は、B2B Console を使用して XPath 式を定義するときに設定するプロパティを示します。
たとえば、あるトレーディング パートナが、カリフォルニアにいるトレーディング パートナへの要求をルーティングする必要があるとします。これを実現するために、送信側トレーディング パートナは B2B Console の [トレーディング パートナ] タブにある詳細オプションのウィンドウを使用して、XOCP ルータ ロジック プラグイン用に次の XPath 式を作成できます。
/wlc/trading-partner[extended-property-set/state='California']
ビジネス プロトコル XPath 式の作成
ビジネス プロトコル XPath 式は、特定のビジネス プロトコルごとに WebLogic Integration リポジトリで定義されている XPath 式です。ビジネス プロトコル XPath ルータ式は、対象となるプロトコルを使用するすべての受信ビジネス メッセージに適用されます。ビジネス プロトコル XPath フィルタ式は、すべての送信 XOCP ビジネス メッセージに適用されます。
ビジネス プロトコル XPath 式はリポジトリに定義されます。XOCP ルータ ロジック プラグインおよび XOCP フィルタ ロジック プラグインで使用される XPath 式を作成するために、以下のツールを使用できます。
<xpath-expression expression="//TradingPartner1" location="ROUTER" type="APPEND"/>
XPath の構文および使用法の詳細については、World Wide Web Consortium によって公開されている「XML Path Language Specification」を参照してください。この文書は次の URL にあります。
表 2-3に、B2B Console を使用して XPath 式を定義するときに設定するプロパティを示しています。
たとえば、ある管理者が、出荷側であるトレーディング パートナが出荷要求のみを受信できるようにメッセージをフィルタしつつ、他のすべてのトレーディング パートナについてはすべてのメッセージを受信できるようにする必要があるとします。これを実現するために、管理者は B2B Console の [ビジネス プロトコル定義] タブを使用して XOCP フィルタ ロジック プラグイン用に次の XPath 式を作成できます。
(/wlc/trading-partner/extended-property-set/business='shipper') OR (/wlc/trading-partner/extended-property-set/business!='shipper')