英語で読む

次の方法で共有


インデックス Functoid

インデックス Functoid を使用すると、一連のレコード内の特定のレコードから情報を選択できます。 各 インデックス Functoid は、1 つのフィールドから情報を収集します。

一般的に、1 つの入力ファイルには、特定のレコードが複数含まれます。 たとえば、天気予報では、 DailySummary 要素が何度も発生する可能性があります。 DailySummary 要素には、温度、気圧、風速の属性が含まれる場合があります。 次のコードは、気象レポートの例です。

<ns0:WeatherReport xmlns:ns0="http://IndexFunctoid.WeatherReport">  
    <DailySummary Pressure="80" Windspeed="10" Temperature="20" />  
    <DailySummary Pressure="78" Windspeed="20" Temperature="23" />  
    <DailySummary Pressure="77" Windspeed="16" Temperature="24" />  
</ns0:WeatherReport>  

基になるスキーマでは、DailySummary レコードの Max Occurs プロパティは、繰り返しレコードまたはループ レコードを示すために無制限に設定されます。 BizTalk マッパーでは、このレコードはループとしてコンパイルされます。

天気予報の最初の 2 つの DailySummary レコードの気象情報を収集するとします。 BizTalk マッパーでは、受信ソース スキーマの DailySummary レコードの各属性を Index Functoid に接続できます。 さらに、各 Index Functoid では、情報を描画する DailySummary レコード (1 番目または 2 番目) を指定できます。 その後、 インデックス Functoid は、変換先スキーマの適切なフィールドに接続できます。

次の図は、この方法で使用される インデックス Functoid を示しています。

コピー先スキーマの適切なフィールドに接続されている Index Functoid を示す画像。
インデックス Functoid の例

最初の日の毎日のサマリー情報を取得するために、3 つの Index Functoid の上位セットのインデックス値が 1 に設定されています。 2 日目の日単位のサマリー情報を取得するために、3 つの Index Functoid の下位セットのインデックス値が 2 に設定されています。

インデックス Functoid では、[Functoid Functoid> の構成<] ダイアログ ボックスを使用して入力パラメーターを設定します。 最初の入力パラメーターが、送信元スキーマのループ レコード内のフィールドを示します。 2 番目以降の入力パラメーターでは、特定のレコードを指定します。 入れ子になった繰り返し構造内のレコードを選択するために、複数のインデックス値を指定できます。 最も内側の構造のインデックス値が 2 番目のパラメーターです。 内側から 2 つ目の構造のインデックス値が 3 番目のパラメーターで、以降も同様です。 たとえば、前の DailySummary レコードが WeeklyData レコード内にあったとします。 2 番目の WeeklyData の最初の DailySummary から Pressure を取得するには、2 番目のパラメーターは 1、3 番目のパラメーターは 2 になります。

この例では、[ 圧力 ] フィールドが繰り返されないことを前提としています。 フィールドが繰り返し実行された場合、インデックスはオフになります。カウントは日単位のサマリーではなく、[圧力] フィールドで始まります。

注意

一般的にインデックス シーケンスの入力パラメーターは定数ですが、送信元スキーマのノードからのリンクを使用することもできます。 このリンクが 1 番目の入力パラメーターの親ではないループ レコードからのリンクの場合、インデックス シーケンスの入力値は、入力インスタンス メッセージのノードの最初のインスタンスから取得されます。

注意

通常、インデックス シーケンスの入力値は、送信元ドキュメントの現在のコンテキストに関するものです。

重要

Index Functoid には、フィールド レベルからルート ノードより下の最初のレベルまでの親ノードと同じ数のインデックス値が必要です。 たとえば、複数の気象レポート インスタンス メッセージでは、2 つのインデックス値が必要です。 単一の気象レポート インスタンス メッセージでは、必要なインデックス値は 1 つだけです。 Index Functoid の必要なインデックス値の数を設定できない場合、 ソース インスタンス メッセージの最初のノードに基づいて、 Index Functoid の最初の入力パラメーターと一致する出力が作成されます。

参照

マップにインデックス Functoid を追加する方法
高度な Functoid
繰り返し Functoid
レコード カウント Functoid