BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > B2B トピック > B2B Integration サンプルの使い方 > ebXML サンプル |
B2B Integration サンプルの使い方
|
ebXML サンプル
ebXML サンプルは、ebXML ビジネス プロトコルを使用して 2 つのトレーディング パートナがビジネス メッセージを交換する方法を示します。ebXML サンプル アプリケーションは、SAMPLES_HOME¥integration¥samples¥ebxml ディレクトリにあります(SAMPLES_HOMEは WebLogic Platform サンプル ディレクトリを表している)。
この章では、以下のトピックを取り上げます。
ebXML サンプルの概要
WebLogic Integration は、E ビジネス トランザクションにおけるビジネス メッセージの交換のための ebXML ビジネス プロトコルをサポートします。ebXML サンプルは、それぞれが WebLogic Integration をデプロイする 2 つのトレーディング パートナ間の ebXML ベースの会話を、2 つのワークフローを使用して管理する方法を例示します。
このサンプル中のワークフローは、ebXMLConversationInitiator および ebXMLConversationResponder と名付けられています。これらのワークフローは、トレーディング パートナに代わって、QPA(価格および在庫)会話で、開始者と参加者のロールを通じて ebXML メッセージの交換を管理します。このサンプルでは、QPA プロセスの開始と QPA 要求データおよび応答データの表示に使用できる Java Server Page (JSP) を示します。
次の図は、QPA ビジネス トランザクションに関与するトレーディング パートナ間のデータ フローを示しています。
図7-1 QPA ビジネス プロセスのデータ フロー
以下のタスク順序では、このサンプルのトレーディング パートナ間通信の概要を示します。
ebXML サンプルを実行する前に
ebXML サンプルを実行する前に、次の手順を実行します。
ebXML サンプルの実行
ebXML サンプルを実行するには、次の手順を実行します。
cd WLI_HOME
The WebLogic Integration repository has already been
created and populated, possibly from a previous run
of this RunSamples script. Do you want to destroy all the
current data in the repository and create and populate the
WebLogic Integration repository, again? Y for Yes, N for No
この質問に N と入力すると、RunSamples スクリプトはリポジトリを作成してデータを入れる手順を省略し、サンプル ドメインで WebLogic Server のインスタンスを起動する手順のみを実行します。
この質問に Y と入力すると、RunSamples スクリプトはリポジトリを再度作成してデータを入れてから、サンプル ドメインで WebLogic Server のインスタンスを起動します。Y と入力した場合、その時点でリポジトリに格納されている全データが破棄され、リポジトリにサンプル データが再ロードされます。以下の状況では、Y と入力します。
図7-3 ebXML サンプル起動ページ
サンプルの仕組み
この節では、以下のトピックを取り上げます。
概要
このサンプル アプリケーションをサポートするのに必要なデータは、サンプルの設定(ebXML サンプルの実行参照)時に RunSamples スクリプトを実行したときに WebLogic Integration リポジトリにバルク ロードされます。WebLogic Integration では、コンフィグレーション データをバルク ロードすることも、WebLogic Integration B2B Console を使用して入力することもできます。ebXML サンプルを実行する場合に B2B Console を実行する必要はありませんが、実行すると、サンプル用にバルク ロードされたリポジトリ データを表示できます。
このサンプルで使用する 2 つのワークフローは、QPA 会話における ebXML ベースのビジネス メッセージの交換を管理します。これらのワークフローは、ebXML メッセージの送信側および受信側を管理します。
B2B 統合環境のコンフィグレーション方法を詳しく説明することは、このマニュアルの範囲を越えますが、この節では、このサンプル アプリケーションで使用されている WebLogic Integration リポジトリ データについて簡単に説明します。この節ではまた、サンプルの ebXML ビジネス トランザクションの送信側および受信側でのワークフローの実装についても説明します。ワークフローの主要な設計要素、タスク、およびイベントは、特に詳しく説明されています。
リポジトリ データのロード
トレーディング パートナを統合するためにサンプルで必要なデータは、サンプルの設定(ebXML サンプルの実行参照)時に RunSamples スクリプトを実行したときに、WebLogic Integration リポジトリにバルク ロードされます。
RunSamples スクリプトは、以下の XML ファイルに格納された B2B コンフィグレーション データをリポジトリにロードします。
c:¥bea¥weblogic700¥integration¥dbscripts
SystemRepData.xml ファイルには、システム データが格納されています。このサンプルで使用する要素は、次のとおりです。
この BulkLoaderData.xml ファイルには、ebXML サンプルに固有のデータが格納されています。このファイルでは、次の要素を記述します。
リポジトリ データについて
この節では、ebXML サンプル アプリケーション用として WebLogic Integration リポジトリにバルク ロードされるデータ要素に関して特に重要な情報を取り上げます。
SystemRepData.xml ファイルおよび BulkLoaderData.xml ファイルのデータは、サンプル アプリケーションをサポートするため、WebLogic Integration リポジトリにインポートされます。ebXML アプリケーションをコンフィグレーションする際、コンフィグレーションデータは、バルク ロードすることも、WebLogic Integration B2B Console を使用して入力することもできます。また、B2B Console を使用して、バルク ロードしたデータにアクセスしたり、コンフィグレーションしたりすることができます。E ビジネス トランザクションに必要なWebLogic Integrationデータのコンフィグレーションの詳細については、『B2B Integration ebXML の実装』の「ebXML の管理」を参照してください。
ビジネス プロトコル定義
SystemRepData.xml ファイルには、ebXML をはじめとする、WebLogic Integration がサポートするすべてのビジネス プロトコルの定義が格納されています。SystemRepData.xml ファイルの以下の抜粋に、ebXML ビジネス プロトコル定義が示されています。
コード リスト 7-1 ebXML ビジネス プロトコル 定義
<business-protocol-definition
name="ebXML"
business-protocol-name="ebXML"
protocol-version="1.0"
endpoint-type="PEER">
<java-class>com.bea.b2b.protocol.ebxml.EBXMLProtocol
</java-class>
<decoder>EBXML-Decoder</decoder>
<encoder>EBXML-Encoder</encoder>
</business-protocol-definition>
ロジック プラグイン
ロジック プラグインは、実行時にビジネス メッセージをインターセプトして処理する Java クラスです。各ビジネス プロトコルは、標準のルータおよびフィルタ ロジック プラグインに関連付けられています。SystemRepData.xml ファイルには、XOCP、RosettaNet、cXML の各ビジネス プロトコル用のロジック プラグインが格納されています。このサンプルでは、次の ebXML ロジック プラグインのみを使用します。
SystemRepData.xml ファイルの以下の抜粋には、ebXML エンコーダおよびデコーダのロジック プラグインが示されています。
コード リスト 7-2 ebXML ロジック プラグイン定義
<logic-plugin
name="EBXML-Decoder"
type="decoder">
<java-class>com.bea.b2b.protocol.ebxml.EBXMLDecoder
</java-class>
</logic-plugin>
<logic-plugin
name="EBXML-Encoder"
type="encoder">
<java-class>com.bea.b2b.protocol.ebxml.EBXMLEncoder
</java-class>
</logic-plugin>
トレーディング パートナ
ebXML サンプルでは、バイヤとサプライヤという 2 つのビジネス パートナが設定されています。WebLogic Integration 環境では、各ビジネス パートナごとにトレーディング パートナをコンフィグレーションする必要があります。この場合、BulkLoaderData.xml ファイルで ebXML - sender と ebXML - receiver という 2 つのトレーディング パートナがコンフィグレーションされています。コンフィグレーション要素、属性、およびこれらのトレーディング パートナに関連付けられた下位要素については、以下のファイルを参照してください。
SAMPLES_HOME¥samples¥ebxml¥lib¥BulkLoaderData.xml
SAMPLES_HOME は、WebLogic Platform のサンプル ディレクトリを表しています。
会話定義
BulkLoaderData.xml ファイルには、ebXML ベースの Query Price and Availability (QPA) 会話の会話定義が格納されています。その会話定義の名前は、ebxmlQPA です。この定義には、開始者と参加者という、2 つのロールが含まれています。ebXML ビジネス プロトコルでは、すべての会話定義は、開始者と参加者という定義済みの名前を持つ 2 つのロールを参照します。
次のリストは、BulkLoaderData.xml ファイルの抜粋です。ここでは、ebXMLQPA 会話を定義しています。
コード リスト 7-3 BulkLoaderData.xml ファイルの会話定義
<conversation-definition
name="ebxmlQPA"
version="1.0"
business-protocol-name="ebXML"
protocol-version="1.0">
<role
name="Initiator">
</role>
<role
name="Participant">
</role>
</conversation-definition>
コラボレーション アグリーメント
BulkLoaderData.xml ファイルには、このサンプル用の ebxml-sender トレーディング パートナおよび ebxml-receiver トレーディング パートナが使用するコラボレーション アグリーメントが格納されています。次の図は、このサンプル アプリケーションでのトレーディング パートナ間の関係、コラボレーション アグリーメントにかかわるパーティ、会話に対して定義されているロールを示しています。
図7-5 QPA 会話のトレーディング パートナ間のコラボレーション アグリーメント
次のリストは、BulkLoaderData.xml ファイルの抜粋です。ebxml-QPA-CA コラボレーション アグリーメントの要素を示しています。 コード リスト 7-4 BulkLoaderData.xml ファイルのコラボレーション アグリーメント ワークフローについて このサンプル QPA 会話では、2 つのワークフローが、開始者と参加者のロールで 2 つのトレーディング パートナによる ebXML メッセージの交換を管理します。これらのワークフロー(ebXMLConversationInitiator および ebXMLConversationResponder)は、サンプルの設定(ebXML サンプルの実行参照)時に RunSamples スクリプトを実行したときに、WebLogic Integration リポジトリにバルク ロードされます。 この節では、以下のトピックを取り上げます。
<collaboration-agreement
name="ebxml-QPA-CA"
version="1.0"
status="ENABLED"
global-identifier="sachin/172.16.15.113:2423d2:
ea8fe66b8f:-8000"
conversation-definition-name="ebxmlQPA"
conversation-definition-version="1.0">
<party
trading-partner-name="ebxml-sender"
party-identifier-name="sender-party"
delivery-channel-name="sender-dc"
role-name="Initiator"/>
<party
trading-partner-name="ebxml-receiver"
party-identifier-name="receiver-party"
delivery-channel-name="receiver-dc"
role-name="Participant"/>
</collaboration-agreement>
WebLogic Integration Studio の使い方
WebLogic Integration Studio を使用すると、新しいワークフローを設計したり、見慣れたフローチャートを使用して進行中のワークフローをモニタしたりすることができます。ebXML サンプルを実行する場合に Studio を実行する必要はありませんが、ワークフローまたはワークフロー ノードの詳細を表示したり、このサンプルに関するノードの定義およびコンフィグレーションを調べる場合には Studio が役立ちます。
Studio を起動するには、プラットフォームに合わせて適切な手順を実行します。
[スタート|プログラム|BEA WebLogic Platform 7.0|WebLogic Integration 7.0|Studio] を選択します。
b. Studio にログオンします(ユーザ名 : wlpisystem、パスワード : wlpisystem)。
a. コマンド ウィンドウを開きます。
b. WebLogic Integration ディレクトリ(WebLogic Integration をインストールしたディレクトリ)に移動し、setenv スクリプトを実行して、最上位の WebLogic 環境変数を設定します。たとえば、WebLogic Integration が c:¥bea ディレクトリにインストールされている場合は、以下のように入力します。
cd c:¥bea¥weblogic700¥integration
setEnv
c. WebLogic Integration インストール ディレクトリの下の bin ディレクトリに移動します。
cd bin
d. 次のように入力して Studio を開きます。
studio
e. ユーザ名およびパスワードとして、wlpisystem を使用して Studio にログオンします。
cd /home/me/bea/integration
. ./setenv.sh
cd bin
. ./studio
Studio を起動し、以下の手順を実行することで、ワークフロー テンプレートおよびそのプロパティを表示できます。
Studio のツールおよび機能の詳細については、『WebLogic Integration Studio ユーザーズ ガイド』を参照してください。
ebXMLConversationInitiator ワークフローについて
この節では、ebXML サンプル シナリオにおける QPA 会話のバイヤ側を管理するワークフローについて説明します。次の図は、Studio での ebXMLConversationInitiator ワークフロー テンプレートを示しています。
図7-6 ebXMLConversationInitiator ワークフロー テンプレート
以下の節では、上の図に示した ebXMLConversationInitiator ワークフロー テンプレートの以下のノードの主要なタスクおよびイベントについて定義します。
開始
サンプル実行時に、QPA 要求が、HTML Web フォームの入力(図7-3参照)に基づいて、XML として作成されます。XML が、JSP( ebXML_Sample.jsp)を使用して、JMS キューに送信されます。
ebXML_Sample.jsp ファイルは、次のディレクトリ(SAMPLES_HOME は WebLogic Platform のサンプル ディレクトリ)にあります。
SAMPLES_HOME¥integration¥config¥samples¥applications¥DefaultWebApp_myserver
開始ノードは、JMS キューから XML イベントを受信したときに、この ebXMLConversationInitiator ワークフローを開始する設計になっています。次の図に、開始ノードの [開始のプロパティ] ダイアログ ボックスを示します。
図7-7 [開始のプロパティ] ダイアログ ボックス
注意: この開始メソッドを、ebXMLConversationResponder ワークフローの開始ノードに対して定義されている開始メソッド(開始参照)と対比してください。
開始ノードは、XPath 式を使用しているメッセージを抽出し、データをワークフロー変数(ProductID、ProductQuantity、および ProductUnitPrice)に格納します。
Build XML Message Attachment
このタスク ノードでは、outXMLAttach ワークフロー変数が設定されます。この変数には、ebXML メッセージ ペイロードの一環として、サプライヤのワークフロー(ebXMLConversationResponder)に送信される QPA要求 XML メッセージ(ebXMLQPARequest)が保持されています(詳細は、このワークフローの次のノードを参照)。
ebXML メッセージの送信
このタスク ノードで定義されているアクションが、QPA 会話の最初の ebXML メッセージを送信します。ebXMLConversationInitiator ワークフローは、ebXML ベースの会話用に設計されているので、このタスク ノードでは ebXML メッセージのアクション(BPM への ebXML プラグインが提供)を使用します。
Studio で Send ebXML Message アクションを定義するには、次の手順に従います。
このサンプル ノードに対して指定されている [ebXML メッセージの送信] プロパティを表示するには、次の手順に従います。
図7-8 [ebXML メッセージの送信] ダイアログ ボックス
この図の以下の [ebXML メッセージの送信] プロパティに注意してください。
注意: このフィールドの値は、引用符で囲むことが必要です。
注意: このフィールドの値は、引用符で囲むことが必要です。
メッセージは、このノードでは非同期的に送信されます。すなわち、[タスクのプロパティ] ダイアログ ボックスの [アクション|アクティブ時] タブでは、以下のアクションは記載の順序で指定されています。
Receive ebXML Response
このイベント ノードのワークフローでは、ebXMLConversationResponder ワークフローからの指定した ebXML イベントを待機します。次の図に示す [イベントのプロパティ] ダイアログ ボックスでは、[ebXML イベント] が選択されています。
図7-9 [イベントのプロパティ] ダイアログ ボックス
ebXML イベントが受信されると、メッセージ エンベロープは、エンベロープ変数(この場合は inEnvelope )に格納され、ペイロードは、XML 変数またはバイナリ変数のいずれか適切な方に格納されます。この場合、ペイロードには、添付ファイルが 2 つ(XMLとバイナリの添付ファイルが 1 つずつ)あります。それらは、それぞれ、inXMLAttach変数、inBinAttach 変数に割り当てられています。 Write Out Binary Attachment このタスク ノードでは、着信QPA 応答 XML ドキュメント(ebXMLQPAResponse)からイメージ ファイルの名前を抽出する Set Workflow Variable アクションを最初に定義し、その名前を imageFileName ワークフロー変数に割り当てます。Set Workflow Variable アクションは、次の XPath 式を使用してこれらのタスクを実行します。 以降は、ビジネス オペレーション(ebXMLSavePictureToWebApp)を使用するアクションがこのノードで定義されます。このアクションは、着信 ebXML メッセージのバイナリ添付ファイルを次のディレクトリに保存します(SAMPLES_HOME は WebLogic Platform サンプル ディレクトリを表す)。 このローカル ファイルは JSP によって処理されます(この節で次に説明する Respond to JSP ノードを参照)。 このサンプルのビジネス オペレーションを確認するには、Studio のタスク メニューから [コンフィグレーション|ビジネス オペレーション] を選択します。[ビジネス オペレーション] ダイアログ ボックスにビジネス オペレーションのリストが表示されます。ビジネス オペレーションをダブルクリックすると、詳細を確認できます。ebXMLSavePictureToWebApp ビジネス オペレーションの Java クラスは、次の場所にあります(SAMPLES_HOME はWebLogic Platform のサンプル ディレクトリを表す)。 Respond to JSP このタスク ノードでは、Post XML Event アクションを定義します。このイベントをノードに対して定義するには、ノードをダブルクリックして [タスクのプロパティ] ダイアログ ボックスを表示し、[追加|統合アクション|XML イベントをポスト] を選択します。 このアクションは、応答メッセージからの XML メッセージ(前のノードで定義された inXMLAttach 変数)を内部 XML イベントとしてポストします。この XML イベントのポスト先である JMS キューは、[XML イベントをポスト] ダイアログ ボックスにある [送り先] タブで定義されます。 このノードの [XML イベントをポスト] ダイアログ ボックスを次の図に示します。 図7-10 [XML イベントをポスト] ダイアログ ボックスの [送り先] タブ
XPath("/ebXMLQPAResponse/ImageFileName/text()", $inXMLAttach))
SAMPLES_HOME¥integration¥config¥samples¥applications¥DefaultWebApp_myserver¥
SAMPLES_HOME¥integration¥samples¥ebxml¥src¥ebxmlsamples¥util¥EBXMLBizOp.java
上の図の [送り先] で、[JMS キュー] が選択されている点に注意してください。これは、メッセージが WebLogic Server でコンフィグレーションされた内部キューにポストされることを意味しています。引用符で囲まれたキューに対して、静的 JNDI 名または実行時にキュー名を決定する式を入力できます。この場合、内部 JMS キューの JNDI 名は、com.bea.wlpi.EventQueueExt です。 JMS キューからの XML メッセージは、ebXML_Sample.jsp ファイルによって使用されます。これは、図7-4 に示したように、サンプル実行時に、QPA 応答メッセージの内容をブラウザに表示するファイルです。 ebXML_Sample.jsp ファイルは、次のディレクトリ(SAMPLES_HOME は WebLogic Platform のサンプル ディレクトリ)にあります。 完了 ワークフローの終了を示します。ebXML ベースの会話は、両方のトレーディング パートナにとって ebXML メッセージの交換が完了した時点で終了します。 この動作を、XOCP ビジネス プロトコルの場合と比較してください。WebLogic Integrationでは、XOCP 会話管理サービスをサポートしています。すなわち、会話を開始するワークフローは、会話の終了および会話に参加している各ワークフローへの会話終了メッセージの送信も担当します(『B2B Integration ワークフローの作成』の「協調的ワークフローの終了」を参照)。 XOCP 会話の場合は、会話終了プロパティを定義するには、会話を開始したワークフローの完了ノードで、[カスタム] オプションを選択しますが、ebXML ベースの会話はこの方法では終了しません。たとえば、この完了ノードに対して [カスタム] オプションは選択されていません。 ebXMLConversationResponder ワークフローについて この節では、この ebXML サンプル シナリオにおける QPA 会話のサプライヤ側を管理するワークフローについて説明します。次の図は、Studio での ebXMLConversationResponder ワークフロー テンプレートを示しています。 図7-11 ebXMLConversationResponder ワークフロー テンプレート
SAMPLES_HOME¥integration¥config¥samples¥applications¥DefaultWebApp_myserver
以下の節では、上の図に示した ebXMLConversationResponder ワークフロー テンプレートの以下のノードの主要なタスクおよびイベントについて定義します。
開始
この ebXMLConversationResponder ワークフローは、ebXML ベースの会話での参加者ロールを担当するトレーディング パートナ用に設計されています。このワークフローは、トレーディング パートナから ebXML メッセージを受信した時点で開始します。Studio では、ebXML 会話における参加者ロールのワークフローの設計をサポートするため、開始ノードに ebXML 固有のオプションが用意されています。次の図に [開始のプロパティ] ダイアログ ボックスを示します。
図7-12 [開始のプロパティ] ダイアログ ボックス
注意: この開始メソッドを、ebXMLConversationInitiator ワークフローの開始ノードに対して定義されている開始メソッド(開始参照)と対比してください。
Perform Message Processing
このタスク ノードは、着信 ebXML メッセージを処理します。ワークフロー変数を設定するアクションおよびビジネス オペレーションを実行するアクションが定義されています。
XPath 式により、製品 ID、数量、単価が着信 QPA ebXML メッセージから抽出され、ProductID、ProductQuantity、およびProductUnitPrice の各ワークフロー変数に対して日付が割り当てられます。
このノードでは以下のビジネス オペレーションが実行されます。
このサンプルのビジネス オペレーションを確認するには、Studio のタスク メニューから [コンフィグレーション|ビジネス オペレーション] を選択します。[ビジネス オペレーション] ダイアログ ボックスが表示されます。ビジネス オペレーションのリストが表示されます。ビジネス オペレーションをダブルクリックすると、詳細が確認できます。
ebXMLGetQPAReply および ebXMLGetPictureForProductID ビジネス オペレーションの Java クラスは、次の場所にあります(SAMPLES_HOME はWebLogic Platform のサンプル ディレクトリを表す)。
SAMPLES_HOME¥samples¥integration¥samples¥ebxml¥src¥ebxmlsamples¥util¥EBXMLBizOp.java
file to binary ビジネス オペレーションの Java クラスは、次の場所にあります。SAMPLES_HOME はWebLogic Platform のサンプル ディレクトリを表します。
SAMPLES_HOME¥samples¥integration¥samples¥wlis¥src¥examples¥wlis¥common¥util¥Utils.java
ebXML 応答の送信
このタスク ノードでは、このトレーディング パートナが QPA 会話で受信した ebXML メッセージに応答する ebXML メッセージを送信するアクションが定義されています。ebXMLConversationResponder ワークフローは、ebXML ベースの会話用に設計されているので、このタスク ノードでは ebXML メッセージのアクション(BPM への ebXML プラグインが提供)を使用します。
Studio で [ebXML メッセージの送信] アクションを定義するには、次の手順に従います。
このサンプル ノードに対して指定されている [ebXML メッセージの送信] プロパティを表示するには、次の手順に従います。
図7-13 [ebXML メッセージの送信] ダイアログ ボックス
上の図で、 ebXML サンプルのタスク ノードの以下のプロパティに注目してください。
[関連する会話] が選択されている場合、会話名、送信者のビジネス ID、または受信者のビジネス ID などの属性は、システムによって前のメッセージ交換から取得されるため、それらを指定する必要はありません。[新規の会話] オプションの使用法の詳細については、ebXML メッセージの送信を参照してください。
完了
ワークフローの終了を示します。ebXML メッセージを交換するワークフローにおける完了ノードの詳細については、完了の ebXMLConversationInitiator ワークフロー用の完了ノードについての説明を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |