ロール リンクは、オーケストレーションと取引先との間の相互作用の抽象化の一種です。 ロール リンクを使用すると、取引先の解決、メッセージ コンテンツ、またはデータベース参照の結果に基づいて対話する取引先を動的に選択し、全体的なビジネス プロセスをそのまま維持することができます。
たとえば、企業間のシナリオでは、複数の購入者、1 つのサプライヤー、およびサプライヤーの複数の配送業者があります。 購入者が発注書を仕入先に送信すると、仕入先は、どの購入者が発注書を送信するかをパーティの解決を通じて認識し、適切な割引を適用できます。 さらに、注文された商品に基づいて、サプライヤーは実行時に配送を担当する配送業者を決定します。 各配送業者は独自の輸送プロトコルを持つことができますが、サプライヤーは実行時に同じビジネス プロセスを使用して、すべての配送業者を処理し、どの代理店とやり取りするかを決定できます。 後の段階で、配送業者がトランスポート プロトコル (FTP から HTTP など) を更新する場合、サプライヤーは BizTalk Explorer または BizTalk Server 管理コンソールを使用して、その特定の配送業者に関連付けられている送信ポートを更新するだけで済みます。 サプライヤーは、オーケストレーションに存在するビジネス プロセスを変更する必要はありません。
役割
オーケストレーションには、次の 2 つのロールがあります。
メッセージを受信して処理するための "実装" ロール。 このロールはプロバイダーとも呼ばれます。
メッセージを送信するための「使用」役割。 このロールはコンシューマーとも呼ばれます。
役割リンク
ロール リンクには、コンシューマー ロールまたはプロバイダー ロール、またはそれぞれに 1 つを含めることができます。 コンシューマー ロールは、プロバイダー ロールによって提供されるサービスを使用します。 これらのロールのいずれかまたは両方を持つロール リンクを定義すると、リンクしているパートナーによって補完的なロールが満たされていると見なされます。
ロール リンクには、 SourceParty プロパティ、 DestinationParty プロパティ、開始ロールがあります。 開始ロールとは、最初の通信が行われるロールであり、 DestinationParty プロパティの値を設定してロール リンクを開始します。
開始ロールがメッセージを送信するためのコンシューマーである場合は、オーケストレーションで DestinationParty プロパティを明示的に設定します (1 回のみ)。 これを行うには、次の例のように、式図形で DestinationParty の値を設定します。ここで ConfirmOrder はロール リンクの名前、PartnerName と OrganizationName はパーティのパラメーターです。
ConfirmOrder(Microsoft.XLANGs.BaseTypes.DestinationParty) = new Microsoft.XLANGs.BaseTypes.Party("PartnerName", "OrganizationName");
開始ロールがメッセージを受信するためのプロバイダーである場合、 DestinationParty プロパティは受信側によって自動的に初期化されます。 DestinationParty はプロバイダー自体に設定されます。 SourceParty プロパティは読み取り専用であり、信頼されたパイプライン コンポーネントを介して提供され、送信者のセキュリティ識別子 (SID) またはパーティに関連付けられている証明書に基づいてパーティー名を解決します。 パイプライン コンポーネントを実行しているホストは、 認証信頼済みとしてマークされている必要があります。 次のサンプル コードを使用して、式図形の SourceParty の値を取得できます。
PartyName = Buyer_Supplier(Microsoft.XLANGs.BaseTypes.SourceParty);
ロール リンクの種類
ロール リンクは、1 つまたは 2 つのロールで構成されるロール リンクの種類のインスタンスです。 ロール リンクの種類を使用する場合は、次の点を考慮してください。
1 つのロール リンクの種類内の特定のポートの種類を 1 回だけ参照できます。
ロール リンクの種類の定義にはポートの種類が含まれているため、ポートの種類のスコープは、それを使用する任意のロール リンクの種類のスコープを含む必要があります。
Business Activity Services (BAS) を使用する場合、構造化パラメーター スキーマは、関連付けられているロール リンクの種類と同じ BizTalk アセンブリで定義する必要があります。 スキーマはロール リンクの種類に関連付けられ、そのロール リンクの種類を構成する個々のロールには関連付けられていないため、異なるロールを果たすパーティがロール リンクの種類を含むアセンブリを共有している場合、両方の当事者に同じ構造化パラメーター スキーマが表示されます。 2 つのパーティが同じロール リンクの種類を使用しているが、パラメーター スキーマが異なる必要がある場合は、パーティごとに異なるアセンブリを作成する必要があります。 ロール リンクの種類は、各アセンブリで複製する必要があります。