PartyResolution (BizTalk Server サンプル)
PartyResolution サンプルは、パーティの解決で BizTalk オーケストレーションを使用して、2 つのうちいずれかの受信側にメッセージをルーティングする方法を示すものです。
このサンプルの処理
このサンプルでは、次に示す複数のオーケストレーションがそれぞれのロールを実行します。
購入側のオーケストレーション : 注文書 (PO) メッセージの処理を開始するときに使用されます。
供給業者側のオーケストレーション : 受信パーティおよび送信パーティの両方の解決を実行します。
ShipmentAgency1 および ShipmentAgency2 オーケストレーション : PO の出荷先に基づいて供給業者側のオーケストレーションに応答します。
このサンプルのデザイン方法とその理由
パーティの解決とは、メッセージの送信元 (パーティ) を特定するプロセスのことです。 たとえば、既存のパーティのみがメッセージを送信できるようにする場合などに使用します。 また、送信パーティの解決とは、メッセージの送信先のパーティを特定するプロセスのことです。
このサンプルでは、パーティの解決方法の他に、ロールの実装方法と使用方法も示しています。 たとえば、製品の出荷を処理するには、出荷業者に製品の出荷を指示するドキュメントを送信するための送信ポートを作成します。 出荷業者が複数ある場合は、出荷業者の URL だけが異なる複数の送信ポートを作成するのではなく、オーケストレーション内に出荷業者のロールを作成でき、 その後、製品出荷に関連するメッセージを荷送人ロールに送信できます。 次にパーティを作成し、送信ポートを各パーティとパーティの証明書に関連付けます。 最後に、各パーティを出荷業者のロールに参加させて有効にします。 オーケストレーションではさらに、メッセージの送信先となる出荷業者を動的に指定できます。
このサンプルでは、関連付けを使用して受信メッセージを正しいオーケストレーション インスタンスと組み合わせる方法も示します。
購入者、供給業者、および出荷業者のビジネス プロセス フローは次のとおりです。
購入者のビジネス プロセス フロー
.xml ファイルの PO メッセージを社内の部署から受信します。
PO メッセージを供給業者に送信します。
供給業者のビジネス プロセス フロー
パーティを解決し (受信パーティの解決)、署名証明書に基づいて送信元のパーティを更新します。
購入者からアクティベーション メッセージ (PO) を受信します。
PO の確認メッセージを購入者に送信します。
配送する国/地域を確認します。
送信パーティを解決し、使用する出荷業者を決定します。 国/地域が米国の場合、出荷業者は ShipmentAgency2 です。 国/地域がカナダの場合、出荷業者は ShipmentAgency1 です。
出荷指令の要求メッセージを対象の出荷業者に送信します。
対象の出荷業者から出荷指令の確認メッセージを受信します。
出荷通知メッセージを対象の出荷業者に送信します。
対象の出荷業者から出荷通知の確認メッセージを受信します。
最終の PO 配信確認メッセージを購入者に送信します。
出荷業者のビジネス プロセス フロー (ShipmentAgency1 および ShipmentAgency2 両方の出荷業者に共通)
供給業者から出荷指令の要求メッセージを受信します。
出荷指令の要求メッセージに対する確認メッセージを生成して送信します。
供給業者から出荷通知メッセージを受信します。
出荷通知メッセージに対する確認メッセージを生成して送信します。
このサンプルの処理は次のとおりです。
BuyerProcess.odx オーケストレーションで、メッセージを受信した後、カスタム パイプライン MimePartyResSendPipeline を使用してメッセージをエンコードし供給業者に送信します。 この処理を行うには、パイプライン デザイナーで、カスタムの送信パイプラインをビルドし展開します。 メッセージは供給業者への送信前に購入者の秘密キーでデジタル署名されます。この秘密キーは BizTalk Server 管理コンソールの [BizTalk グループのプロパティ] で指定します。
SupplierProcess.odx オーケストレーションで、MIME/SMIME デコーダー コンポーネントを含むカスタム パイプライン MimePartyResReceivePipeline を使用してメッセージをデコードし、受信パーティを解決します。このとき、購入者の公開キーを使用して購入者の ID を解決します。 この処理を行うには、カスタム受信パイプラインをビルドし展開します。
供給業者側のオーケストレーションで、POCorrelationSets を開始します。POCorrelationSets は昇格されたプロパティ PONo に基づくよう定義されています。 PONo は、後の段階で、このオーケストレーション インスタンスに対する受信メッセージと送信メッセージを照合する際に使用されます。この照合が必要な理由は、オーケストレーション全体で複数の送信アクションと受信アクションが行われるためです。
供給業者側のオーケストレーションで、受信パーティおよび送信パーティの解決を行うためのロール リンクを実装します。 供給業者のオーケストレーションでは、次の 2 種類のロール リンクを使用します。
Buyer_Supplier ロール リンク
Supplier_Shipment ロール リンク
[Buyer_Supplier ロール リンク ] 図形では、仕入先がプロバイダー ロールにあり、仕入先が購入者から最初のメッセージを受け取るため、購入者はコンシューマー ロールになります。 供給業者側のオーケストレーションで購入者のロールに確認メッセージを送信するときには、購入者に関連付けられている送信ポートを使用します。これによって、購入者にメッセージが送信されます。 送信ポートを見つけるには、BizTalk Server管理コンソールで BuyerAgency を右クリックし、[プロパティ] をクリックします。 送信ポートが [ 送信ポート] の下に表示されます。
オーケストレーションで、次のコードを使用してパートナー情報を返し、CheckPartyName という名前の外部アセンブリを呼び出して、XML ファイルをフォルダーに書き込みます。
Buyer_Supplier(Microsoft.XLANGs.BaseTypes.SourceParty)
[Supplier_Shipment ロール リンク ] 図形の [出荷] ロールには、送信先パーティに応じて仕入先から適切な配送業者にメッセージを送信するために使用される 2 つの操作を含む送信ポートが含まれています。 また、供給業者のロールには受信ポートと 2 つの操作が含まれます。これらの操作は、出荷業者から応答を受信するために使用されます。 これらのメッセージの送信および受信時には PONo に基づく関連付けが使用されます。
Note
供給業者側のオーケストレーションをバインドするとき、バインドする必要があるのは、1 つの送信ポートと 2 つの受信ポートだけです。 送信先パーティに対する送信ポートは、既にパーティにバインドされています。 さらに、オーケストレーション内の受信ポートの 1 つに 2 つの受信操作が含まれているため、3 つの 受信 図形が表示された場合でも、バインドする必要があるのはそのうちの 2 つだけです。
供給業者側のオーケストレーションでは、次のコードの 1 行目で QueryShipmentCatalogComponent という名前の外部アセンブリを呼び出し、出荷業者を取得します。 2 行目では、出荷業者のロールの送信先パーティを設定します。
strShipmentName= objQueryShipmentCatalog.GetShipmentDetails(POMessage.MessagePart_1.POHeader.Address.Country); Supplier_Shipment(Microsoft.XLANGs.BaseTypes.DestinationParty) = new Microsoft.XLANGs.BaseTypes.Party(strShipmentName,"OrganizationName");
Shipper1Process.odx および Shipper2Process.odx は、SupplierProcess.odx から出荷指令と出荷通知を受信し、SupplierProcess.odx に応答を返すようビルドされています。 両方の出荷業者側のオーケストレーションで、昇格させたプロパティ PONo に基づく種類の関連付けが使用されます。
このサンプルの場所
<Samples Path>\Orchestrations\PartyResolution\
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
BuyerBinding.xml、ShippingAgency1Binding.xml、ShippingAgency2Binding.xml、SupplierBinding.xml | ポート バインドなどの自動セットアップに使用されます。 |
Cleanup.bat | アセンブリの展開を解除し、グローバル アセンブリ キャッシュからアセンブリを削除するために使用されます。 送信ポートと受信ポートが削除されます。 必要に応じて、Microsoft インターネット インフォメーション サービス (IIS) の仮想ディレクトリが削除されます。 |
PartyResolution.sln | 各種サブフォルダー内にあるすべてのプロジェクトが格納されているソリューション ファイルです。 |
PurchaseOrder.xml | サンプルの入力 PO です。 |
Setup.bat | このサンプルの各部分をビルドおよび初期化するために使用されます。 |
\Buyer フォルダーには、次のファイルが含まれます。 Buyer.btproj、BuyerProcess.odx |
このサンプルの購入者を実装するために使用される、BizTalk プロジェクトおよびオーケストレーションです。 |
\Catalog フォルダーには、次のファイルが含まれます。 Catalog.xml |
PO で指定された出荷先に基づいて出荷業者を決定するために使用されます。 |
\CheckPartyName フォルダーには、次のファイルが含まれます。 AssemblyInfo.cs、CheckPartyName.csproj、Class1.cs |
CheckPartyName アプリケーション用の Microsoft Visual C# プロジェクトおよびソース ファイルです。送信元パーティのプロパティにアクセスするために使用されます。 |
\FilePolling フォルダーには、次のファイルが含まれます。 App.ico、AssemblyInfo.cs、FilePolling.cs、FilePolling.csproj、FilePolling.resx、FilePolling.sln |
FilePolling アプリケーション用の Visual C# ソリューション、プロジェクト、ソース、および関連ファイルです。 このアプリケーションを使用すると、この自動化されたシナリオの進行状況に関する情報を入手できます。 |
\Pipeline\projectschema フォルダーには、次のファイルが含まれます。 MimePartyResReceivePipeline.btp、MimePartyResSendPipeline.btp |
このサンプルの各ロールで使用される BizTalk Server パイプライン ファイルです。 |
\QueryShipmentCatalogComponent フォルダーには、次のファイルが含まれます。 AssemblyInfo.cs、QueryShipmentCatalog.cs、QueryShipmentCatalogComponent.csproj |
QueryShipmentCatalog コンポーネント用の Visual C# プロジェクトおよびソース ファイルです。ファイル Catalog.xml で定義されている出荷カタログにアクセスするために使用されます。 QueryShipmentCatalog コンポーネントは、供給業者が使用する出荷業者を決定します。 地理的に最も近い出荷業者を決定するため、Catalog.xml のデータが使用されます。 |
\Schemas フォルダーには、次のファイルが含まれます。 PODeliveryReceipt.xsd、POPropertySchema.xsd、PurchaseOrder.xsd、PurchaseOrderAcknowledgement.xsd、Schemas.btproj、ShipmentAdvice.xsd、ShipmentAdviceAcknowledgement.xsd、ShipmentOrderAcknowledgement.xsd、ShipmentOrderRequest.xsd |
このサンプルの各ロールで使用されるスキーマです。 |
\ShipmentAgency1 フォルダーには、次のファイルが含まれます。 ShipmentAdviceAck.btm、ShipmentAgency1.btproj、ShipmentOrderAck.btm、Shipper1Process.odx |
このサンプルの ShipmentAgency1 を実装するために使用される、BizTalk プロジェクト、オーケストレーション、およびマップです。 |
\ShipmentAgency2 フォルダーには、次のファイルが含まれます。 ShipmentAdviceAck.btm、ShipmentAgency2.btproj、ShipmentOrderAck.btm、Shipper2Process.odx |
このサンプルの ShipmentAgency2 を実装するために使用される、BizTalk プロジェクト、オーケストレーション、およびマップです。 |
\Supplier フォルダーには、次のファイルが含まれます。 PO_POAck.btm、PO_ShipmentOrderRequest.btm、ShipmentAdviceAck_PODeliveryReceipt.btm、ShipmentOrder_ShipmentAdvice.btm、Supplier.btproj、SupplierProcess.odx |
このサンプルの供給業者を実装するために使用される、BizTalk プロジェクト、オーケストレーション、およびマップです。 |
このサンプルのビルドと初期化
Note
このサンプルをビルドおよび初期化する前に、既定の BizTalk インプロセス ホストが、信頼されている認証として構成されていることを確認する必要があります。 詳細については、「BizTalk Server ランタイム セキュリティに関する推奨事項」を参照してください。
MIME パイプライン コンポーネントは 64 ビット ホスト インスタンスではサポートされていません。 ファイル アダプターの送信および受信ハンドラーと関連付けられているホストを、32 ビット専用ホストとして構成する必要があります。 この詳細については、「 ホストのプロパティを変更する方法」を参照してください。 システムで 32 ビットのみのホストが既に構成されていて、それを使用する場合は、ファイル アダプターの送受信ハンドラーに関連付けられているホストを構成する手順については、「 ファイル アダプター の構成」を参照してください。
このセクションで説明されている証明書を、メッセージに署名する既定の BizTalk インプロセス ホスト インスタンス用に構成されているログオン アカウントの個人用ストアに追加する必要があります。
既定では、以下に示す setup.bat ファイルを使用すると、Party Resolution サンプルが既定のBizTalk Server アプリケーションにインストールされます。 setup.bat ファイルを変更してサンプルを新しいBizTalk Server アプリケーションにデプロイするには、setup.bat ファイルを開き、 ステートメント@ECHO Deploy Assemblies...
の前のセクションを次のように置き換えます。
@ECHO Deploy Assemblies...
btstask AddApp -ApplicationName:PartyResolutionSample -Description:"Party Resolution Orchestration sample from the SDK"
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Schemas\bin\Release\Schemas.dll -Options:GacOnAdd
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Pipeline\projectschema\bin\Release\ProjectSchema.dll -Options:GacOnAdd
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Buyer\bin\Release\Buyer.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%BuyerBindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:ShipmentAgency1\bin\Release\ShipmentAgency1.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%ShipmentAgency1BindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:ShipmentAgency2\bin\Release\ShipmentAgency2.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%ShipmentAgency2BindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Supplier\bin\Release\Supplier.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%SupplierBindingFileName%
PartyResolution サンプルをビルドおよび初期化するには
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\Orchestrations\PartyResolution
ファイル Setup.bat を実行すると、次のアクションが実行されます。
このサンプル用に Visual Studio プロジェクトをコンパイルし、生成されたアセンブリを展開します。
BizTalk Server の送信ポートおよび受信ポートを作成しバインドします。
セットアップ プロセス中、次のような警告が表示される場合があります。 これらの警告は、無視してもかまいません。
"C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\PartyResolution.sln" (Buildtarget) (1) -> "C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj" (default target) (5) -> "C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj" (default target) (5:2) -> (CompileODX target) -> C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\SupplierProcess.odx(831,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it [C:\ProgramFiles\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj] C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\SupplierProcess.odx(841,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it [C:\ProgramFiles\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj]
Visual Studio コマンド プロンプトを起動します。
次のコマンドを入力して、アセンブリをグローバル アセンブリ キャッシュにインストールします。
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Schemas\bin\Release\schemas.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Pipeline\projectschema\bin\Release\ProjectSchema.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Buyer\bin\Release\Buyer.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\ShipmentAgency1\bin\Release\ShipmentAgency1.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\ShipmentAgency2\bin\Release\ShipmentAgency2.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Supplier\bin\Release\Supplier.dll
証明機関 (CA) から、安全な電子メールの証明書を入手します。 CA は、第三者機関である場合と組織内の機関である場合があります。 証明書を取得したら、公開キーと秘密キーをエクスポートします。
秘密キーをホスト インスタンス ログオン アカウントの個人用ストアにインポートしたり、公開キーをローカル コンピューターの "他の人" ストアにインポートするには、次の操作を行います。
BizTalk Server管理コンソールで、BizTalk グループを展開し、[プラットフォームの設定] を展開します。
[ ホスト インスタンス] をクリックし、既定の In-Process ホスト インスタンスに表示されるログオン アカウントを見つけます。 既定のインストールでは、既定のインプロセス ホストの名前は BizTalkServerApplication です。
[スタート] ボタンをクリックし、 [ファイル名を指定して実行] をクリックします。 [ 実行 ] ボックスに「 mmc.exe」と入力し、[OK] をクリック します。 ホスト インスタンス ログオン アカウントの正しいパスワードを入力し、そのアカウントで Microsoft 管理コンソール (MMC) を開きます。
[ファイル] メニューの [スナップインの追加と削除] をクリックします。
[ スナップインの追加と削除 ] ダイアログ ボックスで、[ 証明書] を選択し、[ 追加] をクリックします。
[ 証明書スナップイン ] ダイアログ ボックスで、[ マイ ユーザー アカウント] を選択し、[完了] をクリック します。
[ スナップインの追加と削除 ] ダイアログ ボックスで、[ 証明書] を選択し、[ 追加] をクリックします。
[ 証明書スナップイン ] ダイアログ ボックスで、[ コンピューター アカウント] を選択し、[ 次へ] をクリックします。
[ コンピューターの選択 ] ダイアログ ボックスで、[ ローカル コンピューター] を選択し、[完了] をクリック します。
[スナップインの追加と削除] ダイアログ ボックスで、 [OK] をクリックします。
[ 証明書 - 現在のユーザー ] ノードを展開し、[ 個人用] を展開します。 [証明書] を右クリックし、[すべてのタスク]、[インポート] の順にクリックします。
ウィザードで秘密キーをインポートし、パスワードを指定します。
[証明書 (ローカル コンピューター)] ノードを展開し、[その他のPeople] を展開します。 [証明書] を右クリックし、[すべてのタスク]、[インポート] の順にクリックします。
公開キーをインポートします。
BizTalk Server管理コンソールで、[BizTalk グループ] ノードを右クリックし、[プロパティ] をクリックします。 [ BizTalk グループ - グループのプロパティ ] ダイアログ ボックスで、[証明書] を選択 します。
[ 証明書 ] ダイアログ ボックスで、[ 参照 ] をクリックし、インポートした秘密キーを選択します。 ここで指定した証明書は、送信メッセージの署名に使用されます。 [OK] をクリックします。
このサンプルの BuyerAgency パーティを更新するには、次の操作を行います。
BizTalk Server管理コンソールで、[パーティ] を選択します。
[BuyerAgency] を右クリックし、[プロパティ] をクリックします。 [ BuyerAgency - Party Properties ] ダイアログ ボックスで、[ 全般] を選択します。
ダイアログの [ エイリアス ] セクションで、名前と修飾子を WindowsUser に設定した新しいエイリアスを追加します。 値を domain\user name (SOMEDOMAIN\someuser など) の <形式でユーザー名> に設定します。
[ 証明書 ] を選択し、[ 参照 ] をクリックして、インポートした公開キーを選択します。 ここで指定した証明書は、受信メッセージの送信者 ID の検証に使用されます。 [OK] をクリックします。
BizTalk Server管理コンソールで、[プラットフォームの設定] を展開し、[ホスト] を選択します。
BizTalkServerApplication を右クリックし、[プロパティ] をクリックします。 [ BizTalkServerApplication - ホストのプロパティ ] ダイアログ ボックスで、[証明書] を選択 します。
[ 参照] を クリックし、インポートした秘密キーを選択します。 ここで指定した証明書は、受信メッセージの解読に使用されます。 [OK] をクリックします。
BizTalk Server管理コンソールで、[プラットフォームの設定] を展開し、[ホスト インスタンス] を選択します。
BizTalkServerApplication を右クリックし、[再起動] をクリックします。
このサンプルの実行
PartyResolution サンプルを実行するには
次のフォルダーから FilePolling.exe を実行します。
<Samples Path>\Orchestrations\PartyResolution\FilePolling\bin\Debug
[ ポーリングの開始] をクリックします。
用意されている PO インスタンス ファイル PurchaseOrder.xml を、次のフォルダーにコピーします。
<Samples Path>\Orchestrations\PartyResolution\FileDrop\PurchaseOrder
次の各時点でサンプルの進行状況を知らせるメッセージがメッセージ ボックスの形式で表示されるので、それを確認します。
供給業者が購入者から PO を受信したとき。
出荷業者 1 または 2 から出荷指令の要求を受信したとき。
出荷業者 1 または 2 から出荷通知を受信したとき。
供給業者が購入者に PO の配信確認を送信したとき。
[ 終了 ] をクリックして、ファイル ポーリング プログラムを閉じます。
Note
PurchaseOrder.xml 内の "Country" タグを "US" に編集し、手順 2. と 3. を繰り返します。 出荷指令が ShipmentAgency2 に送信されることを確認します。
このサンプルのアンインストール
PartyResolution サンプルをアンインストールするには
Visual Studio コマンド プロンプトで、ディレクトリ (cd) を Samples Path>\Orchestrations\ PartyResolution\ に<変更します。
Cleanup.bat を実行します。
参照
パーティの解決パイプライン コンポーネント
MIME-SMIME エンコーダー パイプライン コンポーネントを構成する方法
MIME-SMIME デコーダー パイプライン コンポーネントを構成する方法
オーケストレーション (BizTalk Server サンプル フォルダー)