BPEL インポート (BizTalk Server サンプル)
BPEL インポート サンプルは、BPEL (Business Process Execution Language) 処理の記述ファイルと関連アイテムを利用してオーケストレーションを作成する方法を示すものです。
このサンプルの処理
Wide World Importers 社は、小売業者に自動出荷サービスを提供する出荷業者です。 具体的には、Wide World Importers 社は小売業者に次のサービスを提供しています。
注文の出荷要求
出荷の追跡
出荷の確認
出荷に対する請求書発行と支払いの確認
これらのサービスを利用できるかどうかは WSDL (Web Services Description Language) ドキュメントを使用して表すことができます。BPEL ドキュメントでは、製造業者がサービスを呼び出す通常の方法と Wide World Importers 社からの応答方法が記述されます。
Northwind Traders という会社が Wide World Importers 社に出荷処理を委託した場合、Northwind Traders 社は全体的な情報のやり取りを記述した BPEL ファイルと関連アイテムを受け取ります。 Northwind Traders は、BPEL ファイルを使用して、Wide World Importers を介して注文を自動的に処理するBizTalk Server アプリケーション (BPELShipping) を作成します。
このサンプルでは、BPELShipping アプリケーションで次のシナリオを実行します。
Northwind Traders 社の顧客注文システムから注文を受信します。
Wide World Importers 社に出荷要求を送信し確認を求めます。
Wide World Importers 社から出荷要求の確認を受信します。
Wide World Importers 社からピックアップ通知を受信します。
出荷製品が顧客に配送され、受理されるまでの出荷状況メッセージを受信します。
Wide World Importers 社から請求書を受信します。
Wide World Importers 社に請求書受領の応答を返します。
Wide World Importers 社から支払い確認を受信します。
注文システムに最終的な出荷確認を送信します。
このサンプルでは、個別の BizTalk アプリケーション (ShipperProcess) を使用して、Wide World Importers 社の役割をシミュレートします。 BPELShipping アプリケーションは、FILE トランスポートを介して ShipperProcess と通信します。ここでは、通信用に共通のファイル システムの場所が使用されます。
このサンプルのデザイン方法とその理由
BPEL for Web Services はビジネス プロセスを記述する XML ベースの言語で、異なる企業間で Web サービスを使用して取引する場合に、ビジネス プロセスを簡単に共有できるようにするものです。 BPEL ではビジネス プロトコル レベルでビジネス プロセスの処理方法を記述します。パートナーから受信した注文書の処理など、企業内部で行うプロセスについては記述しません。 このサンプルでは、BPEL ファイルとそれに対応する WSDL ファイルをインポートし、これらのファイルをオーケストレーションに変換した後、パートナーとのビジネス プロセスを開始する方法を示します。
以下は、BPEL ファイルと WSDL ファイルをインポートし、これらのファイルをオーケストレーションに変換して、ビルド済みの BizTalk アプリケーション (ShipperProcess) とやり取りする場合の一連の手順です。 この手順を完了した場合、「BPELShipping アプリケーションをビルドおよび初期化するには」に示されている手順を実行する必要はありません。
BPEL からインポートして実際のソリューションをビルドするには
Microsoft Visual Studio の [ ファイル ] メニューの [ 新規作成] をクリックし、[ プロジェクト] をクリックします。
Note
この手順を完了する前に、ShipperProcess アプリケーションを設定して、サポート プロセスとスキーマ プロジェクトを作成する必要があります。
[ 新しいプロジェクト ] ダイアログ ボックスの [プロジェクトの種類] ウィンドウで、[ BizTalk (プロジェクト)] を選択します。 [テンプレート] ウィンドウで、 BizTalk (Server) BPEL インポート プロジェクトを選択します。
[ 名前 ] ボックスに「 BPELShipping」と入力します。
Note
別の名前を使用すると、最後のバインド ステップで問題が発生する場合があります。
プロジェクトの場所を選択し、[ OK] を クリックして BPEL インポート ウィザードを開始します。
[ようこそ] ページで [次へ] をクリックします。
[ BPEL、WSDL、XSD ファイルの選択 ] ページで、[ 参照] をクリックします。
Samples Path>\Orchestrations\BPELImport\BPELSource フォルダーから<すべてのファイルを選択し、[開く] をクリックし、[次へ] をクリックします。
Note
このステップでは、ビジネス プロセスを記述する BPEL ファイルと WSDL ファイル、およびビジネス ドキュメント スキーマを表す XSD ファイルを選択します。
[ 呼び出された WebServices の WSDL ファイルの選択 ] ページで、[完了] をクリック します。
BPEL インポート ウィザードにインポートが正常に完了したことが表示されたら、ウィザードを閉じます。 これでプロジェクトが作成されます。
Visual Studio のコマンド プロンプトで、ディレクトリ (cd) をプロジェクトの場所に変更します。
次のコマンドを実行します。
sn –k BPELShipping.snk
ソリューション エクスプローラーで、BPELShipping プロジェクトを右クリックし、[プロパティ] をクリックします。
[ 共通プロパティ\アセンブリ] で、手順 11 で作成したアセンブリ キー ファイル BPELShipping.snk を選択し、[ OK] をクリックします。
ソリューション エクスプローラーで、すべての .xsd ファイルを選択して削除します。
ソリューション エクスプローラーで、[参照の追加] を選択し、[プロジェクト] タブの [参照] をクリックします。
[Samples Path>\Orchestrations\BPELImport\Solution\ShipperProcess\ShippingSchemas\bin\Development] の場所<から [ShippingSchemas.dll] を選択し、[OK] をクリックします。
Note
このビルド方法については、「ShipperProcess アプリケーションをビルドおよび初期化するには」で説明します。
ソリューション エクスプローラーで、[OrderShippingProcess.bpel.odx] をダブルクリックします。
[ 表示 ] メニューの [ その他の Windows/オーケストレーション ビュー] を選択します。
[オーケストレーション ビュー] ウィンドウで、[オーケストレーションの プロパティ ] を右クリックし、[ プロパティ ウィンドウ] をクリックします。
プロパティ ウィンドウで、Orchestration Exportable プロパティを False に設定します。
ソリューション エクスプローラーで、[OrderShipping.wsdl.odx] をダブルクリックします。
[オーケストレーション ビュー] ウィンドウで、[ 種類/マルチパート メッセージの種類] を展開します。
[InvoiceAckMessageType] を展開し、[InvoiceAckMessagePart] をクリックします。
プロパティ ウィンドウで、[種類] フィールドを展開し、[スキーマ]/[参照アセンブリから選択] を選択します。
[ 成果物の種類の選択 ] ダイアログ ボックスで、[ ShippingSchemas] をクリックし、 Imported_InvoiceAckMessage の種類を選択し、[OK] をクリック します。
Note
ステップ 23 ~ 25 では、BPEL プロセスに参加しているサービスのメッセージの種類を、ShippingSchemas で記述されている対応するメッセージの種類に置き換えます。
メッセージの種類ごとに、次の値を使用してステップ 23 ~ 25 を繰り返します。
メッセージ部分 メッセージの種類 InvoiceMessagePart ShippingSchemas.Imported_InvoiceMessage OrderAckMessagePart ShippingSchemas.Imported_OrderAckMessage OrderMessagePart ShippingSchemas.Imported_OrderMessage PaymentConfirmationMessagePart ShippingSchemas.Imported_PaymentConfirmationMessage PickupNotificationMessagePart ShippingSchemas.Imported_PickupNotificationMessage ShipConfirmationMessagePart ShippingSchemas.Imported_ShipConfirmationMessage ShippingHistoryPart ShippingSchemas.Imported_ShippingHistory ShipRequestAckMessagePart ShippingSchemas.Imported_ShipRequestAckMessage ShipRequestMessagePart ShippingSchemas.Imported_ShipRequestMessage ShipStatusMessagePart ShippingSchemas.Imported_ShipStatusMessage ソリューション エクスプローラーで、BPELShipping プロジェクトを右クリックし、[追加] をポイントして、[既存の項目] をクリックします。
Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping の場所<からすべての .btm ファイルを選択します。
[オーケストレーション ビュー] ウィンドウで、ConstructMessage1 で MessageAssignment_1 という名前の [メッセージの割り当て] 図形を見つけて削除します。
ツールボックスから 、Transform 図形を ConstructMessage1 図形にドラッグします。
プロパティ ウィンドウで省略記号ボタン (...) をクリックし、[構成の変換] ダイアログ ボックスを開きます。
[ 既存のマップ] を選択します。
完全修飾マップ名を BPELShipping.Order2ShipRequest として選択します。
ソースを注文として選択 します。OrderMessagePart。
宛先を [ship_request] として選択します 。ShipRequestMessagePart をクリックし、[OK] をクリック します。
各メッセージ割り当て図形に対して手順 29 から 35 を繰り返し、次の表に従って変換図形に置き換えます。
置き換える図形 使用するマップ 置き換え元ドキュメント 置き換え先ドキュメント MessageAssignment_2 BPELShipping.Order2OrderAck order.OrderMessagePart order_ack.OrderAckMessagePart MessageAssignment_3 BPELShipping.Order2OrderNAck order.OrderMessagePart order_ack.OrderAckMessagePart MessageAssignment_4 BPELShipping.Order2ShipHistory order.OrderMessagePart ship_history.ShippingHistoryPart MessageAssignment_5 BPELShipping.ShipHistory2Completed order.OrderMessagePart ship_history.ShippingHistoryPart MessageAssignment_6 BPELShipping.Invoice2Ack invoice.InvoiceMessagePart invoice_ack.InvoiceAckMessagePart MessageAssignment_7 BPELShipping.Order2FinalConfirmation order.OrderMessagePart order_shipped.OrderAckMessagePart オーケストレーションを保存します。
[決定] 図形Decision_1のRule_1をダブルクリックします。
BizTalk 式エディターで、次の部分を探します。
ship_request_ack(BPELShipping.Ship_Acknowledged) == true
代入
ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true
Loop_1という名前のループ図形をダブルクリックします。
BizTalk 式エディターで、次の部分を探します。
ship_history(BPELShipping.Ship_Completed) == true
代入
ship_history(ShippingSchemas.Ship_Completed) == true
[決定] 図形Decision_2のRule_2をダブルクリックします。
BizTalk 式エディターで、次の部分を探します。
ship_status(BPELShipping.ShipStatus) == "DONE"
代入
ship_status(ShippingSchemas.ShipStatus) == "DONE"
オーケストレーション ビューで、[ 種類/関連付けの種類] を展開し、[ OrderCorrelationSet_Type] をクリックします。
プロパティ ウィンドウで、[関連付けプロパティ] の省略記号ボタン (...) をクリックします。
[関連付けるプロパティ] ウィンドウで、[ BPELShipping.OrderID] をクリックし、[ 削除] をクリックします。
[利用可能なプロパティ] ウィンドウで、[ 出荷スキーマ] を展開し、[ 注文 ID] を選択して、[ 追加] をクリックします。
[OK] をクリックします。
すべてのファイルを保存し、ソリューションをビルドします。
ソリューションを展開する。
Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping の場所<を参照し、BindAndStartOnly.bat ダブルクリックしてオーケストレーションをバインドして開始します。
このサンプルの場所
<Samples Path>\Orchestrations\BPELImport
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
BPELSource\InvoiceAckMessage.xsd | 請求書の受信確認応答スキーマです。 |
BPELSource\InvoiceMessage.xsd | 請求書スキーマです。 |
BPELSource\OrderAckMessage.xsd | 注文書の受信確認応答スキーマです。 |
BPELSource\OrderHeader.xsd | 注文書ヘッダー スキーマです。 |
BPELSource\OrderMessage.xsd | 注文書メッセージ スキーマです。 |
BPELSource\OrderShipping.wsdl | BPEL で参照されている WSDL ファイルです。 |
BPELSource\OrderShippingProcess.bpel | BPEL プロセス フローです。 |
BPELSource\PaymentConfirmationMessage.xsd | 支払い確認メッセージです。 |
BPELSource\PickupNotificationMessage.xsd | ピックアップ通知メッセージです。 |
BPELSource\ShipConfirmationMessage.xsd | 出荷確認メッセージです。 |
BPELSource\ShippingHistory.xsd | 出荷履歴ドキュメントです。 |
BPELSource\ShipRequestAckMessage.xsd | 出荷要求の受信確認応答です。 |
BPELSource\ShipRequestMessage.xsd | 出荷要求メッセージです。 |
BPELSource\ShipStatusMessage.xsd | 出荷状態メッセージです。 |
Solution\bindings\BPELBindings.xml | BPELShipping オーケストレーションのポートのバインドを指定するバインド ファイルです。 |
Solution\bindings\ShipperBindings.xml | ShipperProcess オーケストレーションのポートのバインドを指定するバインド ファイルです。 |
Solution\BPELShipping\BindAndStartOnly.bat | 手動でビルドし展開した BPELImport オーケストレーションを、バインドおよび開始するときに使用するバッチ ファイルです。 |
Solution\BPELShipping\cleanup.bat | BPELShipping プロセスの削除に使用するバッチ ファイルです。 |
Solution\BPELShipping\Setup.bat | 提供されている BPELShipping サンプルをインストールおよび開始するときに使用するバッチ ファイルです。 |
Solution\BPELShipping\BPELShipping.sln | ビルド済みの BPELShipping サンプルです。 |
olution\BPELShipping\BPELShipping\Invoice2Ack.btm | 請求書と請求書の受信確認応答を関連付けるマップです。 |
Solution\BPELShipping\BPELShipping\Order2FinalConfirmation.btm | 注文書メッセージを最終的な出荷確認に変換するマップです。 |
Solution\BPELShipping\BPELShipping\Order2OrderAck.btm | 注文書メッセージを注文書の受信確認応答に変換するマップです。 |
Solution\BPELShipping\BPELShipping\Order2OrderNack.btm | 注文書メッセージを注文書の否定応答に変換するマップです。 |
Solution\BPELShipping\BPELShipping\Order2ShipHistory.btm | 注文書メッセージを出荷履歴ドキュメントに変換するマップです。 |
Solution\BPELShipping\BPELShipping\Order2ShipRequest.btm | 注文書メッセージを注文出荷要求に変換するマップです。 |
Solution\BPELShipping\BPELShipping\ShipRequest2Completed.btm | 出荷履歴を完了に設定するマップです。 |
Solution\ShipperProcess\setup.bat | ShipperProcess ヘルパー オーケストレーションとそのポートをビルド、展開、バインド、および開始するためのバッチ ファイルです。 |
Solution\ShipperProcess\cleanup.bat | ShipperProcess ヘルパー オーケストレーションとそのポートを停止、参加解除、および展開解除するためのバッチ ファイルです。 |
このサンプルのビルドと初期化
最初のステップでは、Wide World Importers 社の役割をシミュレートするために使用する ShipperProcess アプリケーションをビルドおよび初期化します。
ShipperProcess アプリケーションをビルドおよび初期化するには
Visual Studio コマンド プロンプトを起動します。
Visual Studio コマンド プロンプトから、ディレクトリ (cd) を次のフォルダーに変更します。
<サンプル Path>\Orchestrations\BPELImport\Solution\ShipperProcess
次のアクションを実行するファイル Setup.bat を実行します。
ShipperProcess および BPELShipping プロセスで使用されるスキーマを含む ShippingSchemas プロジェクトをビルドします。
ShipperProcess をビルドします。
ShippingSchemas プロジェクトと ShipperProcess プロジェクトを展開します。
ShipperProcess で使用される送信ポートと受信ポートを作成しバインドします。
ShipperProcess で使用されるポートを開始します。
ShipperProcess オーケストレーションを参加させ、開始します。
このサンプルを実行する前に、ビルド処理および初期化処理でエラーが報告されていないことを確認してください。 次の警告が 1 つ以上表示される場合がありますが、これらの警告は無視できます。
The 'http://contoso.org/samples/Fragments:XXXX' element is not declared. An error occurred at , (35, 16).
<SAMPLE_LOCATION>\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(667,22): convoy found at 'activate receive(Receive_ShipOrder.Operation_1, Request, initialize Correl)'
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): and 'receive(ReceiveInvoiceAck.Operation_1, Invoice_Ack, Correl)'
Note
「BPEL からインポートして実際のソリューションをビルドするには」に記載されている手順を完了した場合、次の手順を実行する必要はありません。
BPELShipping アプリケーションをビルドおよび初期化するには
-
警告
以下の手順を実行する前に、「ShipperProcess アプリケーションをビルドおよび初期化するには」の手順を完了しておく必要があります。
Visual Studio コマンド プロンプトから、ディレクトリ (cd) を次のフォルダーに変更します。
<サンプル パス>\オーケストレーション\BPELImport\Solution\BPELShipping
次のアクションを実行するファイル Setup.bat を実行します。
BPELShipping プロジェクトをビルドします。
BPELShipping プロジェクトを展開します。
BPELShipping プロセスで使用される送信ポートと受信ポートを作成しバインドします。
BPELShipping プロセスで使用されるポートを開始します。
BPELShipping オーケストレーションを参加させ、開始します。
このサンプルの実行
BPEL インポート サンプルを実行するには
Order.xml ファイルを Samples Path>\Orchestrations\BPELImport\Solution フォルダーから< SamplesPath>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder フォルダーにコピーします。<
BPELShipping オーケストレーションは、このファイルを顧客注文処理システムから注文として取得し、出荷プロセスを実行し、Samples Path>\Orchestrations\BPELImport\Solution\Ports\SendOrder フォルダーと <Samples Path>\Orchestrations\BPELImport\Solution\Ports\FinalConfirmation フォルダーにそれぞれ < 1 つのファイルを生成します。 これらのファイルの名前の形式は <MessageID>.xml で <、MessageID> はメッセージを一意に識別するために生成される GUID です。
このサンプルのアンインストール
BPEL インポート サンプルをアンインストールするには
Visual Studio コマンド プロンプトで、ディレクトリ (cd) を Samples Path>\Orchestrations\BPELImport\BPELShipping に<変更します。
Cleanup.bat を実行します。
<[Samples Path>\Orchestrations\BPELImport\ShipperProcess] を参照します。
Cleanup.bat を実行します。