次の方法で共有


パイプライン インターフェイスの使用

パイプライン コンポーネントは、BizTalk メッセージング エンジンと対話するための定義済みインターフェイスのセットを実装する .NET または COM コンポーネントです。 コンポーネントの機能に応じて、さまざまなインターフェイスを実装する必要があります。 このトピックでは、これらのインターフェイスとその一部のメソッドについて説明します。

Warnung

COM を使用してカスタム パイプライン コンポーネントを構築する場合は、マルチスレッド アパートメント (MTA) モデルを使用するようにコンポーネントを構成する必要があります。 そうしないと、コンポーネントの呼び出しが失敗し、E_NOINTERFACE エラーが発生します。

IPipelineContext

すべてのパイプライン コンポーネントは 、IPipelineContext メソッドを使用して、すべてのドキュメント処理固有のインターフェイスにアクセスできます。 IPipelineContext インターフェイスには、次の機能があります。

  • コンポーネントがアンビエント パイプラインとステージの設定を取得できるようにします。

  • コンポーネントがメッセージとメッセージ ファクトリを取得できるようにします。 これらのファクトリを使用すると、コンポーネントはコンポーネントの実行に必要なさまざまなオブジェクトを作成できます。

  • コンポーネントがドキュメントの仕様を取得できるようにします。 ドキュメント仕様は、XSD スキーマと追加の注釈です。

IBaseComponent

すべてのパイプライン コンポーネントは、コンポーネントに関する基本情報を提供するために、このインターフェイスを実装する必要があります。

IComponent

アセンブラーと逆アセンブラーを除くすべてのパイプライン コンポーネントは、処理のために BizTalk Server エンジンからメッセージを取得し、処理されたメッセージをエンジンに渡すために、このインターフェイスを実装します。

実行する。 入力メッセージをコンポーネントに渡し、処理されたメッセージをコンポーネントから取得するためにエンジンによって呼び出されるメソッド。

IPropertyBag、IPersistPropertyBag

パイプライン コンポーネントは、構成情報を受け取るために IPersistPropertyBag を実装する必要があります。 このインターフェイスと IPropertyBag は標準インターフェイスです。 これらのインターフェイスの詳細については、Microsoft .NET Framework ソフトウェア開発キット (SDK) のドキュメントを参照してください。

IDisassemblerComponent

逆アセンブル コンポーネントは、入力時に 1 つのメッセージを受信し、出力時に 0 個以上のメッセージを生成するパイプライン コンポーネントです。 逆アセンブル コンポーネントは、メッセージのインターチェンジを個々のドキュメントに分割するために使用されます。 逆アセンブラー コンポーネントは、処理のために BizTalk Server からメッセージを取得し、逆アセンブルされたドキュメントを BizTalk Server に渡すために 、IDisassemblerComponent インターフェイスのメソッドを実装する必要があります。

メソッド 説明
逆アセンブル 受信ドキュメント pInMsg の逆アセンブルを実行します。
GetNext の 逆アセンブラーの実行の結果として発生したメッセージ セットから次のメッセージを取得します。 これ以上メッセージがない場合は NULL を 返します。

回復可能なインターチェンジ処理をサポートする逆アセンブラー コンポーネントを作成する場合は、次の操作を行う必要があります。

  1. 入力ストリームを VirtualStream() でラップしてシーク可能にします。

  2. GetNext() には、メッセージが不適切なタイミングを判断するロジックがあります。 メッセージが不正な場合は、BTS.MessageDestination = "SuspendQueue" に設定し、GetNext() でメッセージを返します。

  3. メッセージが適切な場合は、BTS の SuspendMessageOnRoutingFailure を True に設定して、GetNext() でメッセージを返します。

IAssemblerComponent

アセンブリ コンポーネントは、入力で複数のメッセージを受信し、出力時に 1 つのメッセージを生成するパイプライン コンポーネントです。 アセンブリ コンポーネントは、個々のドキュメントをメッセージ交換バッチに収集するために使用されます。

BizTalk Server のこのリリースでは、アセンブリ機能は使用されないため、BizTalk Server は常に 1 つのドキュメントをコンポーネント入力に渡します。

アセンブラー コンポーネントは、実行時に BizTalk Server エンジンによって呼び出される IAssemblerComponent メソッドを実装します。

メソッド 説明
AddDocument インターチェンジに含まれるメッセージの一覧にドキュメント pInMsg を追加します。
アセンブリ 前のメソッドによって追加されたメッセージからインターチェンジをビルドします。 アセンブリされたメッセージへのポインターを返します。

IProbeMessage

メッセージ プローブ機能が必要な場合は、パイプライン コンポーネント (全般、アセンブリ、または逆アセンブル) で IProbeMessage を実装できます。 プローブ コンポーネントは、 FirstMatch 実行モードのパイプライン ステージで使用されます。 このような段階では、BizTalk Server はコンポーネントにメッセージを渡し、 Probe メソッドはメッセージの先頭を調べて、コンポーネントがメッセージの形式を認識するかどうかを判断します。

メソッド 説明
プローブ このメソッドは pInMsg メッセージを 受け取り、形式が認識される場合は True を返し、それ以外の場合は False を 返します。

INamedItem

これは、マネージド コードとアンマネージド コードからドキュメント スキーマにアクセスするためのヘルパー インターフェイスです。

INamedItemList

これは、マネージド コードとアンマネージド コードからドキュメント スキーマにアクセスするためのヘルパー インターフェイスです。

IDocumentSpec

パイプライン コンポーネントでは、 IDocumentSpec インターフェイスのメソッドを使用して、コンテンツ プロパティをコンテキストとバックに移動したり、ドキュメント スキーマにアクセスしたりなど、ドキュメント固有のアクションを実行できます。

メソッド 説明
DocType 現在のドキュメントの型を返します。
DocSpecName 現在のドキュメントの仕様名を返します。
GetSchemaCollection 現在のドキュメントのドキュメント スキーマの一覧を返します。
GetBodyPath 本文パーツが開始するドキュメント内のノードに XPath を返します。
GetDistinguishedPropertyAnnotationEnumerator すべての識別フィールド プロパティ注釈のディクショナリ列挙子を返します。
GetPropertyAnnotationEnumerator すべてのプロパティ注釈の列挙子を返します。

IComponentUI

パイプライン コンポーネントは、パイプライン デザイナー環境内で使用するには、このインターフェイスを実装する必要があります。

メソッド 説明
アイコン このコンポーネントに関連付けられているアイコンを提供します。
検証 パイプライン デザイナーは、パイプライン コンパイルの前にこのメソッドを呼び出して、すべての構成プロパティが正しく設定されていることを確認します。

Icon プロパティは IntPtr を返します。 次の C# の例は、 IntPtr を返す方法を示しています。

static   ResourceManager resManager = new ResourceManager("ResourceManager", Assembly.GetExecutingAssembly());  
...  
[Browsable(false)]  
public IntPtr Icon  
{  
   get  
   {  
      return ((Bitmap)resManager.GetObject("MyIcon")).GetHicon();  
   }  
}  

詳細については、UI ガイダンスと開発者 API 名前空間リファレンスIComponentUI インターフェイス (COM) を参照してください。

こちらもご覧ください

カスタム パイプライン コンポーネントの開発
CustomComponent (BizTalk Server サンプル)