レコードカウント Functoid は、入力インスタンス メッセージ内のレコードをカウントします。
レコードカウント Functoid には、1 つの入力と 1 つの出力があります。 入力は、ソース スキーマのループ レコードからのリンクです。 レコードカウント Functoid の出力は、実際の入力インスタンス メッセージ内のループ レコードの数です。
ループ レコードは、入力インスタンス メッセージで予期しない回数繰り返される要素に対応します。 たとえば、発注書では、 Item 要素が何度も発生することがあります。 また、Item 要素には、製品、説明、価格、数量が含まれる場合があります。 次のコードは、このような発注書の簡略化された例です。
<ns0:PurchaseOrder xmlns:ns0="http://RecordFunctoid.PurchaseOrder">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<LineItems>
<Item>
<Product>Laptop Computer</Product>
<Description>Thin profile laptop</Description>
<Price>1999.95</Price>
<Quantity>1</Quantity>
</Item>
<Item>
<Product>Monitor Swipes</Product>
<Description>Disposable monitor swipes</Description>
<Price>3.95</Price>
<Quantity>10</Quantity>
</Item>
</LineItems>
</ns0:PurchaseOrder>
Item レコードの Max Occurs プロパティは、無制限として設定されます。 これは 、Item レコードがループし、BizTalk マッパーがこのレコードをループとしてコンパイルすることを示します。
発注書入力インスタンス メッセージ内の Item 要素の合計数を検索し、結果を出力インスタンス メッセージのフィールドに配置するとします。
次の図は、受信発注書の品目数をカウントし、SummedPO 出力インスタンス メッセージの ItemCount フィールドにその値を配置するレコード カウント Functoid を示しています。
レコードカウント ファンクトイド マップ
Item レコードの Max Occurs プロパティが無制限になることに注意してください。 これは 、Item レコードがループし、BizTalk マッパーがこのレコードをループとしてコンパイルすることを示します。
2 つの Item 要素を含む上記のサンプル発注書インスタンス メッセージでは、 ItemCount フィールドの値は 2 に設定されます。
<ns0:SummedPO xmlns:ns0="http://RecordCountFunctoid.SummedPO">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<POTotal>2039.45</POTotal>
<ItemCount>2</ItemCount>
</ns0:SummedPO>
注
レコードカウントのファンクトイドを使用して、繰り返しフィールド要素をカウントすることもできます。 レコードに限定されません。
こちらもご覧ください
レコードカウントファンクトイドをマップに追加する方法
高度な Functoid
インデックス ファンクトイド
イテレーション ファンクトイド
ループング ファンクトイド