|
RosettaNet は主要企業が参加するコンソーシアムであり、産業界全体に渡るオープン e ビジネス プロセス規格を作成および実装するために活動しています。これらの規格により、共通の e ビジネス言語の構築し、グローバル規模でのサプライ チェーン パートナ間のプロセスの連係を図ります。RosettaNet は、Uniform Code Council, Inc. (UCC) の子会社です。RosettaNet については、次の URL にアクセスしてください。http://www.rosettanet.org
RosettaNet コントロールを使用すると、Oracle Workshop for WebLogic ビジネス プロセスでは、RosettaNet 経由でトレーディング パートナとビジネス メッセージおよびデータを交換できます。RosettaNet コントロールは、開始者ビジネス プロセスにおいて参加者との RosettaNet ビジネス メッセージの交換を管理する場合のみ使用します。RosettaNet ソリューションの概要については、『Trading Partner Integration の紹介』を参照してください。
Trading Partner Integration の紹介
開始者ビジネス プロセスで RosettaNet コントロールを使用すると、参加者と RosettaNet ビジネス メッセージを交換できます。RosettaNet コントロールは、ビジネス メッセージを送受信するためのメソッドを提供します。詳細については、RosettaNetControl インタフェースを参照してください。参加者から受信した RosettaNet メッセージ、確認応答、拒否、およびエラーは、コールバックによって処理されます。
参加者ビジネス プロセスでは RosettaNet コントロールを使用して受信メッセージに応答しないでください。代わりに、クライアント要求ノードを使用して開始者からの受信ビジネス メッセージを処理し、クライアント応答ノードを使用して開始者への送信ビジネス メッセージを処理します。RosettaNet を使用する参加者ビジネス プロセスの構築については、「RosettaNet 参加者ビジネス プロセスの構築」を参照してください。RosettaNet を使用するビジネス プロセスの設計については、『Trading Partner Integration の紹介』を参照してください。
実行時に、RosettaNet コントロールは、TPM リポジトリに格納されているトレーディング パートナ情報およびサービス情報に依存します。TPM リポジトリについては、『Trading Partner Integration の紹介』を参照してください。TPM リポジトリへの情報の追加または TPM リポジトリ内の情報の更新については、『WebLogic Integration Administration Console の使用』の「トレーディング パートナ管理」を参照してください。
ここでは、新しい RosettaNet コントロールを作成する方法について説明します。パブリックな開始者ビジネス プロセスごとに RosettaNet コントロールを 1 つ追加します。パブリック プロセスとプライベート プロセスの詳細については、『Trading Partner Integration の紹介』の「トレーディング パートナ ビジネス プロセスの概念」にある「ビジネス プロセスのタイプ」を参照してください。RosettaNet コントロールについては、「RosettaNet コントロール」を参照してください。
注意 : | [データ パレット] ビューが Oracle Workshop for WebLogic に表示されない場合は、メニュー バーから [ウィンドウ|ビューの表示|データ パレット] をクリックします。 |
[コントロールの挿入 : Rosettanet] ダイアログ ボックスが表示されます (図 11-1 を参照)。
注意 : | 該当する場合、ここで入力した値は TPM リポジトリ内の対応する設定に一致する必要があります。 |
|
Oracle Workshop for WebLogic コントロールはすべて同じモデルに従っています。RosettaNet コントロールの使用に関してはその多くが、その他の Oracle Workshop for WebLogic コントロールを使用する場合と同一か、ほぼ同じです。
開始者ビジネス プロセスに RosettaNet コントロールを追加したら、コントロールでメソッドを使用して、参加トレーディング パートナと RosettaNet メッセージを交換できます。デザイン ビューのデータ パレットで RosettaNet コントロールのノードを展開し、そのメソッドを表示します。次に、目的のメソッドをビジネス プロセスにドラッグ アンド ドロップします。一般的な作業は以下のとおりです。
メソッドの詳細については、RosettaNetControl インタフェースを参照してください。
RosettaNet コントロールには、開始者の要求メッセージを参加者に送信するためのメソッドや、参加者の返信に応答するためのメソッドが備わっています。ビジネス プロセスにメソッドを追加するには、データ パレットからビジネス プロセスまで、そのメソッドをドラッグします。これにより、コントロール送信ノードが作成されます。
sendMessage
メソッドを使用して、RosettaNet 要求メッセージを参加者に送信します。ビジネス プロセスにコントロール送信ノードを作成したら、ペイロード部分とその Java データ型を指定する必要があります。有効なデータ型は以下のとおりです。
注意 : | 型付き XML データや型付き MFL データを添付ファイルにすることもできますが、その場合は対応する XML Bean クラス名や MFL クラス名をパラメータ内で指定する必要があります。 |
RosettaNet メッセージを送信した後、開始者ビジネス プロセスは参加者からの応答を待機します。要求に対する参加者の応答を受信した後、ビジネス プロセスは、確認応答して応答を受け付けるか、応答を拒否するか、またはエラーが発生したことを参加者に通知することができます。RosettaNet コントロールには、参加者の返信に応答するための以下のメソッドが備わっています。
参加者からの応答を処理するには、開始者ビジネス プロセスで以下のコールバック メソッドを使用します。
参加者から RosettaNet メッセージを受信するには、適切なメソッドを使用します。ビジネス プロセスにメソッドを追加するには、データ パレットからビジネス プロセスまで、そのメソッドをドラッグします。これにより、コントロール受信ノードが作成されます。
onMessage
メソッドについては、コントロール受信ノードを作成した後に、受信メッセージのペイロード部分とその Java データ型を指定する必要があります。有効なデータ型については、「参加者にメッセージを送信する」を参照してください。
onError
メソッドと onAck
メソッドは、システムレベルのメソッドです。どちらも、RosettaNet ペイロードを格納する XmlObject
引数を使用します。これらの引数はデフォルトのコントロールでは表示されませんが、データ パレットからビジネス プロセスにドラッグできます。例外スキーマ ファイル (RNIF 2.0 用) をもつスキーマ プロジェクトがアプリケーションに含まれており、スキーマがすでに構築されている場合は、Oracle Workshop for WebLogic のマッパー機能でクエリを (XQuery 言語で) 作成して、必要な値を抽出できます。マッパー機能を使用してクエリを作成する方法については『XQuery Mapper を使用したデータの変換』を参照してください。
RosettaNetContext
XMLBean を使用して、RosettaNet メッセージから特定のメッセージ要素を取得できます。以下のメッセージ要素が取得可能であり、java.lang.string
として返されます。
RosettaNetContext
XMLBean を使用するときには、必ず以下のクラスをインポートしてください。
com.bea.wli.control.rosettanetContext.RosettaNetContextDocument;
com.bea.wli.control.rosettanetContext.RosettaNetContextDocument.RosettaNetContext;
以下のサンプル コードは、RosettaNetContext
の使用方法を示しています。
注意 : | ここで示すサンプル コードを使用する場合は、RosettaNet コントロール定義ファイル (コントロール ファイル) で、対応するメソッドの戻り値の型も変更してください。つまり、public void sendMessage() を public RosettaNetContextDocument sendMessage() に変更する必要があります。 |
public void rn_onMessage(RosettaNetContextDocument doc,
XmlObject msg)
{
System.out.println(">>>>> ContextInitiator.rn_onMessage()");
RosettaNetContextDocument.RosettaNetContext context =
doc.getRosettaNetContext();
System.out.println(" from=" + context.getFrom());
System.out.println(" to=" + context.getTo());
System.out.println(" pip=" + context.getPip());
System.out.println(" failure-report-admin=" +
context.getFailureReportAdministrator());
}
public void rnSendMessage() throws Exception
{String rnInfo = "Service Content";
XmlObject xObj = XmlObject.Factory.parse(rnInfo);
RosettaNetContextDocument doc = rn.sendMessage(xObj);
System.out.println(doc.toString());
}
Service Content
は、RosettaNet メッセージのサービス コンテンツです。
public void onMessage(RosettaNetContextDocument doc, XmlObject msg)
{System.out.println
(">>>>> ContextParticipant.onMessage()");RosettaNetContext context = doc.getRosettaNetContext();
System.out.println
(" from=" + context.getFrom());System.out.println
(" to=" + context.getTo());System.out.println
(" pip=" + context.getPip());System.out.println
(" failure-report-admin=" +context.getFailureReportAdministrator());
}
@CallbackInterface()
public interface Callback extends ServiceBrokerControl
{
/**
* com.bea.control.annotations.MessageBuffer enable="false"
*/
@com.bea.wli.common.MessageBuffer(enable = false)
public RosettaNetContextDocument sendReply(XmlObject msg);
/**
* com.bea.control.annotations.MessageBuffer enable="false"
*/
@com.bea.wli.common.MessageBuffer(enable = false)
public void sendReceiptAcknowledgement();
/**
* com.bea.control.annotations.MessageBuffer enable="false"
*/
@com.bea.wli.common.MessageBuffer(enable = false)
public void sendError(String msg);
}
@com.bea.wli.jpd.Callback()
public Callback callback;
public void reply()
{XmlObject xObj = null;
try {
xObj = XmlObject.Factory.parse("Service Content");
} catch (Exception e) {
e.printStackTrace();
}
RosettaNetContextDocument doc= callback.sendReply(xObj);
System.out.println(doc.toString());
}
Service Content
は、RosettaNet メッセージのサービス コンテンツです。
RosettaNet コントロールでは、コントロールの開始者 (from
プロパティ) および参加者 (to
プロパティ) のビジネス ID を動的にバインドする機能を追加できます。プロパティの動的バインディングは以下の方法で行うことができます。
最も優先順位の高い方法から挙げると、プロパティ設定の階層は次のようになります。
DynamicProperties.xml
ファイルを使用して動的にバインドされるプロパティsetProperties()
メソッドを使用して設定されるプロパティ
動的なセレクタの方が静的なセレクタよりも優先順位が高くなります。
RosettaNet コントロールでは、動的なセレクタを使用することで、実行時に複数のトレーディング パートナからビジネス メッセージの送信先になる 1 つを決定できます。動的なセレクタを指定するときには、必要なビジネス ID を取得する XQuery を構築してテストします。
setProperties
メソッドは RosettaNetPropertiesDocument
パラメータを受け付けます。RosettaNetPropertiesDocument
タイプは、DynamicProperties.xsd
で定義されている対応するスキーマ要素から生成される XML Bean クラスです。DynamicProperties.xsd
ファイルは、新しいプロセス アプリケーションのシステム フォルダ内、またはスキーマ プロジェクトのシステム フォルダ内にあります。
DynamicProperties.xsd
ファイルをもつスキーマ プロジェクトがアプリケーションに含まれており、スキーマがすでに構築されている場合は、Oracle Workshop for WebLogic のマッパー機能でクエリを (XQuery 言語で) 作成して、必要な値を抽出できます。マッパー機能を使用してクエリを作成する方法については「XQuery Mapper を使用したデータの変換」を参照してください。
現在のプロパティ設定を表示するには、getProperties()
メソッドを使用します。
RosettaNet コントロールの使用方法の例については、「チュートリアル : RosettaNet ソリューションの構築」を参照してください。