BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > B2B トピック > B2B Integration メッセージング アプリケーション プログラミング ガイド > ビジネス メッセージ交換用 XOCP アプリケーションの開発 |
B2B Integration メッセージング アプリケーション プログラミング ガイド
|
ビジネス メッセージ交換用 XOCP アプリケーションの開発
注意: Messaging API および XOCP ビジネス プロトコルは、WebLogic Integration の本リリースより非推奨になりました。Messaging API および XOCP ビジネス プロトコルの代替機能に関する詳細については、『WebLogic Integration リリース ノート』を参照してください。
eXtensible Open Collaboration Protocol (XOCP)は、ビジネス メッセージの交換のために WebLogic Integration によって使用されるデフォルトのビジネス プロトコルです。この付録のトピックは以下のとおりです。
はじめに
WebLogic Integration では、XOCP プロトコルに基づくトレーディング パートナの会話を実装するために 2 つの方法が用意されています。
このマニュアルでは、トレーディング パートナ間の会話を処理および管理する XOCP アプリケーションの作成で Messaging API を使用する方法を説明します。
このマニュアルにあるコード例の多くは、Messaging API の例から派生したものです。詳細については、『B2B Integration サンプルの使い方』の「Messaging API サンプル 」を参照してください。
注意: 以前に XOCP アプリケーションの作成で使用されていた C-Enabler API (WebLogic Integration リリース 2.0 および WebLogic Collaborate 製品)は非推奨になりましたが、依然としてサポートされています。この非推奨になった API を使用するアプリケーションを作成する方法の詳細については、次の URL を参照してください。
http://edocs.bea.com/wlintegration/v2_0/collaborate/devxocp/index.htm
XOCP アプリケーションは、WebLogic Integration リリース 2.0 の WebLogic Collaborate C-Enabler API で作成されたものも含めて、別個の Java 仮想マシン(JVM)で非永続モードで実行される必要があります。
主要な概念
この節では、XOCP アプリケーションに関連する以下の主要な概念を説明します。
XOCP アプリケーション
XOCP アプリケーションは、ユーザによって記述される Java アプリケーションです。このアプリケーションは、ハブ アンド スポーク コンフィグレーションでデプロイされる WebLogic Integration ノードで実行されます。このノードは、会話定義での特定のロールを実行するために XOCP アプリケーション クラスを使用します。ハブ アンド スポーク コンフィグレーションでは、トレーディング パートナの XOCP アプリケーションが、スポーク配信チャネル、または B2B スポークと関連付けられます。この XOCP アプリケーションによって、トレーディング パートナはハブ配信チャネルでコンフィグレーションされた仲介機能またはルーティング プロキシを使用して、B2B スポークにいる他のトレーディング パートナと通信をすることができます。
ユーザ記述 XOCP アプリケーションは、以下のタスクを実行します。
注意: XOCP アプリケーション クラスの完全な詳細については、『BEA WebLogic Integration Javadoc』の com.bea.b2b.protocol.xocp.application クラスを参照してください。
次の図は、配信チャネル、XOCP アプリケーション、および XOCP アプリケーションをホストする WebLogic Integration について可能な、3 つのハブ アンド スポーク コンフィグレーションを示します。
図1-1 可能なハブ アンド スポーク コンフィグレーション
1 つの WebLogic Integration ノードは、多数の XOCP アプリケーションをホストできます。XOCP アプリケーションで使用されるハブ アンド スポーク配信チャネルのコンフィグレーションの詳細については、『B2B Integration 管理ガイド』の「コンフィグレーション要件」を参照してください。 XOCP アプリケーション セッション XOCP アプリケーション セッションによって、XOCP アプリケーションがコラボレーション アグリーメントおよび配信チャネルと関連付けられます。XOCP アプリケーション セッションは、トレーディング パートナと通信するためにアプリケーションによって作成されます。XOCP アプリケーションのスコープは配信チャネルによって区切られます。XOCP アプリケーションは、XOCP アプリケーション クラスの getXOCPApplicationSession メソッドを呼び出して XOCP アプリケーション セッションを作成します。 1 つの XOCP アプリケーションを複数の XOCP アプリケーション セッションと関連付けることができるので、アプリケーションは複数の会話に同時に参加できます。 Messaging API クラス ライブラリ Messaging API クラス ライブラリは XOCP アプリケーション クラスを含み、XOCP ビジネス メッセージを交換するための API を提供します。Messaging API に含まれるパッケージを、次の表に示します。
これらのパッケージの詳細については、WebLogic Integration マニュアルの「BEA WebLogic Integration Javadoc」を参照するか、Windows システムでは、[スタート|プログラム|BEA WebLogic e-Business Platform | WebLogic Integration 2.1 | Javadocs] を選択してください。 XOCP ビジネス メッセージおよびメッセージ エンベロープ XOCP ビジネス メッセージは、XOCP 会話でのトレーディング パートナ間で交換される通信の基本単位です。XOCP ビジネス メッセージは、Messaging API クラス ライブラリでは com.bea.b2b.protocol.xocp.messaging.XOCPMessage クラスによって表されます。 メッセージ エンベロープは、ビジネス メッセージのコンテナです。メッセージ エンベロープには、送信側の情報(送信側 URL など)および受信側の情報(送り先 URL など)が含まれています。メッセージ エンベロープは、Messaging API クラス ライブラリでは com.bea.b2b.protocol.messaging.MessageEnvelope クラスによって表されます。ただし、メッセージ エンベロープにプログラム的にアクセスできるのは、XOCP アプリケーションではなく、ロジック プラグインのみです。詳細については、『B2B Integration ロジック プラグイン プログラミング ガイド』の「ビジネス メッセージのルーティングとフィルタ処理」および メッセージ エンベロープの情報フロー を参照してください。 XOCP ビジネス メッセージの図 次の図は、メッセージ エンベロープと XOCP ビジネス メッセージのコンポーネントを示します。 図1-2 XOCP ビジネス メッセージのコンポーネント
XOCP ビジネス メッセージのコンポーネント XOCP ビジネス メッセージは、マルチパート MIME (Multipurpose Internet Mail Extensions)メッセージです。XOCP ビジネス メッセージは、以下のコンポーネントからなります。
メッセージ エンベロープの情報フロー 次の図は、メッセージ エンベロープが WebLogic Integration でどのように処理されるかの例を示します。 図1-3 WebLogic Integration でのメッセージ エンベロープの処理
会話開始者と会話参加者
どの XOCP 会話でも、トレーディング パートナのロールには 2 つの種類があります。
リポジトリ内の各会話定義には、最低限これらのロールが両方とも含まれています。トレーディング パートナが、関連する会話定義に関連付けられた会話を開始または参加するには、会話の適切なロールにサブスクライブされている必要があります。
通常、会話の開始者は、トレーディング パートナが登録されているロールによって決定されます。たとえば、GetQuote 会話では、バイヤのロールに登録されているトレーディング パートナが GetQuote 会話を開始するのが通例です。セラーのロールに登録されているトレーディング パートナは、GetQuote 会話では会話参加者になるのが通例です。
次の図は、会話開始者および会話参加者が実行するタスクの一部を示します。
図1-4 会話開始者と会話参加者
会話コーディネータ WebLogic Integration では、実行時に会話を管理する 2 種類の会話コーディネータがサポートされています。グローバル会話コーディネータは B2B 仲介機能でアクティブな会話を管理し、ローカル会話コーディネータは B2B スポークと関連付けられて、グローバル会話コーディネータによるアクティブな会話の管理をローカルに補助します。 次の図は、グローバル会話コーディネータおよびローカル会話コーディネータが WebLogic Integration アーキテクチャのどこで動作するかを示します。 図1-5 グローバル会話コーディネータおよびローカル会話コーディネータ
グローバル会話コーディネータ グローバル会話コーディネータは仲介機能と関連付けられたサービスで、ハブ配信チャネルでコンフィグレーションされます。グローバル会話コーディネータは XOCP のルールに従って会話のライフサイクルを管理し、複数の組織境界にまたがる長期の恒久会話をサポートします。グローバル会話コーディネータは、アクティブな会話のリストを保持します。 グローバル会話コーディネータは、以下のサービスを実行します。
ローカル会話コーディネータ
ローカル会話コーディネータは、B2B スポークと関連付けられているサービスです。ローカル会話コーディネータは、ローカル トレーディング パートナ(スポーク配信チャネルでコンフィグレーションされたもの)が参加している会話を管理し、アクティブな会話のリストを保持します。各 XOCP アプリケーション セッションには、個別のローカル会話コーディネータがあります。
ローカル会話コーディネータは、以下のタスクを実行します。
トレーディング パートナの状態
次の表は、トレーディング パートナが XOCP アプリケーション セッションおよび会話参加に関連するタスクを実行する際に、トレーディング パートナに関連付けられる状態を説明します。
トレーディング パートナの状態の一部は WebLogic Integration B2B Console に表示されます。 セキュアなメッセージング トレーディング パートナ間の通信のセキュリティは Secure Sockets Layer(SSL)を使用して確保されています。トレーディング パートナ間でビジネス メッセージを交換できるようにする前に、WebLogic Integration ノードはトレーディング パートナの証明書を利用して各トレーディング パートナのアイデンティティを認証しなければなりません。トレーディング パートナのアイデンティティが認証されれば、ビジネス メッセージはトレーディング パートナの間で安全に交換されます。WebLogic Integration のセキュリティの詳細については、『B2B Integration セキュリティの実装』を参照してください。
XOCP アプリケーションの主要なタスク
この節では、XOCP アプリケーションで実行される主要なタスクについて説明します。
XOCP アプリケーション セッションの作成
ビジネス メッセージを交換する前に、XOCP アプリケーションはトレーディング パートナおよび関連する配信チャネルのための XOCP アプリケーション セッションを作成する必要があります。
トレーディング パートナの XOCP アプリケーションが XOCP アプリケーション セッションを作成するには、次の条件が満たされる必要があります。
注意: スポーク配信チャネルと関連付けられた XOCP アプリケーションをホストするマシンが、ハブ配信チャネルと接続した後でクラッシュした場合でも、XOCP アプリケーションは通常の起動時にハブ配信チャネルと再接続できます。以前の XOCP アプリケーション セッションは破棄されて、新しい XOCP アプリケーション セッションに新しいリソースが割り当てられます。ただし、スポーク配信チャネルと関連付けられたマシンがダウンしている間、仲介機能はビジネス メッセージを配信できません。配信されなかったビジネス メッセージは、再試行の回数を超過した場合、またはビジネス メッセージや会話がタイム アウトした場合に破棄されます。
トレーディング パートナが他のトレーディング パートナとのビジネス メッセージの交換を止めるときには、XOCP アプリケーションが XOCP アプリケーション セッションをシャットダウンします。詳細についてはXOCP アプリケーション セッションのシャットダウン を参照してください。
会話でのロールの登録
XOCP アプリケーション セッションが作成されたら、トレーディング パートナは、コラボレーション アグリーメントにバインドされる会話型のメッセージ リスナを登録する必要があります。メッセージ リスナは、トレーディング パートナが会話にどのように参加するかを定義する会話型に応じて登録される必要があります。
ロールの登録では、ハブ配信チャネルと関連付けられているリポジトリの以下の情報が必要です。
これらの概念については、『B2B Integration 入門』の「概要」を参照してください。
コラボレーション アグリーメントの会話型に応じたメッセージ リスナを登録する前に、トレーディング パートナは最初に登録するための認証を受ける必要があります。認証は、仲介機能の管理者によってコンフィグレーションされ、トレーディング パートナが会話定義のどのロールにサブスクライブしているかに基づいています。
XOCP アプリケーション セッションでコラボレーション アグリーメントの特定の会話型へのメッセージ リスナの登録が試みられると、スポーク配信チャネルは仲介機能へ XOCP システム メッセージ(会話への登録)を送信します。仲介機能は、関連付けられた配信チャネルで要求される会話型についてトレーディング パートナのロールを検証します。登録が有効であれば、以後トレーディング パートナは登録された会話型と関連付けられている会話について開始および参加ができます。この時点で、トレーディング パートナは REGISTERED 状態になり、会話について開始または参加をする準備が整います。
トレーディング パートナとの会話への関与
会話のロールに登録されたら、トレーディング パートナは自身のロールに従って会話に関与できます。会話の開始および参加は、仲介機能それ自体の上で発生します。ただし、XOCP アプリケーション セッションは、自身が関係している会話の状態に関する情報の一部を保守します。
会話開始者 XOCP アプリケーションおよび会話参加者 XOCP アプリケーションは、非常に似ています。ただし、会話開始者 XOCP アプリケーションは会話を終了できますが、会話参加者 XOCP アプリケーションはできません。会話参加者 XOCP アプリケーションは、会話から退出できるだけです。
会話の開始とビジネス メッセージの送信
会話を開始するには、まず会話開始者 XOCP アプリケーションが会話を作成します。会話開始者 XOCP アプリケーションはタイムアウト値を指定することもできます。このタイムアウト値の時間が経過すると、会話は自動的に終了されます。この値は、リポジトリにある関連する会話定義で指定されているタイムアウト値をオーバーライドします。
B2B スポーク上のローカル会話コーディネータは XOCP システム メッセージ(特定のコラボレーション アグリーメントの会話を作成)を仲介機能へ送信します。仲介機能にあるグローバル会話コーディネータは、適切な配信チャネルを使用して会話を作成し、会話開始者としてトレーディング パートナを追加します。会話が作成されたら、会話開始者 XOCP アプリケーションはビジネス メッセージを作成および送信します。詳細についてはXOCP ビジネス メッセージの送信 を参照してください。
会話への参加
仲介機能にあるグローバル会話コーディネータは、会話に関して仲介機能が受信するすべてのビジネス メッセージを処理します。仲介機能が最初のビジネス メッセージを受信者トレーディング パートナ(複数可)へ配信した後で、グローバル会話コーディネータは配信先となったトレーディング パートナを会話へ追加します。トレーディング パートナが会話に追加されたら、そのトレーディング パートナは ACTIVE 状態になり、会話の中でビジネス メッセージの送信および受信ができます。
対象のスポーク配信チャネル上の XOCP アプリケーション セッションが会話で最初のビジネス メッセージを受信すると、必要な処理(会話をローカル リストに登録するなど)を済ませてから、メッセージ リスナで onMessage コールバックを呼び出します。詳細については、XOCP ビジネス メッセージの受信 を参照してください。
登録されたトレーディング パートナが会話に追加されたら、そのトレーディング パートナは ACTIVE 状態になり、会話の中でビジネス メッセージの送信および受信ができます。
会話からの退出
会話への参加が完了したら、会話参加者トレーディング パートナは会話から退出することができます。トレーディング パートナが会話から退出すると、会話コーディネータによって、参加トレーディング パートナのリストから削除されます。その会話での以後のビジネス メッセージは、退出したトレーディング パートナには送信されません。トレーディング パートナが退出した後、そのトレーディング パートナは会話が続く間 DROPPEDOUT 状態で残されます。
会話の終了
会話が終了するのは、会話開始者であるトレーディング パートナが明示的に会話を終了するか、会話がタイム アウトした場合です。どちらかが最初に発生した時点で会話は終了します。会話を開始したトレーディング パートナは、ビジネス プロセスの適切な時点で会話を終了させなければなりません。
注意: 会話の開始者のみが会話を終了できます。
会話が終了すると、会話コーディネータは参加者トレーディング パートナのすべてに XOCP システム メッセージ(終了メッセージ)を送信します。このメッセージは、B2B スポーク上の XOCP アプリケーション セッションの登録済みメッセージ リスナの間で、コールバック onTerminate として伝播されます。
XOCP アプリケーション セッションのシャットダウン
トレーディング パートナが会話でのすべてのアクティビティを終了すると、XOCP アプリケーションによって XOCP アプリケーション セッションがシャットダウンされます。XOCP アプリケーションが XOCP アプリケーション セッションをシャットダウンすると、そのスポークと関連付けられている B2B エンジンは、セッションと関連付けられているすべてのコラボレーション アグリーメントの登録を仲介機能から解除します。これにより、仲介機能は関連付けられている会話型の登録を解除します。これに応じて会話コーディネータは、XOCP アプリケーション セッションで当該のトレーディング パートナによって開始されたすべての会話を自動的に終了し、参加しているすべての会話からトレーディング パートナを削除します。
トレーディング パートナが XOCP アプリケーション セッションをシャットダウンすると、次のような結果になります。
実行時の情報フロー
実行時には、すべての XOCP アプリケーションが特定のタスクを同じように実行します。配信チャネルへ接続し、メッセージ リスナを登録してから、アプリケーション セッションのシャットダウンを同じ方法で行います。ただし、個々の会話の間に会話開始者および会話参加者が実行する一連のタスクは、お互いに明確な相違点がありながらも関連しています。
情報フローの図
次の図は、会話開始者と会話参加者の間の、実行時の情報フローを示します。
図1-6 会話開始者と会話参加者の間の情報フロー
この図は、1 つの会話と、ビジネス メッセージの最小限の交換(要求と応答)に関する簡略化された例です。実際には、メッセージ リスナを登録してから XOCP アプリケーション セッションを終了するまでに、トレーディング パートナは複数の会話に参加することもあります。さらに、1 つの会話の中で、複数のトレーディング パートナが 1 つの要求および応答にとどまらず、多くのビジネス メッセージを交換する場合もあります。 情報フローでのステップ 実行時には、複数のトレーディング パートナ間の情報のフロー(仲介機能を通じて通信する XOCP アプリケーションによるもの)は、以下の順序で進みます。
以上のステップの詳細については、XOCP アプリケーションの主要なタスク を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |