次の方法で共有


BAM インターセプターについて

概要

BAM インターセプターは、アプリケーションをインストルメント化して対象のデータを取得するためのオブジェクトです。 次の図は、BAM インターセプターの役割と、他の BAM コンポーネントとのやり取りを示しています。

BAM インターセプターの役割と、他の BAM コンポーネントとの相互作用を示す画像。
BAM インターセプター

ユーザーは、対象のデータが発生するアプリケーションのステップごとにインターセプター OnStep を呼び出し、ステップの識別子を指定して、アプリケーションで使用するデータや任意のオブジェクトを指定します。

コールバックが発生した場合に現在のステップ ID およびデータ オブジェクトをコールバック プロシージャで取得するためのコールバック関数を実装する必要があります。 BAM インターセプターの役割は基本的に、データ オブジェクトをコールバック関数に渡すという単純なものです。 データを抽出する実際のロジックはアプリケーション内に存在しています。 たとえば、データが XML メッセージの形式である場合、コールバックは XPath を使用します。 XPath の詳細については、「 メッセージの割り当てでの XPath の使用」を参照してください。

BAM インターセプターは、構成に基づいて各ステップでどのデータを要求するかを判断します。この構成はプログラムで作成できます。 次に BAM インターセプターは取得したデータを使用して DirectEventStream または BufferedEventStream を呼び出します。これらのクラスを保持し、引数として OnStep インターセプターに渡す必要があります。

ステップごとにインターセプターを呼び出しても、リソースを消耗することはありません。 このステップでインターセプターを呼び出し、何も登録しなければ、インターセプターは直ちに戻ります。 つまり、ディスク操作、トランザクション、メモリの割り当てが行われないため、パフォーマンスは影響をほとんど受けません。 また、必要に応じて BAM が使用するためのデータを抽出することもできます。 データの抽出とデータの可用性に関する手順のパフォーマンスへの影響は、 の IBAMDataExtractor Interface実装によって異なります。

次のコード例は、構成時および実行時のインターセプターの使用例を示しています。

構成時

次のコードは、アプリケーションの recvPO ステップでインターセプターを停止し、Customer Name および Customer SSN を要求するようにインターセプターを構成する方法を示しています。

ActivityInterceptorConfiguration cfg= new ActivityInterceptorConfiguration ("PurchaseOrder");  
...  
cfg.RegisterDataExtraction("CustomerName",recvPO,XpathName);  
cfg.RegisterDataExtraction("CustomerSSN",recvPO,XpathSSN);  
...  
BAMInterceptor interceptor=new BAMInterceptor();  
cfg.UpdateInterceptor(interceptor);  
...  
// The interceptor instance is ready.  

インターセプター インスタンスを一度作成すると、インスタンスを保存して後続の実行時に使用できます。

BAM で使用するデータやマイルストーンについて、さまざまな環境設定を表すインターセプターをあらかじめ作成しておくことができます。 最高のパフォーマンスを得るには、BinaryFormatter クラスを使用してインターセプター インスタンスをシリアル化してください。

実行時

実稼働環境で実行時にインターセプターを使用するには、次のコードを使用します。

// Deserialize the Interceptor that was prepared before  
...  
es=new DirectEventStream(...)  
...  
Interceptor.OnStep(recvPO, data1, es, callback)  
...  
Interceptor.OnStep(approvePO, data2, es, callback)  
...  

各値の説明:

  • recvPOapprovePO は、アプリケーションの手順を識別するために使用する任意のオブジェクトです。

  • data1data2 は、その時点で持っている任意のオブジェクトであり、たとえば、発注書の XML ドキュメントなど、興味深いデータを含む可能性があります。

  • es は、パフォーマンス要件に応じて、DirectEventStream または BufferedEvent ストリームです。

  • callback は の実装です IBAMDataExtractor Interface

    SDK サンプルの BAM API (BizTalk Server サンプル) では、構成ツールとランタイム アプリケーションの例の両方を含むインターセプターの使用を示します。

    BizTalk オーケストレーション エンジンはインターセプトに対応します。これにより、実行時に追跡プロファイル エディターを使用して BAM 用に収集されるデータを変更できます。

このセクションの内容

参照

BAM API (BizTalk Server サンプル)