BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > B2B トピック > B2B Integration メッセージング アプリケーション プログラミング ガイド > XOCP アプリケーションのプログラミング ステップ |
B2B Integration メッセージング アプリケーション プログラミング ガイド
|
XOCP アプリケーションのプログラミング ステップ
以下の節では、開発者が通常 XOCP アプリケーションに用意するプロシージャの各ステップを説明します。
各節には、Messaging API サンプルからコード例が引用されています。これらの詳細については、『B2B Integration サンプルの使い方』を参照してください。
注意: XOCP アプリケーションを実行する前に、管理者は XOCP アプリケーションと関連付けられている会話に参加するトレーディング パートナが使用するコラボレーション アグリーメントを指定する必要があります。詳細な情報については、『B2B Integration 管理ガイド』の「ワークフロー リソースのコンフィグレーション」を参照してください。WebLogic Integration の以前のバージョンで作成された XOCP アプリケーションの下位互換性の詳細については、『WebLogic Integration リリース 7.0 への移行』を参照してください。
手順 1 : パッケージのインポート
XOCP アプリケーションは、Messaging API クラス ライブラリから必要なパッケージをインポートします。これらのパッケージの詳細については、Messaging API クラス ライブラリ を参照してください。
次のリスト例は、インポートする必要があるパッケージの種類を示します。
コード リスト 2-1 パッケージのインポート
import java.util.Properties;
import com.bea.b2b.protocol.xocp.application.*;
import com.bea.b2b.protocol.xocp.messaging.*;
import com.bea.b2b.protocol.conversation.ConversationType;
import com.bea.b2b.protocol.messaging.PayloadPart;
import com.bea.b2b.protocol.xocp.conversation.local.Conversation;
import com.bea.eci.logging.*;
手順 2 : MessageListener インタフェースの実装
メッセージを受信するために、XOCP アプリケーションは以下のインタフェースを実装する必要があります。
com.bea.b2b.protocol.xocp.messaging.XOCPMessageListener
このインタフェースによって提供される onMessage および onTerminate メソッドは、受信するビジネス メッセージの処理、および会話終了の通知の処理にそれぞれ使用されます。onMessage メソッドは、B2B スポークがビジネス メッセージを受信したときに呼び出されます。onTerminate メソッドは、B2B スポークが会話終了の通知を受信したときに呼び出されます。
メッセージ リスナは、トレーディング パートナが会話中にビジネス メッセージを受信するために必要です。XOCP アプリケーション セッションは、コラボレーション アグリーメントあたり 1 つのメッセージ リスナをサポートします。
コード リスト 2-2 メッセージ リスナ インタフェースの実装
public class Partner1MessageListener
implements XOCPMessageListener{
public void onMessage(XOCPMessage rmsg){
counter ++;
QualityOfService qos = rmsg.getQoS();
// 応答を受信、処理の開始時を待機
synchronized(waiter){
debug("onMessage in waiter counter = " + counter);
PayloadPart[] payload = rmsg.getPayloadParts();
// シングル パート ドキュメントを使用
if (payload != null && payload.length > 0){
BusinessDocument bd = (BusinessDocument)payload[0];
waiter.reply = bd.getDocument();
}
waiter.done = true;
waiter.notify();
}
}
public void onTerminate(Conversation conv, int result)
}
}
XOCPMessageListener インタフェースの詳細については、WebLogic Integration マニュアルの『BEA WebLogic Integration Javadoc』を参照するか、Windows システムでは、[スタート|プログラム|BEA WebLogic e-Business Platform | WebLogic Integration 2.1 | Javadocs] を選択してください。
手順 3 : XOCP アプリケーション セッションの作成
会話について開始または参加をするために、トレーディング パートナはローカル B2B スポーク配信チャネルと関連付けられる XOCP アプリケーション セッションを作成します。各 XOCP アプリケーション セッションでは、関連付けられたトレーディング パートナが、会話中の他のトレーディング パートナとメッセージを交換できます。
新しい XOCP アプリケーションを作成したり、既存のものを取得したりするには、com.bea.b2b.protocol.xocp.application.XOCPApplication クラスを使用します。次のリストは、MdmApp1 という XOCP アプリケーションを、トレーディング パートナ名 Partner 1、配信チャネル名 Partner1-Channel0 として取得します。
コード リスト 2-3 XOCP アプリケーション セッションの取得
XOCPApplication app = XOCPApplication.getXOCPApplication("MdmApp1");
XOCPApplicationSession es = app.getXOCPApplicationSession("Partner1", "Partner1-Channel0");
手順 4 : メッセージ リスナの作成と登録
会話に参加するには、XOCP アプリケーションはメッセージ リスナを登録する必要があります。メッセージ リスナはアプリケーションによって実装されます。開発者は、必要に応じてメッセージ リスナを使用します。
メッセージ リスナを登録するために、XOCP アプリケーションは XOCPApplicationSession インスタンスの registerMessageListener メソッドを呼び出します。呼び出しでは、コラボレーション アグリーメント ID、トレーディング パートナの会話ロール、およびメッセージ リスナ オブジェクトをパラメータとして渡します。
次のリスト例は、verifierConversation 会話の要求者ロール(通常は会話開始者)のメッセージ リスナを登録する方法を示します。要求されるコラボレーション アグリーメント ID およびロールがトレーディング パートナおよび仲介機能のリポジトリにそれぞれ指定されている必要がある点に注意してください。
コード リスト 2-4 メッセージ リスナの登録
Partner1MessageListener ml = new Partner1MessageListener();
Properties prop = new Properties();
prop.setProperty("BusinessProcessName", "verifierConversation");
prop.setProperty("BusinessProcessVersion", "1.0");
prop.setProperty("otherTradingPartner", "Hub");
prop.setProperty("toRole", "replier");
String caId = es.getCAId(prop);
String myRole = "requestor";
es.registerMessageListener(caId, myRole, ml);
手順 5 : 会話の開始または会話への参加
会話開始者アプリケーションは、明示的に会話を開始します。会話を開始するために、開始者トレーディング パートナは com.bea.b2b.protocol.xocp.application.XOCPApplicationSession インスタンスの createConversation メソッドを呼び出します。呼び出しのパラメータとしては、コラボレーション アグリーメント ID、トレーディング パートナのロール、そして省略可能な値として会話のタイムアウト値があります。タイムアウト値は秒単位で指定されます。コンフィグレーションされたタイムアウトが、トレーディング パートナおよび仲介機能リポジトリの両方の会話定義でそれぞれゼロである場合、デフォルト値はゼロ、つまりタイムアウトなしです。トレーディング パートナは会話定義の開始者ロールに登録されている必要があります。
次のリスト例は、会話が開始される方法を示します。
コード リスト 2-5 会話の開始
long timeout = 0;
Conversation c = es.createConversation(caId, myRole, timeout);
手順 6 : ビジネス メッセージの交換
会話開始者アプリケーションが会話を作成した後は、会話中の他のトレーディング パートナとビジネス メッセージの交換を開始できます。
最初は、会話開始者アプリケーションがビジネス メッセージ(要求など)を作成して、会話中の 1 つまたは複数のトレーディング パートナへ送信します。トレーディング パートナがビジネス メッセージを受信すると、会話参加者アプリケーションがビジネス メッセージを処理して、通常は、ビジネス メッセージへの応答を作成して送信します。トレーディング パートナは会話中に複数のビジネス メッセージを送信および受信できます。ビジネス メッセージの交換の詳細については、XOCP ビジネス メッセージの送信 およびXOCP ビジネス メッセージの受信 を参照してください。
手順 7 : 会話の終了
会話の中でトレーディング パートナがビジネス メッセージの交換を終了したら、その会話を終了させることができます。トレーディング パートナが会話への関わりをどのようにして終了するかは、会話の中でのロールによって異なります。
参加者が会話から退出する場合
参加者であるトレーディング パートナは会話から退出することができます。会話から退出するには、参加者 XOCP アプリケーションが Conversation インスタンスの leave メソッドを呼び出します。呼び出しでは false が渡されます。参加者が参加していないと、仲介機能にはメッセージが保持されません。
注意: このリリースでは false 引数のみがサポートされています。
次のリスト例は、参加者が会話から退出する方法を示します。
コード リスト 2-6 会話からの退出
c.leave(false);
開始者が会話を終了する場合
会話開始者は明示的に会話を終了したり、会話がタイムアウトするまで待機したりできます。会話開始者は会話の作成時にタイムアウト値を指定できます。ゼロを指定すると、トレーディング パートナまたは仲介機能のリポジトリで会話用に定義されているタイムアウト値が使用されます。会話が終了すると、会話開始者およびすべての参加者トレーディング パートナが会話から削除され、すべての未配信ビジネス メッセージが破棄され、関連付けられているシステム リソースが解放されます。
会話を明示的に終了するには、開始者 XOCP アプリケーションが自身の Conversation インタフェースの実装で terminate メソッドを呼び出します。次にリスト例を示します。
コード リスト 2-7 会話の終了
c.terminate(Conversation.SUCCESS);
手順 8 : XOCP アプリケーション セッションのシャットダウン
XOCP アプリケーション セッションをシャットダウンして会話から退出するために、アプリケーションはその XOCPApplicationSession インタフェースの実装で shutDown メソッドを使用します。次のリスト例は、XOCP アプリケーション セッションをシャットダウンする方法を示します。
コード リスト 2-8 XOCP アプリケーション セッションのシャットダウン
es.shutDown();
XOCP アプリケーションによって XOCP アプリケーション セッションがシャットダウンされると、トレーディング パートナは会話を自動的かつ永続的に退出します。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |