英語で読む

次の方法で共有


累積 Functoid

概要

累積 Functoid は、一連の値を合計、連結文字列、平均などの 1 つの値に減らします。

すべての 累積 Functoid は、次の 2 つの入力パラメーターを受け入れます。

  1. 累積する値。 この値は、文字列値を必要とする累積連結 Functoid を除くすべての累積 Functoid の数値です。 値は、多くの場合、 フィールド属性フィールド要素、または Record ノードからのリンクです (Mixed プロパティTrue に設定されています)。

    注意

    スキーマ ツリー内の先祖 Record ノードがループしていない場合は、 累積 Functoid を使用する必要はありません。

  2. 値を累積する範囲。 この引数は省略可能です。 この引数は、指定された値を累積するレベルを示します。

    次の表は、スコープ パラメーターの値とその動作を示しています。

スコープ パラメーターの値 結果
0 (ゼロ) インスタンス メッセージ全体の値を累積します。 これが既定値です。
1 (one) 同じ親要素を持つ要素の値または属性値を累積します。
2 同じ祖父要素を持つ要素の値または属性値を累積します。
3 以上 上記のパターンよりもさらに幅の広い範囲 (祖父の親要素、祖父の祖父要素など) の要素の値または属性値を累積します。

累積 Functoid を使用する例としては、発注書全体のコストを合計する場合があります。 次のコードは、注文書の例です。

<ns0:PurchaseOrder xmlns:ns0="http://CumulativeFunctoid.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 マッパーは、このレコードをループとしてコンパイルします。

次の図は、 乗算 Functoid と 累積合計 Functoid を使用して、受信した発注書の品目レコードを集計し、結果を POTotal フィールドに出力するマップを示しています。

累積合計 Functoid の使用状況を示すマップ。

このマップでは、前のデータと既定のスコープ パラメーターの値 0 (ゼロ) を使用して、次の出力結果を生成しています。

<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">  
    <From>Kevin F. Browne</From>  
    <To>Northwind Traders</To>  
    <POTotal>2039.45</POTotal>  
</ns0:SummedPO>  

この例では、LineItems レコードの下にあるすべての Item レコードが累積に含まれます。スコープ パラメーターの既定値は、メッセージ全体の値の累積を示します。 [ 価格 ] フィールドと [数量] フィールド は乗算 Functoid に送信されます。 乗算 Functoid の出力は、累積合計 Functoid への入力になります。 累積合計 Functoid の出力は、項目レコードが入力発注書で走査される累積値です。

注意

入力の累積集計は、入力リンクの発生元の親レコードに対して行われます。 累積 Functoid が別の Functoid から入力を取得した場合でも、累積集計は、累積 Functoid への入力として機能する Functoid への入力リンクの親レコードに対して行われます。

スコープ パラメーターを 1 (one) に変更し、出力スキーマに若干の変更を加えると、出力結果は次のようになります。

<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">  
    <From>Kevin F. Browne</From>  
    <To>Northwind Traders</To>  
    <ItemTotal>1999.95</ItemTotal>  
    <ItemTotal>39.5</ItemTotal>  
</ns0:SummedPO>  

スコープ パラメーターを 1 (one) に設定すると、同じ親を持つ要素または属性の累積値が示されます。 ここで、[ 価格 ] フィールドと [数量] フィールドには親として Item が含まれているため、Functoid は個々のアイテムの値を合計 します

スコープ パラメーターを 2 に設定すると、この Functoid は、同じ祖父を持つ要素または属性の値を累積します。 [ 価格 ] フィールドと [数量] フィールドの祖父母は LineItems レコードです 。 インスタンス メッセージには LineItems レコードが 1 つしかないため、結果は既定値の使用と同じです。

<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">  
    <From>Kevin F. Browne</From>  
    <To>Northwind Traders</To>  
    <POTotal>2039.45</POTotal>  
</ns0:SummedPO>  

注意

累積 Functoid ( 累積文字列 Functoid を除く) では、数値以外の入力は無視されます。 たとえば、"three" という入力値は無視されます。

累積平均累積最小値、累積最大 Functoid は、累積合計 Functoid と同様に動作します。 累積文字列は、数値を集計するのではなく、文字列を連結します。

使用可能な Functoid

累積 Functoid は次のとおりです。

  • 累積平均
  • 累積連結
  • 累積最大値
  • 累積最小値
  • 累計合計

これらの Functoid の詳細については、 UI ガイダンスと開発者 API 名前空間のリファレンスを参照してください

参照