次の方法で共有


式を使用してメッセージを動的に変換する方法

式を使用して、オーケストレーション内のメッセージを動的に変換できます。 XLANG は、メッセージの構築図形内のメッセージ割り当て図形内から呼び出すことができる変換メソッドを公開します。 これは、 Transform 図形を使用するときに呼び出されるのと同じメソッドですが、オーケストレーション内で指定したマップを使用してプログラムでメッセージを変換できます。 これは、型に依存しないメッセージ処理を行う場合に便利です。 たとえば、受信した受信メッセージによって提供されるパラメーターに基づいて受信メッセージを変換するために一連のマップから選択する必要があるビジネス プロセスがある場合は、全体的なビジネス プロセスをそのまま維持しながら、式図形の変換方法を使用してこれを実現できます。

メッセージの変換

次のサンプル コードを使用して、 メッセージの割り当て 図形のメッセージをプログラムで変換できます。

MyMapType = typeof(MyMapName);  
transform(MyOutputMsg) = MyMapType(MyInputMsg);  

この例では、MyMapType はオーケストレーションで System.Type 型の変数として宣言されています。 MyMapName は、BizTalk プロジェクトで既に作成されたマップの名前です。 別の BizTalk アセンブリ内のマップを参照する場合は、BizTalk プロジェクトでそのアセンブリを参照する必要があります。 MyInputMsg はソース メッセージで、MyOutputMsg は宛先メッセージです。 マップが複数のソース メッセージを受け取る場合は、次のサンプル コードを使用してメッセージを変換できます。

MyMapType = typeof(MyMapName);  
transform(MyOutputMsg) = MyMapType(MyInputMsg1, MyInputMsg2);  

複数のソース メッセージがある場合は、マップに示されている入力メッセージのパーツ番号に関して、式内の順序で配置する必要があります。

Von Bedeutung

式図形でメッセージを動的に変換する場合は、コンパイル済みのマップをキャッシュするためのキャッシュをユーザー コードに記述してから、式図形のキャッシュを使用して、メッセージ変換を実行する前にマップを取得することをお勧めします。 マップをキャッシュしていない場合は、共通言語ランタイム (CLR) メモリが大幅に増加する可能性があります。 動的マッピングでは、.NET ランタイムがコード アクセス チェックを実行する必要があります。その結果、.NET Evidence オブジェクトは変換ごとにラージ オブジェクト ヒープに配置され、このオブジェクトはオーケストレーションが完了するまで破棄されません。 したがって、これらの種類の変換が多数同時に発生する場合、メモリ使用量が大幅に増加し、メモリ不足例外につながる可能性があります。

こちらもご覧ください

オーケストレーション図形
BizTalk マッパーを使用したマップの作成