次の方法で共有


BizTalk オーケストレーションを利用し、カスタム スケジュール サービスを作成する

Microsoft BizTalk ESB Toolkit の一部であるスケジュール フレームワークでは、オーケストレーションを使用した旅程ステップの実行がサポートされています。 カスタム スケジュール サービスは、機能要件に基づいて Microsoft BizTalk Server オーケストレーションとして実装できます。これには、次のものが含まれる場合があります。

  • 複数のサービス呼び出し ( Scatter-Gather サンプルのインストールと実行で示されているように)

  • プロトコル・メディエーションおよびメッセージ相関 (例: HTTP-MQSeries)

  • 外部データ ソースからのメッセージ エンリッチメントに基づく複雑なルーティング決定

  • ビジネス処理ロジック

    BizTalk Server オーケストレーションを使用して実装されるすべてのスケジュール サービスは、次の役割を担います。

  • ESB 例外処理フレームワークまたは再送信をサポートするオプションのカスタム例外ハンドラー (一方向のスケジュール) を使用した例外とエラー処理

  • 次のスケジュール サービス ステップを実行できるように、スケジュールを進め、BizTalk Server経由で送信メッセージを発行する

BizTalk Server オーケストレーションを使用してカスタム スケジュール サービスを作成するには

  1. 新しいオーケストレーションを含む新しいBizTalk Server プロジェクト (たとえば、MyCustomeItineraryService.odx) を作成します。

  2. 次のアセンブリへの参照を追加します。

    • Microsoft.Practices.ESB.Itinerary

    • Microsoft.Practices.ESB.Itinerary.Schemas

    • Microsoft.Practices.ESB.ExceptionHandling

    • Microsoft.Practices.ESB.ExceptionHandling.Faults

  3. オーケストレーションで、論理ダイレクト バインド受信ポートとアクティブ化された受信図形を定義します。

  4. メッセージ スケジュール コンテキストからオーケストレーションをアクティブ化するサブスクリプション フィルターを定義して、オーケストレーションが MyCustomItineraryService ステップを実行できるようにします。 次のコードは、適切なフィルターの例を示しています。

    (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceName   
        == "MyCustomItineraryService")   
    && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceState == "Pending")  
    && (Microsoft.Practices.ESB.Itinerary.Schemas.ServiceType   
        == "Orchestration")  
    
  5. 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);  
    
    
  6. 次の旅程ステップの送信メッセージを作成するカスタム実装を旅程に追加します。たとえば、OutboundMsg です。

  7. 受信メッセージからのメッセージ コンテキストを使用する次の式アクティビティを使用して、スケジュールを進めます。

    OutboundMessage(*) = InboundMessage(*);   
    itinerary.Itinerary.Advance(OutboundMessage, itineraryStep.ItineraryStep);  
    
  8. 次のスケジュール サービスをアクティブにするには、直接バインドされた送信ポートを介して、更新されたスケジュールを含む送信メッセージを送信します。

    BizTalk Server オーケストレーションを使用したカスタム スケジュール サービスの実装の詳細については、「スケジュールオンランプ サンプルのインストールと実行」および「Scatter-Gather サンプルのインストールと実行」を参照してください。