トレーディング パートナのチュートリアル
チュートリアル : RosettaNet ソリューションの構築
このトピックでは、BEA WebLogic Integration でトレーディング パートナ統合に RosettaNet ソリューションを実装する方法について説明します。内容は以下のとおりです。
RosettaNet は、企業がインターネット経由でビジネスを遂行するためのビジネス プロトコルです。RosettaNet の詳細については、http://www.rosettanet.org を参照してください。
チュートリアルの目的
このチュートリアルの目的は以下のとおりです。
ほとんどの PIP 実装の基礎となる、2 つの一般的な RosettaNet 設計パターン (非同期シングル アクション アクティビティと非同期ダブル アクション アクティビティ - ともにインタラクションの失敗通知あり) について説明すること。
2 つの RosettaNet パートナ インタフェース プロセス (PIP)、つまり PIP 3B2 (非同期シングル アクション アクティビティ) と 3A4 (非同期ダブル アクション アクティビティ) を実装するサンプル WebLogic Workshop パブリック ビジネス プロセスについて説明すること。
バックエンド システムとの統合を表すスタブであるサンプル プライベート ビジネス プロセスについて説明すること。
サンプル XML データを使用してサンプル PIP を実行する方法について説明し、実行時に確認できるようにすること。
提供されている PIP 実装を開始点として使用し、その他の PIP のビジネス プロセスを簡単に実装する方法について説明すること。
始める前に
ここでは、このチュートリアルを使用する前に実行する必要があるタスクについて説明します。内容は以下のとおりです。
前提条件
このチュートリアルを使用するには、以下が必要です。
参考資料
WebLogic Integration で RosettaNet ソリューションを実装する方法について理解を深めるには、次の資料に目を通してください。
WebLogic Workshop でビジネス プロセスを構築する方法とデータ トランスフォーメーションを作成する方法について学習するには、次のチュートリアルを修了してください。
RosettaNet ビジネス プロトコルの詳細や RosettaNet ソリューションの実装方法については、以下の情報を参照してください。
RosettaNet W3C XSD スキーマの取得に関する注意事項
選択した PIP の RosettaNet W3C XSD スキーマは、RosettaNet Self-Test Kit (STK) に含まれています。これは、RosettaNet Web サイトの「Developer Tools」領域からダウンロードできます (http://www.rosettanet.org)。
使用している PIP のスキーマがこの Web サイトにない場合は、DTD ファイルとして指定した RosettaNet メッセージ定義を使用して RosettaNet ソリューションを WebLogic Integration に実装できます。ただし、XQuery マッピング ツール (データ トランスフォーメーションの定義に使用) など WebLogic Integration の多数のツールでは XSD スキーマしかサポートされないため、W3C XSD ファイルの使用をお勧めします。
グラフィカルな XQuery マッピング ツールを使用する場合は、XML Spy Enterprise Edition のようなツールを使用し、RosettaNet DTD ファイルを W3C XSD ファイルに変換してから、XSD ファイルをプロジェクトにインポートする必要があります。DTD ファイルを変換している PIP について RosettaNet メッセージ ガイドラインを参照し、変換後にサービス内容検証の適切な検証ルールを XSD ファイルに追加してください。XML Spy を使用したファイル変換方法については、「RosettaNet DTD スキーマの XSD スキーマへの変換」を参照してください。
このチュートリアルでは、サンプルを完了するために必要なすべての XSD はチュートリアル ファイルに含まれています。
チュートリアルの概要
RosettaNet サンプルには、WebLogic Integration 8.1 を使用して RosettaNet PIP を実装する方法について説明する、ビジネス プロセス定義 (JPD)、スキーマ、その他のファイルが含まれています。サンプル ビジネス プロセス ファイルでは、一般的な設計パターンが実装されており、RosettaNet 会話の開始者ビジネス プロセスと参加者ビジネス プロセスの構築をすぐに始められるようになっています。ビジネス プロセスを最初から構築する代わりに、サンプル ファイルを適合することで簡単に PIP を実装できます。
このトピックでは、次の節について説明します。
このチュートリアルで実装されている PIP は、RosettaNet Implementation Framework (RNIF) 2.0 に準拠しています。
このサンプルで実装されている PIP
このチュートリアルで提供される RosettaNet サンプルについて、次の表で説明します。
RosettaNet チュートリアル アプリケーションのフォルダ
以下の表は、\tptutorialapps\rosettanet
ディレクトリを開いたときに [アプリケーション] タブに表示されるフォルダを示しています。
表 2-2 \tptutorialapps\rosettanet
のフォルダ
ディレクトリ
|
説明
|
PIP0A1Schema
|
PIP0A1 スキーマのスキーマ プロジェクト。
|
PIP3A4Schema
|
PIP3A4 スキーマのスキーマ プロジェクト。
|
PIP3B2Schema
|
PIP3B2 スキーマのスキーマ プロジェクト。
|
pips
|
それぞれのサンプル PIP 実装 (PIP0A1Processes 、PIP3A4Processes 、PIP3B2Processes )、およびプライベート管理者警告通知 (privateAdmin ) のビジネス プロセス フォルダを含む。
|
System
|
標準 BEA WebLogic Integration システム スキーマのスキーマ プロジェクト。
|
Modules
|
デフォルトでは空。コンパイル済み Java コードの標準 WebLogic Workshop フォルダ。
|
Libraries
|
デフォルトでは空。コンパイル済み Java コードの標準 WebLogic Workshop フォルダ。
|
Security Roles
|
デフォルトでは空。このアプリケーションのセキュリティ ロールを定義する標準 WebLogic Workshop フォルダ。
|
RosettaNet 設計パターン
RosettaNet PIP は、次の設計パターンのうちいずれかに従っています。
表 2-3 RosettaNet PIP 設計パターン
ディレクトリ
|
説明
|
非同期シングルアクション アクティビティ
|
シングル アクション メッセージと確認応答の受信が関連する。
この設計パターンを実装した PIP3B2 (配送通知) サンプルについては、「手順 3 : PIP3B2 : 配送通知サンプルのオープン」で説明する。
|
非同期ダブルアクション アクティビティ
|
両方のトレーディング パートナのアクション メッセージと確認応答の受信が関連する。
この設計パターンを実装した PIP3A4 (注文要求) サンプルについては、「手順 4 : PIP3A4 : 注文要求サンプルのオープン」で説明する。
|
同期シングル アクション アクティビティと同期ダブル アクション アクティビティ
|
上の設計パターンの同期バージョンであり、すぐに応答が必要になる。現行リリースの BEA WebLogic Integration では、同期設計パターンをサポートしていません。
注意 : 通常、同期 RosettaNet 設計パターンでは、非同期シングル アクション設計パターンと非同期ダブル アクション設計パターンで説明した確認応答の受信は実装されません。
|
このチュートリアルで提供されるサンプル PIP 実装では、「サンプル PIP に基づいた、新しい PIP の実装」で説明するように、同じ設計パターンに従った、任意の PIP を迅速かつ簡単に構築できます。
RosettaNet 設計パターンと会話の構成については、次の文書を参照してください。
チュートリアル手順
この節では、以下のチュートリアル手順について説明します。
この手順を進める前に、「始める前に」の内容を確認してください。
手順 1 : RosettaNet サンプル アプリケーションのオープン
RosettaNet サンプル アプリケーションには、「このサンプルで実装されている PIP」で説明する、すべての PIP 実装が含まれています。
RosettaNet サンプル アプリケーションを開くには
WebLogic Workshop をまだ起動していない場合は、起動します。
[ファイル] メニューから [開く|アプリケーション] を選択します。
rosettanet.work
ファイルを開きます。
注意 : WebLogic Integration のドメインとサーバを選択するように求められた場合は、「手順 1 : 新しい WebLgic Integration ドメインの作成」で作成した WebLogic Integration ドメイン (c:\bea\user_projects\domains\tptutorial
など) を選択します。
「RosettaNet チュートリアル アプリケーションのフォルダ」で説明する RosettaNet チュートリアル アプリケーションの内容が、[アプリケーション] タブに表示されます。
[アプリケーション] タブで、ルート rosettanet
フォルダを右クリックし、[プロパティ] を選択します。
[アプリケーション] タブで、ルートの rosettanet
フォルダを選択し、[ビルド|アプリケーションのビルド] を選択して (または〔F7〕を押して)、アプリケーションをビルドします。
注意 : ビルドを行うタブにコンパイルに関する緑色の警告が表示されることがあります。このような警告は無視してください。サンプルは正常に実行されます。
[アプリケーション] タブで pips
フォルダをダブルクリックします。サンプル ビジネス プロセスを含むフォルダが表示されます。
手順 2 : PIP0A1 : 障害通知サンプルのオープン
このトピックでは、PIP0A1 : 障害通知の実装サンプルについて説明します。内容は以下のとおりです。
PIP0A1 の詳細については、http://www.rosettanet.org を参照してください。
PIP0A1 サンプルについて
PIP0A1 は、PIP0A1 障害通知の実装方法を示すサンプルです。 PIP0A1Processes
フォルダには、PIP0A1 のビジネス プロセス定義が含まれています。 PIP0A1Schemas
スキーマ プロジェクトには、PIP0A1 メッセージのスキーマ ファイルが含まれています。
PIP0A1 では、ビジネス ロジックの設定方法、エラー メッセージの適切な処理方法、およびビジネス ロジックとエラー メッセージに基づいて、障害通知を適切な障害管理者に送信するための正しいチャネルを開く方法を示します。このチュートリアルの PIP0A1 障害通知のシナリオは以下のとおりです。
PIP 3A4 サンプルの購入者側が、注文書が構文的に正しいと判断し、確認応答を送信しました。ただし、プライベート プロセスの処理中に、注文書応答の誤りまたはエラーが見つかります。Seller プロセスのインスタンスは完了しているため、誤りまたはエラーについて販売者に通知するために PIP0A1 の新しいインスタンスが開始されます。
PIP3B2 の受取人側は、プライベート プロセスで配送通知の誤りまたはエラーを見つけます。ただし、参加者側は、出荷者の配送通知を構文的に確認した後ですでに確認応答を送信済みです。出荷者のインスタンスは確認応答を受信したときに完了しているため、誤りまたはエラーについて出荷者に通知するために PIP0A1 の新しいインスタンスが開始されます。
注意 : デモンストレーション用に、このチュートリアルの例に示すビジネス プロセスは、障害通知をトリガするように意図的にコンフィグレーションされています。
以下の手順では、PIP A01 ビジネス ロジックの概要を説明します。
PIP0A1 障害通知者ビジネス プロセス (PIP0A1.jpd
) は、PIP3A4 販売者側または PIP3B2 受取人側から障害通知要求を受け取ります。
障害通知者は、障害通知要求を処理し、障害通知メッセージを適切なレポート管理者 (この場合は PIP0A1ReportAdmin.jpd
) に送信します。また、障害通知者プロセスは WebLogic Server Console に通知を表示して、メッセージを送信したことを示します。
レポート管理者プロセスは、障害通知メッセージを検証し、確認応答を障害通知者に送信します。また、このプロセスも WebLogic Server Console に通知を表示して、メッセージを受信したことを示します。
PIP0A1 サンプルのコンポーネント
WebLogic Workshop で PIP0A1Processes
フォルダを開くと、[アプリケーション] タブにフォルダの内容が表示されます。
次の表では、PIP0A1 サンプルのコンポーネントについて概説します。
表 2-4 PIP0A1 : 障害通知のサンプルのコンポーネント
ロール/コンポーネント
|
説明
|
PIPA01.jpd
|
PIP3A4 開始者または PIP3B2 参加者から障害通知を受信する開始者ビジネス プロセス。RosettaNet コントロールのインスタンスを使用して障害通知を障害管理者ビジネス プロセスに送信する。
|
Rn.jcx
|
障害管理者ビジネス プロセスとメッセージを交換するための RosettaNet コントロール定義ファイル。RosettaNet コントロールの詳細については、WebLogic Workshop オンライン ヘルプの「RosettaNet コントロール」を参照。
|
PIPA01Control.jcx
|
別のプロセスで使用する PIPA01.jpd をラップするプロセス コントロールの定義ファイル。[アプリケーション] タブで PIPA01.jpd ファイルを右クリックし、[Process コントロールの生成] を選択すると、自動的に生成される。
|
PIP0A1ReportAdmin.jpd
|
エラー メッセージと通知を処理するために使用されるバック エンド ビジネス ロジックを表すビジネス プロセス。
|
PIP0A1Transformation.dtf
|
XQuery を生成するために使用されるトランスフォーメーション コントロール定義ファイル。トランスフォーメーションと XQuery の詳細については、「データ トランスフォーメーション ガイド」 を参照してください。
|
getStaticProperties.xq
|
Control Send with Return ノード (getStaticProp) がコンフィグレーションされたときに生成された XQuery。
|
getFailureNotificationDoc.xq
|
Control Send with Return ノード (getFailureNotificationDoc) がコンフィグレーションされたときに生成された XQuery。
|
サンプル データ
|
RosettaNet メッセージ ガイドラインで提案されている典型的な要素とデータを示すサンプルの XML データを含むディレクトリ。
注意 : サンプルの実行に使用する入力は XQuery を介して生成されるため、このディレクトリのデータはこのチュートリアルでは使用しません。
|
障害通知者ビジネス プロセスの説明
この節では、サンプル開始者ビジネス プロセス (PIP0A1.jpd
) について説明します。このビジネス プロセスを表示するには、以下を実行します。
WebLogic Workshop の [アプリケーション] タブで、PIP0A1Processes
フォルダを開きます。
PIP0A1.jpd
ファイルをダブルクリックします。
必要である場合は、Retry block パスを折り畳み、メイン (正常) パスのみを表示します。
正常プロセス パス
ビジネス プロセスの正常パスは以下のとおりです。
Client Request ノード (Start) が、障害通知メッセージを受信します。
Control Send with Return ノード (getStaticProperties) が、受信メッセージから RosettaNet Context
プロパティを抽出します。RosettaNet Context
の詳細については、「RosettaNetControl インタフェース」を参照してください。
Control Send ノード (setProperties) は、抽出したプロパティを PIP0A1 スキーマに基づいてドキュメントにマッピングします。
Control Send with Return ノード (getFailureNotificationDoc) は、PIPA01 トランスフォーメーション クエリを使用して、RosettaNet
Context
プロパティを PIPA01 スキーマに基づいてドキュメントにマッピングします。
マッピングされたフィールドを表示するには、[アプリケーション] タブで getFailureNotificationDoc.xq
ファイルをダブルクリックします。
Perform ノード (setDoctype) が、DOCTYPE DTD 値をトランスフォーメーション出力に設定します。
注意 : デフォルトの WebLogic Integration トランスフォーメーション出力には DOCTYPE プロパティがないため、この手順が必要です。
Retry block という名前のグループには、Control Send ノード (Send Notification of Failure) と Control Receive ノード (Receipt acknowledgement) が含まれます。このブロックは、障害通知を PIP0A1ReportAdmin
ビジネス プロセスに送信し、メッセージの受信確認を待機します。
この例では、デモンストレーションとして、Send Notification of Failure ノードから PIP0A1ReportAdmin
プロセスにメッセージを送信した後、同じメッセージを WebLogic Server Console にも出力します。
ビジネス プロセスの最後の Client Response ノードは、障害通知メッセージが PIP0A1ReportAdmin
ビジネス プロセスに送信された後に実行する任意のビジネス ロジックのためのプレースホルダです。
障害パス
OnTimeout パスでは、ネットワーク障害が発生した場合などの障害管理が処理されます。障害パスを表示するには、以下を実行します。
Retry block という名前のノード グループの横にある OnTimeout パスを展開します。
このパスは、標準的な BPM OnTimeout 構成を表します。タイムアウト値は、2 時間 (標準的な PIP 再試行間隔)、および 3 回の再試行回数 (標準的な PIP 再試行回数) に設定されています。このため、何らかの理由により、応答が 2 時間以内に届かなかった場合は、そのグループが再試行され、sendNotification of Failure ステップが再度実行されます。OnTimeout パスには、再試行回数が使い果たされたかどうかを判断する条件が含まれており、使い果たされた場合は、適切なアクションを実行するロジックをパスに追加することができます。
レポート管理者ビジネス プロセスの説明
PIP0A1 サンプルの参加者ビジネス プロセスの名前は PIPA01ReportAdmin.jpd
です。WebLogic Workshop で参加者ビジネス プロセスを表示するには、[アプリケーション] タブで PIPA01ReportAdmin.jpd
をダブルクリックします。
レポート管理者ビジネス プロセスは、以下の手順で構成されています。
障害通知メッセージが、Client Request ノード (Receive NoF) に届きます。
Perform ノード (Print NOF on System Console) が、WebLogic Server Console ウィンドウに受信確認を出力します。このノードは、PIP0A1 レポート管理者ビジネス プロセスで実行される任意のビジネス ロジックのためのプレースホルダです (プロダクション モードで使用されます)。
Client Response ノード (Send NoF Receipt Acknowledgment) が、障害通知者プロセスに確認応答を送信します。
このチュートリアルの以下の 2 つのサンプルでは、PIP0A1 障害通知サンプルが利用されています。サンプルの動作を確認するには、「PIP3B2 サンプルの実行」または「PIP3A4 サンプルの実行」を実行してください。
手順 3 : PIP3B2 : 配送通知サンプルのオープン
このトピックでは、PIP3B2 : 配送通知のサンプル実装について説明します。内容は以下のとおりです。
PIP3B2 の詳細については、http://www.rosettanet.org を参照してください。
PIP3B2 サンプルについて
PIP3B2 は、「RosettaNet 設計パターン」で説明した非同期シングル アクション アクティビティ設計パターンの例です。 PIP3B2Processes
フォルダには、PIP3B2 のビジネス プロセス定義が含まれています。 PIP3B2Schemas
スキーマ プロジェクトには、PIP3B2 メッセージのスキーマ ファイルが含まれています。sampledata
ディレクトリには、「PIP3B2 サンプルの実行」で使用できるサンプル XML ドキュメントが含まれています。
以下の手順では、PIP3B2 ビジネス ロジックの概要を説明します。
出荷者 (開始者プロセス PIP3B2.jpd
) は、配送通知メッセージを作成し、受取人 (参加者プロセス PIP3B2Participant.jpd
) に送信します。
受取人がメッセージを確認し、確認応答を出荷者に送信します。
受取人が、追加処理のために、メッセージをバックエンド システム (PIP3B2ParticipantPrivate.jpd
) に送信します。
バックエンド システムは処理中に問題を検出し、PIP0A1 サンプルを呼び出します。
PIP3B2 サンプルのコンポーネント
WebLogic Workshop で PIP3B2Processes
フォルダを開くと、[アプリケーション] タブにフォルダの内容が表示されます。
次の表では、PIP3B2 サンプルのコンポーネントについて概説します。
表 2-5 PIP3B2 : 配送通知サンプルのコンポーネント
ロール/コンポーネント
|
説明
|
出荷者 (開始者)
|
RosettaNet ロール名。
|
PIP3B2.jpd
|
メッセージを送信して確認応答を待機し、障害に対処するパブリック開始者ビジネス プロセス。RosettaNet コントロール インスタンス Rn.jcx を使用。
|
Rn.jcx
|
RNIF を通して受信者とメッセージを交換するために使用する RosettaNet コントロール定義ファイル。RosettaNet コントロールの詳細については、WebLogic Workshop オンライン ヘルプの「RosettaNet コントロール」を参照してください。
PIP3B2.jpd のこのコントロール インスタンスの注釈には、PIP 名、バージョン、およびロール名が含まれる。
|
PIP3B2Control.jcx
|
別のプロセスで使用する PIP3B2.jpd をラップするプロセス コントロールの定義ファイル。[アプリケーション] タブで PIP3B2.jpd ファイルを右クリックし、[Process コントロールの生成] を選択すると、自動的に生成される。
|
PIP3B2Private.jpd
|
プロセス コントロールで PIP3B2.jpd ビジネス プロセスを起動するプライベート ビジネス プロセス。
このプライベート ビジネス プロセスでは、BEA WebLogic Integration の完全な機能を利用し、バックエンド システムへのアクセス、情報の作成、PIP3B2 で必要となるデータ フォーマットへの要求データの変換を実行できる。
|
PIP3B2PrivateTransformation.dtf と PIP3B2PrivatepIP3B2ControlStart.xq (関連 .xq ファイル)
|
サンプル トランスフォーメーション ファイル。プロセス ノードでトランスフォーメーションを定義するときに、自動的に生成される。
|
PIP3B2PrivateTransformation.dtf と getStaticProperties.xq (関連 .xq ファイル)
|
サンプル トランスフォーメーション ファイル。プロセス ノードでトランスフォーメーションを定義するときに、自動的に生成される。
|
受取人 (参加者)
|
RosettaNet ロール名。
|
PIP3B2Participant.jpd
|
RNIF メッセージを受信し、確認応答を出荷者に送信するパブリック ビジネス プロセス。RosettaNet 注釈には、PIP 名、バージョン、ロールが含まれる。詳細については、WebLogic Workshop オンライン ヘルプの「@jpd:rosettanet 注釈」を参照。
|
PIP3B2ParticipantPrivate.jpd
|
出荷通知のバックエンド処理を表すプライベート ビジネス プロセス。
|
PIP3B2ParticipantPrivateControl.jcx
|
PIP3B2Participant.jpd で使用するプライベート プロセスをラップするプロセス コントロール。[アプリケーション] タブで PIP3B2ParticipantPrivate.jpd ファイルを右クリックし、[Process コントロールの生成] を選択すると、自動的に生成される。
|
出荷者ビジネス プロセスの説明
この節では、PIP3B2 のサンプル開始者ビジネス プロセス (PIP3B2.jpd
) について説明します。このビジネス プロセスを表示するには、以下を実行します。
WebLogic Workshop の [アプリケーション] タブで、PIP3B2Processes
フォルダをダブルクリックします。
PIP3B2.jpd
ファイルをダブルクリックします。
必要である場合は、OnTimeout パス、On Error Message パス、Set static properties for header グループ、および Retry block グループを折り畳み、メイン (正常) パスのみを表示します。
正常パス
正常パスは、ビジネス プロセスのメイン パスです。
Client Receive ノード (Start) は、配送通知 XML ドキュメント (このチュートリアルではクライアント要求はプライベート プロセスから送信される) を受け取るとプロセスを呼び出します。
Set static properties for header グループには、Control Send with Return ノード (getStaticProperties) と Control Send ノード (setProperties) が含まれています。これら 2 つのノードがメッセージから RosettaNet プロパティを抽出し、PIP3B2 スキーマに基づいてドキュメントにマッピングします。
Retry block グループには 2 つのノードが含まれています。Control Send ノード (sendMessage) は、RosettaNet コントロールの sendMessage
メソッドを使用して、メッセージを受取人 (参加者) に送信します。Control Receive ノード (Receipt acknowledgement) は、受取人からの確認応答コールバック (rn_onAck
メソッド) を待機します。
応答を受信したら、プロセスが Client Response ノード (Return Success) を使用してプライベート プロセスに応答します。
PIP3B2 では、シングル アクション アクティビティ設計パターンが実装されるので、受取人はビジネス アクションを返さず、ビジネス シグナル (確認応答または例外) のみを返します。正常に終了した場合には、応答のみがプライベート プロセスへ返され、データは返されません。
障害パス
OnTimeout パスと On Error Message パスでは、ネットワーク障害が発生した場合などの障害管理が処理されます。障害パスを表示するには、以下を実行します。
Retry block という名前のノード グループの横にある OnTimeout パスを展開します。
このパスは、標準的な BPM OnTimeout 構成を表します。タイムアウト値は、2 時間 (標準的な PIP 再試行間隔)、および 3 回の再試行回数 (標準的な PIP 再試行回数) に設定されています。このため、何らかの理由により、応答が 2 時間以内に届かなかった場合は、そのグループが再試行され、sendMessage
ステップが再度実行されます。OnTimeout パスには、再試行回数が使い果たされたかどうかを判断する条件が含まれており、再試行回数が使い果たされた場合は、PIP 0A1 (障害通知) サブプロセスが Control Send ノードでトリガされます。このプロセスは、プライベート プロセスにエラーで応答して終了します。
プロセスの最上位にある PIP3B2 ノードの横の On Error Message パスを展開します。
Global Process Timeout は、標準 PIP タイムアウト値の 24 時間にコンフィグレーションされています。プロセス全体がこの時間内に完了しない場合は、PIP0A1 (障害通知) サブプロセスがトリガされ、プライベート プロセスにエラーが返されます。
最後に、メッセージを検証できないなど、さまざまな理由により、受取人がメッセージを拒否することがあります。メッセージ拒否は、RosettaNet コントロールで、onError
コールバックとして表現されます。グローバル On Error Message ハンドラでは、いつでもエラーを受信する準備が整っており、エラーを受信した場合、このハンドラはサブプロセスを起動して問題について管理者に通知し、プライベート プロセスにエラーを返して終了します。ネットワークの問題などにより、メッセージを正常に送信できないと、ビジネス プロセスが PIP0A1 (障害通知) を起動し、問題についてリモート パートナに通知しようとすることに注意してください。同じように、受取人からエラーを受信すると、このビジネス プロセスは、ローカル管理者とリモート管理者に通知します。
受取人ビジネス プロセスの説明
WebLogic Workshop で参加者ビジネス プロセスを表示するには、PIP3B2Participant.jpd
ファイルを開きます。
参加者ビジネス プロセスは、以下のノードで構成されています。
Client Request ノード (Receive Advance Shipping Notice) が配送通知メッセージを受信します。
Decision ノード (Check if Notification of Advance Shipment) がメッセージを検証し、以下のいずれかを実行します。
メッセージが正しい場合は、Client Response ノード (Send receipt acknowledgement) を使用して確認応答を送信。
メッセージに問題がある場合は、Client Response ノード (send Exception) を使用してエラー メッセージを送信。
Invoke private process グループでは、Control Send ノード (processShipment) が追加処理のために配送通知をプライベート ビジネス プロセスに渡し、Control Receive ノード (get Private Response) がプライベート プロセスからの確認応答を待機します。
プライベート ビジネス プロセスの説明
両サイドのプライベート プロセスは、プロダクション環境でプロセスがバックエンド アプリケーションとやり取りするためのプレースホルダです。たとえば、アプリケーション ビュー コントロールと BEA アダプタで ERP アプリケーションに出荷通知を挿入し、メッセージ キューで送信してファイルかデータベースに書き込むことができます。
このサンプルで使用されているパブリック プロセス パターンとプライベート プロセス パターンは、必須ではなく、推奨される手法にすぎません。環境に合わせて、自由にプロセスを区分してください。プライベート プロセスを使用せず、必要なすべてのバックエンド統合、および RosettaNet 対話を単一プロセスで実装することも可能です。しかし、RosettaNet コレオグラフィのみに対処するパブリック、およびバックエンド システム統合に対処するプライベートにプロセスを分割すると、アプリケーションの再利用と保守が簡単になることがあります。
このサンプルでは、PIP3B2ParticipantPrivate.jpd
は、プロセスを実行すると、エラーをトリガして PIP0A1 サンプルを呼び出すように特別にコンフィグレーションされています。
PIP3B2 サンプルの実行
デフォルトの場合、BEA WebLogic Integration はテスト (開発) モードで動作します。このため、PIP3B2 サンプル ビジネス プロセスを同じマシン (併置) で実行できます。プロダクション環境では、それぞれのトレーディング パートナが、別々の BEA WebLogic Integration サーバでそれぞれのビジネス プロセスを実行します。テスト モードとプロダクション モードの詳細については、『WebLogic Integration ソリューションの管理』の「トレーディング パートナ管理」(http://edocs.beasys.co.jp/e-docs/wli/docs81/manage/tpm.html) の「モードとメッセージ トラッキングのコンフィグレーション」を参照してください。
PIP3B2 サンプルを実行するには
WebLogic Server が実行中でない場合は、起動します。起動するには、WebLogic Workshop メニューから [ツール|WebLogic Server|WebLogic Server の起動] を選択します。
WebLogic Server が動作している場合は、WebLogic Workshop ビジュアル開発環境の最下部にあるステータス バーに、次のインジケータが表示されます。
PIP3B2Participant.jpd
を開き、WebLogic Workshop メニューの
をクリックします。
アプリケーションがまだビルドされていない場合は、WebLogic Workshop によってプロジェクトがビルドされます。
注意 : ビルドを行うタブにコンパイルに関する緑色の警告が表示されることがあります。このような警告は無視してください。サンプルは正常に実行されます。
Web ブラウザが起動して Workshop のテスト ブラウザが表示されます。このブラウザからサンプルの入力値を使ってビジネス プロセスをテストすることができます。
注意 : アプリケーションがビルド プロセスを完了した後でテスト ブラウザのウィンドウが起動されるまでには、時間がかかることがあります。
テスト ブラウザから実際に実行しないでください。この手順は、参加者プロセスを「準備」するために必要な手順です。
WebLogic Workshop に戻り、PIP3B2Private.jpd
を開いて、WebLogic Workshop メニューの
をクリックします。
テスト ブラウザで、[参照] をクリックし、[ファイルの保存場所]\rosettanet\pips\PIP3B2Processes\sampledata\3B2AdvanceShipmentNotificationMessageBase.xml
にナビゲートします。
[ファイルの保存場所]
は「手順 3 : チュートリアル ファイルのインストール」でチュートリアル ファイルをインストールしたディレクトリです。
数秒で、エンドツーエンド コレオグラフィが実行されます。クライアント応答により、XML メッセージがエコーされます。WebLogic Server Console を起動します。
数秒で、以下のメッセージがコンソールに表示されます。
>>>>> PIP0A1.jpd: Sent Notification of Failure
>>>>> PIP0A1ReportAdmin.jpd: GOT Notification of Failure.
オプションで、BEA WebLogic Integration Administration Console を開き、メッセージ トラッキング エントリとプロセス トラッキング エントリを確認できます。
手順 4 : PIP3A4 : 注文要求サンプルのオープン
このトピックでは、PIP3A4 : 注文要求のサンプル実装について説明します。内容は以下のとおりです。
PIP3A4 の詳細については、http://www.rosettanet.org を参照してください。
PIP3A4 サンプルについて
PIP3A4 は、「RosettaNet 設計パターン」で説明した非同期ダブル アクション アクティビティ設計パターンの例です。 PIP3A4Processes
フォルダには、PIP3A4 のビジネス プロセス定義が含まれています。 PIP0A4Schemas
スキーマ プロジェクトには、PIP0A4 メッセージのスキーマ ファイルが含まれています。sampledata
ディレクトリには、「PIP3A4 サンプルの実行」で使用できるサンプル XML ドキュメントが含まれています。
PIP3A4 注文要求には、次の手順が含まれます。
購入者 (開始者) が、注文要求メッセージを作成し、販売者 (参加者) に送信します。
販売者がメッセージを確認し、確認応答を購入者に送信します。
販売者が、追加処理のために、メッセージをバックエンド システムに送信します。
販売者のバックエンド システムが注文確認 (要求された製品があること、および予想される出荷日を確認) を生成します。
購入者は、注文確認を追加処理のためにバックエンド システムに渡しますが、処理中にエラーを検出したため PIP A01 サンプルがトリガされます。
PIP3A4 サンプルのコンポーネント
WebLogic Workshop で PIP3A4Processes
フォルダを開くと、[アプリケーション] タブにフォルダの内容が表示されます。
次の表では、PIP3A4 サンプル実装のコンポーネントについて概説します。
表 2-6 PIP3A4 (注文要求) サンプルのコンポーネント
ロール/コンポーネント
|
説明
|
購入者 (開始者)
|
RosettaNet ロール名。
|
PIP3A4.jpd
|
販売者とメッセージを交換して確認応答を待機し、障害に対処するパブリック ビジネス プロセス。RosettaNet コントロール インスタンス Rn.jcx を使用。
|
Rn.jcx
|
RNIF を通して販売者とメッセージを交換するために使用する RosettaNet コントロール定義ファイル。RosettaNet コントロールの詳細については、WebLogic Workshop オンライン ヘルプの「RosettaNet コントロール」を参照してください。
PIP3A4.jpd のこのコントロール インスタンスの注釈には、PIP 名、バージョン、およびロール名が含まれる。
|
PIP3A4Control.jcx
|
別のプロセスで使用する PIP3A4.jpd をラップするプロセス コントロールの定義ファイル。[アプリケーション] タブで PIP3A4.jpd ファイルを右クリックし、[Process コントロールの生成] を選択すると、自動的に生成される。
|
PIP3A4Private.jpd
|
プロセス コントロールで PIP3A4 プロセスを起動するプライベート ビジネス プロセス。このビジネス プロセスでは、BEA WebLogic Integration の完全な機能を利用し、バックエンド システムへのアクセス、情報の作成、PIP3A4 で必要となるデータ フォーマットへの変換を実行できる。
|
PIP3A4PrivateTransformation.dtf と関連 .xq ファイル)
PIP3A4Transformation.dtf と関連 getStaticProperties.xq ファイル
|
サンプル トランスフォーメーション ファイル。プロセス ノードでトランスフォーメーションを定義するときに、自動的に生成される。
|
販売者 (参加者)
|
RosettaNet ロール名。
|
PIP3A4Participant.jpd
|
メッセージを受信して確認応答を送信し、メッセージで応答して確認応答を受信するパブリック ビジネス プロセス。RosettaNet 注釈には、PIP 名、バージョン、ロールが含まれる。詳細については、WebLogic Workshop オンライン ヘルプの「@jpd:rosettanet 注釈」を参照。
|
PIP3A4ParticipantPrivate.jpd
|
注文のバックエンド処理、および注文確認の作成を表すプライベート ビジネス プロセス。
|
fc.jcx
|
注文確認サンプル ファイルをローカル ファイル システムから読み取るために使用されるファイル コントロール定義ファイル。
|
PIP3A4ParticipantPrivateControl.jcx
|
PIP3A4Participant.jpd で使用するプライベート プロセスをラップするプロセス コントロール。[アプリケーション] タブで PIP3A4ParticipantPrivate.jpd ファイルを右クリックし、[Process コントロールの生成] を選択すると、自動的に生成される。
|
PIP3A4ParticipantTransformation.dtf と関連 getStaticProperties1.xq ファイル
|
サンプル トランスフォーメーション ファイル。プロセス ノードでトランスフォーメーションを定義するときに、自動的に生成される。
|
Seller ビジネス プロセスの説明
この節では、PIP 3A4 のサンプル開始者ビジネス プロセス (PIP3A4.jpd
) について説明します。このビジネス プロセスを表示するには、以下を実行します。
WebLogic Workshop で、PIP3A4.jpd
ファイルを開きます。
必要である場合は、OnTimeout パスと On Error Message パス、およびその他のグループを折り畳み、メイン (正常) パスのみを表示します。
正常パス
正常パスのビジネス ロジックは以下のとおりです。
Client Request ノード (Start) は、注文要求 XML ドキュメント メッセージを受信します (このチュートリアルではクライアント要求はプライベート プロセスから送信されます)。
Set properties that go into service header グループには、Control Send with Return ノード (getStaticProperties) と Control Send ノード (setProperties) が含まれています。これら 2 つのノードがメッセージから RosettaNet プロパティを抽出し、PIP3B2 スキーマに基づいてドキュメントにマッピングします。
Retry block グループには 2 つのノードが含まれています。Control Send ノード (sendMessage) は、RosettaNet コントロールの sendMessage
メソッドを使用して、メッセージを販売者 (参加者) に送信します。Control Receive ノード (Receipt acknowledgement) は、受取人からの確認応答コールバック (rn_onAck
メソッド) を待機します。
ビジネス プロセスが応答を受信すると、Control Receive ノード (onMessage) で注文確認を待機します。
Perform ノード (correctnoNamespace) は、受信した XML Bean に正しいネーム スペースを追加します (プロジェクト フォルダのスキーマには同じネーム スペースがないため、この手順が必要です)。
注文確認を受信すると、Decision ノードがメッセージを検証し、以下のいずれかを実行します。
メッセージが正しい場合は、Control Send ノード (Send PO Ack receipt acknowledgement) を使用して確認応答を送信。
メッセージに問題がある場合は、Control Send ノード (sendError) を使用してエラー メッセージを送信。
ビジネス プロセスは、Client Response ノード (Return PO ack) を使用して注文確認についてプライベート プロセスに応答します。
Perform ノード (Process Message) は、エラーをトリガして、PIP0A1 サンプルを呼び出すように特別にコンフィグレーションされています。
注意 : BEA WebLogic Integration では、RosettaNet 仕様に従って、確認応答とビジネス メッセージをどのような順序でも受信できます。開始者が、確認応答の前に応答メッセージを受信すると、応答メッセージはキューに入って後で処理されます。
障害パス
OnTimeout パスと On Error Message パスでは、ネットワーク障害が発生した場合などの障害管理が処理されます。障害パスを表示するには、以下を実行します。
Retry block という名前のノード グループの横にある OnTimeout パスを展開します。
このパスは、標準的な BPM OnTimeout 構成を表します。タイムアウト値は、2 時間 (標準的な PIP 再試行間隔)、および 3 回の再試行回数 (標準的な PIP 再試行回数) に設定されています。このため、何らかの理由により、応答が 2 時間以内に届かなかった場合は、そのグループが再試行され、sendMessage
ステップが再度実行されます。OnTimeout パスには、再試行回数が使い果たされたかどうかを判断する条件が含まれており、再試行回数が使い果たされた場合は、PIP 0A1 (障害通知) サブプロセスが Control Send ノードでトリガされます。このプロセスは、プライベート プロセスにエラーで応答して終了します。
プロセスの最上位にある PIP3A4 ノードの横の On Error Message パスを展開します。
Global Process Timeout は、標準 PIP タイムアウト値の 24 時間にコンフィグレーションされています。プロセス全体がこの時間内に完了しない場合は、PIP0A1 (障害通知) サブプロセスがトリガされ、プライベート プロセスにエラーが返されます。
最後に、メッセージを検証できないなど、さまざまな理由により、受取人がメッセージを拒否することがあります。メッセージ拒否は、RosettaNet コントロールで、onError
コールバックとして表現されます。グローバル On Error Message ハンドラでは、いつでもエラーを受信する準備が整っており、エラーを受信した場合、このハンドラはサブプロセスを起動して問題について管理者に通知し、プライベート プロセスにエラーを返して終了します。ネットワークの問題などにより、メッセージを正常に送信できないと、ビジネス プロセスが PIP0A1 (障害通知) を起動し、問題についてリモート パートナに通知しようとすることに注意してください。同じように、受取人からエラーを受信すると、このビジネス プロセスは、ローカル管理者とリモート管理者に通知します。
Buyer ビジネス プロセスの説明
販売者側の参加者ビジネス プロセス (PIP3A4Participant.jpd
) は、開始者ビジネス プロセスほど複雑ではありません。WebLogic Workshop で参加者ビジネス プロセスを表示するには、PIP3A4Participant.jpd
ファイルを開きます。
参加者ビジネス プロセスは、以下の手順で構成されています。
Client Request ノード (Receive PO message) は、注文要求メッセージを受信します。
Perform ノード (Check for noNamespace and do correction) は、受信した XML Bean に正しいネーム スペースを追加します (プロジェクト フォルダのスキーマには同じネーム スペースがないため、この手順が必要です)。
Decision ノードが注文を検証し、以下のいずれかを実行します。
注文が正しい場合は、Client Response ノード (Send receipt acknowledgement) を使用して購買者に確認応答を送信します。
注文に問題がある場合は、Client Response ノード (send Exception) を使用してエラー メッセージを送信します。
Invoke Private Process グループでは、Control Send ノード (processOrder) が追加処理のために注文要求をプライベート プロセスに渡し、Control Receive ノード (onPOAck) がプライベート プロセスからの応答を待機します。プライベート プロセスは、ファイル コントロールを使用して確認を読み取った後で、応答を作成して送信します。
Control Send with Return ノード (getStaticProp) が、受信メッセージから RosettaNet Context
プロパティを抽出します。これらのプロパティが必要になるのはエラーの場合のみです。プロパティを保存して後で使用することができます。プロパティには、PIP0A1 障害通知を作成するために必要な情報が含まれています。例 : 開始者、受信者、メッセージ ID など。
Retry block グループでは、Client Response ノード (Send PO Acknowledgement) が sendReply
コールバック メソッドを使用して注文確認メッセージを購買者に送信し、Client Request ノード (Receive receipt acknowledgement) が確認応答を待機します。
メッセージを受信するだけの 3B2 参加者ビジネス プロセスとは異なり、3A4 参加者ビジネス プロセスは応答を送信するので、ネットワーク障害や確認障害など、障害シナリオを考慮する必要があります。Retry Block で onTimeout パスを開き、タイムアウトと再試行回数を表示してください。このパスは、「出荷者ビジネス プロセスの説明」で説明した、3B2 開始者ビジネス プロセスの onTimeout パスに似ています。加えて、グローバルな onMessage ハンドラがあり、購入者によって返されるエラーが処理されます。
プライベート ビジネス プロセスの説明
3B2 サンプルと同じように、両サイドのプライベート プロセスはバックエンド ビジネス ロジックのための単なるプレースホルダです。参加者プライベート プロセスは、受信メッセージを実際にエコーします。一般的には、バックエンド アプリケーションと結び付けるよう、このプロセスをカスタマイズします。たとえば、アプリケーション ビュー コントロールと BEA アダプタで ERP アプリケーションに出荷通知を挿入し、メッセージ キューで送信してファイルかデータベースに書き込むことができます。
このサンプルで使用されているパブリック プロセス パターンとプライベート プロセス パターンは、必須ではなく、推奨される手法にすぎません。環境に合わせて、自由にプロセスを区分してください。プライベート プロセスを使用せず、必要なすべてのバックエンド統合、および RosettaNet 対話を単一プロセスで実装することも可能です。しかし、RosettaNet コレオグラフィのみに対処するパブリック、およびバックエンド システム統合に対処するプライベートにプロセスを分割すると、アプリケーションの再利用と保守が簡単になることがあります。
PIP3A4 サンプルの実行
PIP3A4 サンプルを実行するには
このサンプルは、ファイル コントロールを使用して、ローカル ファイル システムから注文確認メッセージを読み取ります。サンプルを実行する前に、正しいサンプル データ ファイルが見つかるように fc.jcx
ファイルでディレクトリ パスを設定する必要があります。
[アプリケーション] タブで fc.jcx
ファイルをダブルクリックします。
directory-name
属性を以下のように設定します。
[file location]\tptutorialapps\rosettanet\pips\PIP3A4Processes\sampledata
[ファイルの保存場所]
は「手順 3 : チュートリアル ファイルのインストール」でチュートリアル ファイルをインストールしたディレクトリです。
WebLogic Server が実行中でない場合は、起動します。起動するには、WebLogic Workshop メニューから [ツール|WebLogic Server|WebLogic Server の起動] を選択します。
WebLogic Server が動作している場合は、WebLogic Workshop ビジュアル開発環境の最下部にあるステータス バーに、次のインジケータが表示されます。
PIP3A4Participant.jpd
を開き、WebLogic Workshop メニューの
をクリックします。
プロジェクトがまだビルドされていない場合は、WebLogic Workshop によってプロジェクトがビルドされます。
注意 : ビルドを行うタブにコンパイルに関する緑色の警告が表示されることがあります。このような警告は無視してください。サンプルは正常に実行されます。
Web ブラウザが起動して Workshop のテスト ブラウザが表示されます。このブラウザからサンプルの入力値を使ってビジネス プロセスをテストすることができます。
注意 : アプリケーションがビルド プロセスを完了した後でテスト ブラウザのウィンドウが起動されるまでには、時間がかかることがあります。
テスト ブラウザから実際に実行しないでください。参加者プロセスを「準備」するには、この手順が必要です。
WebLogic Workshop に戻り、PIP3A4Private.jpd
を開いて
をクリックします。
.
テスト ブラウザで、[参照] をクリックし、[ファイルの保存場所]\rosettanet\pips\PIP3A4Processes\sampledata\3A4PurchaseOrderRequestMessageBase_0010.xml
にナビゲートします。
[ファイルの保存場所]
は「手順 3 : チュートリアル ファイルのインストール」でチュートリアル ファイルをインストールしたディレクトリです。
数秒で、エンドツーエンド コレオグラフィが実行されます。クライアント応答により、XML メッセージがエコーされます。
WebLogic Server Console を起動します。
数秒で、以下のメッセージがコンソールに表示されます。
>>>>> PIP0A1.jpd: Sent Notification of Failure
>>>>> PIP0A1ReportAdmin.jpd: GOT Notification of Failure.
オプションで、BEA WebLogic Integration Administration Console を開き、メッセージ トラッキング エントリとプロセス トラッキング エントリを確認できます。
サンプル PIP に基づいた、新しい PIP の実装
このトピックでは、このチュートリアルのサンプル PIP に基づいて、新しい PIP を実装する方法について説明します。内容は以下のとおりです。
新しい PIP の実装について
設計パターンが似ている、既存の PIP 実装に基づいて、新しい PIP を実装できます。価格と入手可能性要求は、応答とともにメッセージを送信する設計パターンの例です。このため、ビジネス プロセス コレオグラフィは、PIP3A4 のコレオグラフィと同じです。大きな違いは、要求メッセージ スキーマと応答メッセージ スキーマが異なることであり、注釈を変更する必要もあります。3A4 プロセスの複製と名前変更を行い、メッセージのスキーマ タイプを変更すると、PIP 3A2 実装を簡単に作成できます。PIP3A4 の詳細については、http://www.rosettanet.org を参照してください。
PIP 実装のコピーとカスタマイズ
既存の PIP 実装に基づいて、新しい PIP を実装するには、次のタスクを実行します。
使用する設計パターンが関連するサンプル PIP 実装をコピーします。
WebLogic Workshop で、新しい PIP に使用するスキーマをプロジェクトにインポートし、スキーマ定義を新しい PIP に変更します。
新しい PIP 用に、RosettaNet 注釈を変更します。
必要に応じて、JPD ファイルおよび JCX ファイルの名前を変更し、新しい PIP 実装に従って他のコンポーネントの名前を変更します。
必要に応じて、「プライベート」ビジネス プロセスの実装を変更します。
RosettaNet DTD スキーマの XSD スキーマへの変換
選択した PIP の RosettaNet W3C XSD スキーマは、RosettaNet Self-Test Kit (STK) に含まれています。これは、RosettaNet Web サイトの「Developer Tools」領域からダウンロードできます (http://www.rosettanet.org)。
使用している PIP のスキーマがこの Web サイトにない場合は、DTD ファイルとして指定した RosettaNet メッセージ定義を使用して RosettaNet ソリューションを WebLogic Integration に実装できます。ただし、XQuery マッピング ツール (データ トランスフォーメーションの定義に使用) など WebLogic Integration の多数のツールでは XSD スキーマしかサポートされないため、W3C XSD ファイルの使用をお勧めします。
グラフィカルな XQuery マッピング ツールを使用する場合は、XML Spy Enterprise Edition のようなツールを使用し、RosettaNet DTD ファイルを W3C XSD ファイルに変換してから、XSD ファイルをプロジェクトにインポートする必要があります。DTD ファイルを変換している PIP について RosettaNet メッセージ ガイドラインを参照し、変換後にサービス内容検証の適切な検証ルールを XSD ファイルに追加してください。
ファイルの変換時には、以下に注意してください。
DTD を W3C スキーマに変換する場合、xml:lang
名に関するエラー メッセージが表示されることがある。この問題を解決するには、次のテキストを置き換える。
<xs:extension base="xs:string">
<xs:attribute name="xml:lang" type="xs:string"/>
</xs:extension>
次のテキストに置き換える。
<xs:extension base="xs:string">
<xs:attribute ref="xml:lang"/>
</xs:extension>
次の import
文を追加すること。
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
スキーマ ファイルを保存し、Workshop スキーマ プロジェクトにドラッグ アンド ドロップすること。
XMLSPY によって生成されるスキーマには、次の例のように、名前と参照の両方を含む要素がある。
<xs:element name="ActionIdentity" ref="ActionIdentity"/>
WebLogic Workshop ではこれが問題になる。このファイルを修正するには、WebLogic Workshop でファイルを開き、〔Ctrl〕+〔H〕を押してワイルドカード文字の使用が有効になっていることを確認し、以下と一致するものを置き換える。
name="*" ref
以下のように置き換えること。
ref
この例では、次のようになる。
<xs:element ref="ActionIdentity"/>
一部のケースで、2 つの異なるスキーマに同じ要素定義が含まれ、スキーマのコンパイルで問題になることがある。名前の矛盾を避けるには、targetNamespace
を明示的に指定します。たとえば、このチュートリアルの注文要求 3A4 W3C スキーマでは、<xs:schema id="Pip3A4PurchaseOrderRequest" targetNamespace="Pip3A4PurchaseOrderRequest" xmlns="Pip3A4PurchaseOrderRequest">
を使用しています。
スキーマ プロジェクトのビルド後は、PIP 型がタイプ システムで使用できるようになり、パラメータ型と変数型で使用できるようになります。