BizTalk オーケストレーションを利用し、カスタム スケジュール サービスを作成する
Microsoft BizTalk ESB Toolkit の一部であるスケジュール フレームワークでは、オーケストレーションを使用した旅程ステップの実行がサポートされています。 カスタム スケジュール サービスは、機能要件に基づいて Microsoft BizTalk Server オーケストレーションとして実装できます。これには、次のものが含まれる場合があります。
複数のサービス呼び出し ( Scatter-Gather サンプルのインストールと実行で示されているように)
プロトコル・メディエーションおよびメッセージ相関 (例: HTTP-MQSeries)
外部データ ソースからのメッセージ エンリッチメントに基づく複雑なルーティング決定
ビジネス処理ロジック
BizTalk Server オーケストレーションを使用して実装されるすべてのスケジュール サービスは、次の役割を担います。
ESB 例外処理フレームワークまたは再送信をサポートするオプションのカスタム例外ハンドラー (一方向のスケジュール) を使用した例外とエラー処理
次のスケジュール サービス ステップを実行できるように、スケジュールを進め、BizTalk Server経由で送信メッセージを発行する
BizTalk Server オーケストレーションを使用してカスタム スケジュール サービスを作成するには
新しいオーケストレーションを含む新しいBizTalk Server プロジェクト (たとえば、MyCustomeItineraryService.odx) を作成します。
次のアセンブリへの参照を追加します。
Microsoft.Practices.ESB.Itinerary
Microsoft.Practices.ESB.Itinerary.Schemas
Microsoft.Practices.ESB.ExceptionHandling
Microsoft.Practices.ESB.ExceptionHandling.Faults
オーケストレーションで、論理ダイレクト バインド受信ポートとアクティブ化された受信図形を定義します。
メッセージ スケジュール コンテキストからオーケストレーションをアクティブ化するサブスクリプション フィルターを定義して、オーケストレーションが MyCustomItineraryService ステップを実行できるようにします。 次のコードは、適切なフィルターの例を示しています。
(Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName == "MyCustomItineraryService") && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState == "Pending") && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType == "Orchestration")
Microsoft.Practices.ESB.Itinerary.ItineraryStep 型のオーケストレーションを定義します。 次のコードに示すように、この変数を設定するオーケストレーションに式アクティビティを追加します。
// Retrieve the current itinerary step. itinerary = new Microsoft.Practices.ESB.Itinerary.SerializableItineraryWrapper(); step = new Microsoft.Practices.ESB.Itinerary.SerializableItineraryStepWrapper(); itinerary.Itinerary = Microsoft.Practices.ESB.Itinerary.ItineraryOMFactory.Create(InboundMessage); step.ItineraryStep = itinerary.Itinerary.GetItineraryStep(InboundMessage);
次の旅程ステップの送信メッセージを作成するカスタム実装を旅程に追加します。たとえば、OutboundMsg です。
受信メッセージからのメッセージ コンテキストを使用する次の式アクティビティを使用して、スケジュールを進めます。
OutboundMessage(*) = InboundMessage(*); itinerary.Itinerary.Advance(OutboundMessage, itineraryStep.ItineraryStep);
次のスケジュール サービスをアクティブにするには、直接バインドされた送信ポートを介して、更新されたスケジュールを含む送信メッセージを送信します。
BizTalk Server オーケストレーションを使用したカスタム スケジュール サービスの実装の詳細については、「スケジュールオンランプ サンプルのインストールと実行」および「Scatter-Gather サンプルのインストールと実行」を参照してください。