Freigeben über


Kumulative Funktoide

Überblick

Kumulative Funktoide reduzieren eine Reihe von Werten auf einen einzelnen Wert, z. B. eine Summe, eine verkettete Zeichenfolge oder einen Durchschnitt.

Alle kumulativen Funktoide akzeptieren zwei Eingabeparameter:

  1. Den zu kumulierenden Wert. Dieser Wert ist numerisch für alle kumulativen Funktoide mit Ausnahme des Funktoids Kumulativer Verketten , das einen Zeichenfolgenwert erwartet. Der Wert ist ein Link, häufig aus einem Feldattribute, Feldelement oder Record-Knoten (wobei die Mixed-Eigenschaft auf True festgelegt ist).

    Hinweis

    Wenn keiner der vorgängern Datensatzknoten in der Schemastruktur schleifend ist, ist die Verwendung eines kumulativen Funktoids unnötig.

  2. Der Bereich, in dem der Wert kumuliert wird. Dieses Argument ist optional. Es gibt an, wie eng die angegebenen Werte kumuliert werden müssen.

    In der folgenden Tabelle werden die Werte für den Bereichsparameter und dessen Auswirkung gezeigt.

Bereichsparameterwert Wirkung
0 (Null) Kumuliert den Wert über die gesamte Instanznachricht. Der Standardwert.
1 (eins) Kumuliert den Wert von Element- oder Attributwerten mit demselben übergeordneten Element.
2 Kumuliert den Wert von Element- oder Attributwerten mit demselben über-übergeordneten Element.
3 oder größer Kumuliert den Wert von Element- oder Attributwerten des progressiv größeren Bereichs nach dem vorhergehenden Muster (über-über-übergeordnet, über-über-über-übergeordnet usw.)

Beispiel

Ein Beispiel für die Verwendung eines kumulativen Funktoids kann das Summieren von Kosten für eine Bestellung sein. Der folgende Code ist ein Beispiel für eine Bestellung.

<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>  

Die Max Occurs-Eigenschaft für den Item-Datensatz wäre natürlich nicht gebunden. Dies zeigt an, dass der Datensatz "Item" eine Schleife durchläuft und von BizTalk-Mapper als Schleife kompiliert wird.

Die folgende Abbildung zeigt eine Karte, die ein Funktoid Multiplikation und ein Funktoid kumulative Summe verwendet, um Artikeldatensätze aus einer eingehenden Bestellung zu aggregieren und die Ergebnisse im Feld POTotal auszugeben:

Karte mit der Verwendung des Funktoids für die kumulative Summe.

Die Zuordnung erzeugt mit den vorhergehenden Daten und dem standardmäßigen Bereichsparameterwert von 0 (null) die folgende Ausgabe:

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

In diesem Beispiel sind alle Item-Datensätze unter dem LineItems-Datensatz an der Akkumulation beteiligt. Der Standardwert für den Bereichsparameter gibt an, dass die Werte in der gesamten Nachricht erfasst werden. Die Felder Price und Quantity werden an ein Multiplikations-Funktoid gesendet. Die Ausgabe des Funktoids Multiplikation wird zur Eingabe für das Funktoid Kumulative Summe . Die Ausgabe des Funktoids Kumulative Summe ist der akkumulierte Wert, wenn die Item-Datensätze in der Eingabebestellung durchlaufen werden.

Hinweis

Die kumulative Aggregation der Eingabe findet über dem übergeordneten Datensatz statt, aus dem die Eingabeverknüpfung stammt. Selbst wenn das kumulative Funktoid seine Eingabe von einem anderen Funktoid erhält, erfolgt die kumulative Aggregation über den übergeordneten Datensatz der Eingabelinks mit dem Funktoid, das als Eingabe für das kumulative Funktoid dient.

Wenn Sie den Bereichsparameter zu 1 (eins) ändern und das Ausgabeschema leicht anpassen, sieht die Ausgabe wie folgt aus:

<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>  

Durch Festlegen des Bereichsparameters auf 1 (ein) wird angezeigt, dass Werte von Elementen oder Attributen mit demselben übergeordneten Element kumuliert werden. Hier haben die Felder Price und QuantityItem als übergeordnetes Element, sodass das Funktoid Werte für jedes einzelne Element summiert.

Wenn der Bereichsparameter 2 beträgt, kumuliert das Funktoid Werte von Elementen oder Attributen mit demselben über-übergeordneten Element. Das Großelternteil der Felder Price und Quantity ist der LineItems-Datensatz . Da nur ein LineItems-Datensatz in der instance Meldung enthalten ist, entspricht das Ergebnis dem Verwenden des Standardwerts:

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

Hinweis

Kumulative Funktoide (mit Ausnahme des Funktoids kumulative Zeichenfolge ) ignorieren nicht numerische Eingaben. So wird beispielsweise ein Eingabewert von "drei" ignoriert.

Die Funktoide Kumulativer Durchschnitt, kumulatives Minimum und Kumulatives Maximum verhalten sich ähnlich wie das Funktoid Kumulative Summe . Die kumulative Zeichenfolge verkettet Zeichenfolgen, anstatt numerische Werte zu aggregieren.

Verfügbare Funktoide

Die kumulativen Funktoide sind:

  • Kumulativer Durchschnitt
  • Kumulative Verkettung
  • Kumulativer Maximalwert
  • Kumulativer Minimalwert
  • Kumulative Summe

Weitere Informationen zu diesen Funktoiden finden Sie in der Referenz zum API-Namespace für Benutzeroberflächen und entwickler.

Weitere Informationen