Partager via


Fonctoids cumulés

Vue d’ensemble

Les fonctoids cumulés réduisent une série de valeurs à une valeur unique telle qu’une somme, une chaîne concaténée ou une moyenne.

Tous les fonctoids cumulatifs acceptent deux paramètres d’entrée :

  1. La valeur à cumuler : Cette valeur est numérique pour tous les fonctoids cumulatifs , à l’exception du fonctoid Concaténation cumulé qui attend une valeur de chaîne. La valeur est un lien, souvent à partir d’un attribut Field, d’un élément Field ou d’un nœud Record (avec sa propriété Mixed définie sur True).

    Notes

    Si aucun des nœuds d’enregistrement ancêtres de l’arborescence de schéma n’est en boucle, l’utilisation d’un fonctoid Cumulatif n’est pas nécessaire.

  2. L’étendue du cumul de la valeur : Cet argument est facultatif. Il indique le degré de parenté que les valeurs spécifiées doivent avoir pour être cumulées.

    Le tableau suivant montre les valeurs pour le paramètre d’étendue et ses effets :

Valeur du paramètre d’étendue Résultat
0 (zéro) Cumuler la valeur sur l’ensemble du message d’instance. Valeur par défaut.
1 (un) Cumuler la valeur de l’élément ou les valeurs d’attribut avec le même élément parent.
2 Cumuler la valeur de l’élément ou les valeurs d’attribut avec le même élément grand-parent.
Au moins 3 Cumuler la valeur de l’élément ou les valeurs d’attribut d’étendue progressivement plus large selon le modèle précédent (arrière grand-parent, arrière arrière grand-parent, etc.).

Exemple

Un exemple d’utilisation d’un fonctoid Cumulatif peut être la somme des coûts dans un bon de commande. Le code suivant correspond à un exemple de bon de commande :

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

La propriété Max Occurs de l’enregistrement Item serait, bien sûr, illimitée. Cela signifie que l’enregistrement Item est une boucle et que le Mappeur BizTalk compile cet enregistrement en tant que boucle.

La figure suivante montre une carte utilisant un fonctoid Multiplication et un fonctoid Somme cumulée pour agréger les enregistrements d’éléments d’un bon de commande entrant et générer les résultats dans le champ POTotal :

Carte montrant l’utilisation du fonctoid somme cumulée.

Le mappage produit le résultat suivant avec les données précédentes et avec la valeur du paramètre d’étendue par défaut, 0 (zéro) :

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

Dans cet exemple, tous les enregistrements Item sous l’enregistrement LineItems participent à l’accumulation. La valeur par défaut du paramètre d’étendue indique l’accumulation des valeurs dans l’ensemble du message. Les champs Price et Quantity sont envoyés à un fonctoid Multiplication . La sortie du fonctoid Multiplication devient l’entrée du fonctoid Somme cumulative . La sortie du fonctoid Somme cumulée correspond à la valeur accumulée à mesure que les enregistrements Item sont parcourus dans le bon de commande d’entrée.

Notes

L’agrégation cumulée des entrées a lieu sur l’enregistrement parent d’où prend naissance la liaison d’entrée. Même lorsque le fonctoid Cumulative obtient son entrée à partir d’un autre fonctoid, l’agrégation cumulative a lieu sur l’enregistrement parent des liens d’entrée vers le fonctoid qui sert d’entrée au fonctoid Cumulative .

Si vous changez la valeur du paramètre d’étendue sur 1 (un) et modifiez légèrement le schéma de sortie, le résultat est le suivant :

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

La définition du paramètre d’étendue sur 1 (un) indique le cumul des valeurs des éléments ou attributs ayant le même parent. Ici, les champs Prix et Quantité ont Item comme parent afin que le fonctoid additionne les valeurs de chaque élément individuel.

Si le paramètre d’étendue est défini sur 2, le fonctoid cumule les valeurs des éléments ou attributs ayant le même grand-parent. Le grand-parent des champs Prix et Quantité est l’enregistrement LineItems . Étant donné qu’il n’y a qu’un seul enregistrement LineItems dans le message instance, le résultat est identique à l’utilisation de la valeur par défaut :

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

Notes

Les fonctoids cumulatifs (à l’exception du fonctoid Chaîne cumulative ) ignorent l’entrée non numérique. Par exemple, une valeur d’entrée de « trois » est ignorée.

Les fonctoids Average Cumulative, Cumulative Minimum et Cumulative Maximum se comportent de la même façon que le fonctoid Cumulative Sum . La chaîne cumulative concatène les chaînes au lieu d’agréger des valeurs numériques.

Fonctoids disponibles

Les fonctoids cumulatifs sont les suivants :

  • Moyenne cumulée
  • Concaténation cumulée
  • Maximum cumulé
  • Minimum cumulé
  • Somme cumulée

Pour plus d’informations sur ces fonctoids, consultez les conseils d’interface utilisateur et les informations de référence sur l’espace de noms d’API des développeurs.

Voir aussi