BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Integration > B2B トピック > B2B Integration RosettaNet の実装 > RosettaNet でのワークフローの使用 |
B2B Integration RosettaNet の実装
|
RosettaNet でのワークフローの使用
以下の節では、RosettaNet Partner Interface Process (PIP) を実装するワークフローの開発方法について説明します。
この章の手順説明では、WebLogic Integration Studio で表示されるワークフロー図に説明しています。ワークフロー ダイアグラムにアクセスするには、『WebLogic Integration の起動、停止およびカスタマイズ』の「WebLogic Integration 管理ツールと設計ツール」にある「Studio の起動」の説明に従って Studio を起動します。B2B アプリケーションで使用する協調的ワークフローの定義の詳細については、『WebLogic Integration の起動、停止およびカスタマイズ』を参照してください。
RosettaNet の理解
次の RosettaNet マニュアルは、WebLogic Integration で提供される RosettaNet のサポートを使用して独自の PIP を実装する場合には、必読です。また、RosettaNet PIP 実装サンプルを完全に理解したい場合にも、一読をお勧めします。
PIP ワークフロー インスタンスの理解
WebLogic Integration は、標準の RosettaNet PIP をパブリック ワークフロー(協調的ワークフローとも言う)によって実装します。プライベート ワークフローがメッセージの生成や、メッセージへの応答のためのバックエンド システムへのインタフェースに使用されるのに対し、パブリック ワークフローは他のトレーディング パートナにインタフェースを提供します。
次の図は、PIP ワークフローがトレーディング パートナ間でメッセージを渡すプロセスを示します。
図2-1 メッセージ ワークフロー
一般に、RosettaNet 指向のワークフローは、次のようにメッセージを処理します。
はじめに
RosettaNet ワークフローの開発に必要なタスクは、他のワークフローの開発に使用されるものとほぼ同じですが、一部で異なっています。標準的な手順は、『WebLogic Integration の起動、停止およびカスタマイズ』に記載されています。RosettaNet ワークフローを作成する前に参照してください。
WebLogic Integration には、RosettaNet 1.1 および 2.0 用の PIP0A1 と PIP3A2 がフルに実装されています。これらのテンプレートは、追加で PIP ワークフローを作成する場合のテンプレート ベースとして役に立ちます。
この節のこれ以降では、RosettaNet 固有のワークフローの作成に関する問題について説明します。
パブリック ワークフローとプライベート ワークフローの調整
WebLogic Integration では、RosettaNet PIP は B2B エンジンを介してのメッセージ交換でトレーディング パートナのロールを実装するパブリック ワークフローです。これらのワークフローは、次の処理を行うプライベート ワークフローと協調して動作するように設計されています。
パブリック ワークフローを開始するためのプライベート ワークフロー、またはプライベート ワークフローを開始するためのパブリック ワークフローのコンフィグレーションに必要な手順は、『WebLogic Integration の起動、停止およびカスタマイズ』の「協調的ワークフローの開始」で説明しています。
RosettaNet ワークフロー変数
WebLogic Integration Studio で実装される RosettaNet ワークフローが動作するには、いくつかのワークフロー変数が必要です。これらの変数の使われ方は、次の 3 通りです。
実装されている PIP ロールとは関係なく、RosettaNet ワークフローはすべて、システム変数、入力変数、および出力変数からなる同じ基本セットを含んでいる必要があります。以下の節で、必要な変数を RNIF のバージョン別に表にまとめています。
ワークフロー変数表の使用
各ワークフロー変数について、名前と型(boolean、string、integer、xml、または object)が識別されます。加えて、以下の節に示されるように、変数の使い方と説明が記載されています。
使い方
ワークフロー変数は、次のように使い方別に分類されます。
これらのワークフロー変数の使用時に注意すべき重要な点は、パブリック ワークフローを開始するときには、すべての入力変数が初期化されなくてはならないということです。入力変数の初期化に使用される値は、公開や送信の必要はありません。
必須ワークフロー変数には、NOF パーティの指定が含まれます。これらのパーティが、PIP 例外を処理するトレーディング パートナです。NOF パーティは、元の PIP の参加者であっても、第三者であってもかまいません。
説明
変数について簡単に説明します。関連のある場合、変数の説明には変数のマップ先となる RosettaNet オブジェクト(RNIF 1.1)または RosettaNet ビジネス メッセージ(RNIF 2.0)の要素が含まれます。たとえば、入力変数 GlobalUsageCode のマップ先は、次のとおりです。
ServiceHeader/ProcessControl/GlobalUsageCode
この場合、スラッシュは次のように階層的な要素構造における位置を示します。
<ServiceHeader>
<ProcessControl>
<GlobalUsageCode>Value</GlobalUsageCode>
. . .
</ProcessControl>
. . .
</ServiceHeader>
RNIF 2.0 のワークフロー変数
表 2-1 では、RNIF 2.0 PIP ワークフローで必要とされるテンプレート変数について説明しています。付加的な PIP 固有の入力変数および出力変数も必要な場合があります。特定の PIP については、メッセージ ガイドラインと XML 文書型定義(DTD)を参照してください。
RNIF 1.1 のワークフロー変数 表 2-2 では、RNIF 1.1 PIP ワークフローのテンプレート変数について説明しています。付加的な PIP 固有の入力変数および出力変数も必要な場合があります。特定の PIP については、メッセージ ガイドラインと XML 文書型定義(DTD)を参照してください。
統合された rnSystem 変数
WebLogic Integration 2.0 では、次の変数も必要とされていました。
signalCode
signalCodeVersion
inReplyToActionCode
inReplyToMessageId
initiatingPartnerDUNS
inReplyToActionCodeVersion(RNIF 2.0 のみ)
以降のリリースでは、これらの変数は、ワークフロー テンプレート内で公開されているシステム変数の数を低減するために、rnSystem という変数(ワークフロー変数型 : Java Object)に統合されて置き換えられます。
WebLogic Integration 2.0 用に開発された PIP ワークフローがあれば、既存のワークフロー テンプレートからこれらの変数の呼び出しまたは定義を削除して、rnSystem に置き換えることができます。
RosettaNet メッセージの受信
WebLogic Integration がサポートする RosettaNet メッセージの受信方法には、開始ノードによるものと、イベント ノードによるものの、2 通りがあります。どちらを使用するかは、メッセージが受信される状況によります。
開始ノード
WebLogic Collaborate が PIP インスタンスに対するメッセージを初めて受信したときに、WebLogic Collaborate が自動的にワークフローを開始するように、ワークフローをコンフィグレーションできます。このアクションをコンフィグレーションするには、受信した PIP を開始ノードのイベントとして宣言します。受信するワークフローが、受信される PIP を開始して、処理します。例としては、『WebLogic Integration の起動、停止およびカスタマイズ』の「協調的ワークフローの開始」にある参加者ワークフローの説明を参照してください。
PIP3A2 サプライヤ ワークフロー テンプレートは、受信されるメッセージによって開始されるワークフロー テンプレート定義のコンフィグレーション方法の一例です。この例では、開始イベントは Business Message Event として設定されています。RosettaNet メッセージが受信されると、ワークフローが自動的に開始され、出力変数とシステム変数が設定されます。
イベント ノード
ワークフローには、ワークフローと関連付けられた PIP インスタンスに対するメッセージが受信されるとトリガされるイベントを入れることができます。例としては、『WebLogic Integration の起動、停止およびカスタマイズ』の「協調的ワークフローの開始」にある開始者ワークフローの説明を参照してください。
タイムアウトの実装
ワークフローでは、受信される RosettaNet メッセージを待機するオプションのタイムアウト パスを使用できます。ワークフローが送信されたメッセージ(たとえば 3A2 カスタマ ワークフロー)に対する応答を待機する場合は、応答を待機するための別個のタイムアウト パスを作成する必要があります。3A2 カスタマ ワークフロー テンプレートに示されるこのパスは、適切なタイムアウト期間に合わせて設定されたタイマと、停止ノードで構成されます。
順不同の信号受信
RNIF 1.1 と RNIF 2.0 では、信号受信と応答について、異なった標準を定義しています。これらの異なった標準は、PIP ワークフローによるメッセージの解決方法に影響を与えます。
RNIF 1.1 では、応答が常に信号の後に来るように指定しています。したがって、信号/応答パターンは、次のようになります。
RNIF 2.0 により、順不同の信号受信が可能になります。たとえば、ワークフローが、受信応答確認より前に応答を受信する場合もあります。したがって、RNIF 2.0 では、次のような信号/応答パターンが可能です。
このパターンは、ワークフロー設計の中で正確に処理される必要があります。PIP3A2 顧客ワークフロー テンプレートは、これを処理する方法の一例として有用です。PIP テンプレートの RNIF 1.1 バージョンは、信号と、それに続く応答を処理します。RNIF 2.0 バージョンは、信号と応答を個別に処理するロジックを提供します。
RosettaNet メッセージの送信
ワークフロー タスクは次のノードを使用して RosettaNet メッセージを送信します。
PIP3A2_Customer_RN2 ワークフローの一部を次の図に示します。
図2-2 RosettaNet メッセージの送信に使用されるワークフロー ノード
RosettaNet メッセージの伝送は、Send Business Message タスクがメッセージを送信すると開始されます。イベント ノード(RosettaNet Status Event)はメッセージの http ステータス通知を待機します。この種のステータス通知を受信すると、イベント ノードは Wait for HTTP Status タスク ノードに「完了」マークを付け、ワークフローは次のノードへと進みます。 Send Business Message タスクは同期で実行され、http ステータス応答を待ってからワークフローの次のノードへ進むということをしません。 RosettaNet メッセージは次の方法で送信します。
図2-3 B2B Integration アクション
図2-4 RosettaNet 2.0 の [Send Business Message] ダイアログ ボックス
要求される情報は、選択したメッセージ タイプ([アクション]、[例外]、または [受信確認])によって異なります。次の表で、入力を求められる情報をメッセージ タイプ別にまとめます。
図2-6 [タスク期日を設定] ダイアログ ボックス
メッセージの検証
メッセージ検証プロセスは、XML スキーマ仕様のアルファ版実装をサポートする Xerces 1.3 DOM パーサを使用します。Xerces 1.3 DOM パーサは、WebLogic Server 6.1 ソフトウェアに同梱されています。
以下の節では、WebLogic Collaborate がどのように RosettaNet メッセージを検証するかを説明し、メッセージ検証に関するさらなる参考文献を提示します。
RosettaNet メッセージ検証
WebLogic Integration は、RNIF 1.1 のメッセージと RNIF 2.0 メッセージの両方に対して、メッセージ検証サービスを提供します。実行される検証はvalidateServiceContent、validateServiceHeader、および useDTDValidation の各ワークフロー変数に指定された値によって異なります。検証オプションは、以下のとおりです。
例外処理プロセスの説明については、次の URL にある RNIF 仕様を参照してください。
http://www.rosettanet.org
サンプルの XML スキーマ ファイルおよび文書型定義(DTD)ファイルは、WebLogic Integration のインストール先の、次の場所に格納されています。
WLI_HOME/lib/xmlschema/rosettanet
メッセージ検証に関する推奨参考文献
以下は、XML スキーマ例を十分に理解するために推奨される参考文献の情報です。独自の XML スキーマを実装する場合は、必ずお読みください。
http://www.w3.org/XML/Schema
「XML Schema Part 0: Primer」には、XML スキーマの特長と機能についての詳しい説明があります。
http://xml.apache.org/xerces-j/schema.html
パフォーマンス チューニングとメッセージ検証
メッセージ検証は、主にシステムをパートナと共に設定およびコンフィグレーションしているときに使用されます。無効なメッセージ生成に関する問題をシステムから取り除いたと確信している場合は、オプションとしてメッセージ検証をオフにし、パフォーマンスを向上させることができます。前の節で述べたように、メッセージ処理中にメッセージ検証の実行が要求されることはありません。
メッセージ添付ファイル
RNIF 1.1 と RNIF 2.0 は双方とも、RosettaNet アクション メッセージ内のオプションのメッセージ添付ファイルをサポートしています。添付ファイルは、ファイル タイプを限定しておらず、バイナリ データを含んでいてもかまいません。添付できるファイルの例としては、Word 文書、GIF 画像、PDF ファイルなどがあります。各添付ファイルの情報は、メッセージのサービス ヘッダに含まれます。
WebLogic Integration は、ユーザ アプリケーション(たとえばプライベート ワークフロー)が、BEA 固有の構造化された XML ファイルに含まれる添付ファイルの説明を PIP ワークフローへの入力として提供できるようにすることにより、添付ファイルをサポートしています。XML ファイルは、添付ファイルの説明です。実際の添付ファイルではありません。WebLogic Integration によって添付されるべきファイルを指定するだけのものです。
以下は、添付ファイルを説明する DTD 情報です。
コード リスト 2-1 RosettaNet 用 WebLogic Integration 添付ファイル DTD 情報
<!ELEMENT WLCRosettaNet ( Attachment+ )>
<!ELEMENT Attachment (
description?,
Type,
Id,
LocalLocation
)>
<!ELEMENT description ( FreeFormText ) >
<!ELEMENT FreeFormText ( #PCDATA ) >
<!ATTLIST FreeFormText xml:lang CDATA #IMPLIED >
<!ELEMENT Type ( #PCDATA ) >
<!ELEMENT Id ( #PCDATA ) >
<!ELEMENT LocalLocation ( #PCDATA ) >
次の表で、DTD において使用される要素について説明します。
メッセージが受信されると、添付ファイルはすべてローカルの WLI_HOME/config/domain_name/rnattachments ディレクトリに保存されます。保存された添付ファイルには、先頭がタイムスタンプになったファイル名が付きます。たとえば、添付ファイルに次の XML 記述を使用したとします。 コード リスト 2-2 サンプル XML 添付ファイル このサンプルは、サービス ヘッダおよび MIME ヘッダ内に次のデータを生成します。 コード リスト 2-3 サンプル サービス出力 コード リスト 2-4 サンプル MIME ヘッダ
<?xml version ="1.0"?>
<!DOCTYPE WLCRosettaNet SYSTEM "WLCRosettaNet.dtd">
<WLCRosettaNet>
<Attachment>
<description>
<FreeFormText>
Product user guide in PDF
</FreeFormText>
</description>
<Type>application/pdf</Type>
<Id>"001801236324xyz@xyz.test.com"</Id>
<LocalLocation>c:\pdf\myfile.pdf</LocalLocation>
</Attachment>
<Attachment>
...
</Attachment>
</WLCRosettaNet><Attachment>
<description>
<FreeFormText>
Product user guide in PDF
</FreeFormText>
</description>
<GlobalMimeTypeQualifierCode>
PDF
</GlobalMimeTypeQualifierCode>
<UniversalResourceIdentifier>
cid:Attachment.001801236324xyz@xyz.test.com
</UniversalResourceIdentifier>
</Attachment>Content-Type: application/pdf; name="myfile.pdf"
Content-ID: <Attachment.001801236324xyz@xyz.test.com>
Content-Description: Product user guide in PDF
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |