Compartir vía


Functoids acumulados

Información general

Los functoids acumulativos reducen una serie de valores a un solo valor, como una suma, una cadena concatenada o un promedio.

Todos los functoids acumulativos aceptan dos parámetros de entrada:

  1. El valor que se va a acumular. Este valor es numérico para todos los functoids acumulativos , excepto el functoid concatenado acumulativo que espera un valor de cadena. El valor es un vínculo, a menudo desde un nodo Atributo de campo, Elemento de campo o Registro (con su propiedad Mixta establecida en True).

    Nota

    Si ninguno de los nodos de registro antecesores del árbol de esquema está en bucle, no es necesario usar un functoid acumulativo .

  2. El ámbito en el que se acumula este valor. Este argumento es opcional. El argumento indica el grado de relación que deben tener los valores para que se puedan acumular.

    En la siguiente tabla se muestran los valores del parámetro de ámbito y su efecto.

Valor del parámetro de ámbito Efecto
0 (cero) Acumula los valores de todo el mensaje de instancia. El valor predeterminado.
1 (uno) Acumula los valores de los elemento o atributos con el mismo elemento primario.
2 Acumula los valores de los elemento o atributos con el mismo elemento primario de segundo nivel.
3 o superior Acumula los valores de los elementos o atributos, de ámbito progresivamente más amplio, que siguen el patrón anterior (elemento primario de segundo nivel, tercero, cuarto, etc.).

Ejemplo

Un ejemplo de uso de un functoid acumulativo podría ser sumar los costos en un pedido de compra. El código que se muestra a continuación es un ejemplo de un pedido.

<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 propiedad Max Occurs para el registro Item sería, por supuesto, sin enlazar. Esto indica que el registro de elemento se repite y el Asignador de BizTalk compila este registro como un bucle.

En la ilustración siguiente se muestra un mapa mediante un functoid multiplicación y un functoid Suma acumulativa para agregar registros de elementos de un pedido de compra entrante y generar los resultados en el campo POTotal :

Mapa que muestra el uso del functoid de suma acumulativa.

La asignación produce la siguiente salida con los datos anteriores y con el valor predeterminado del parámetro de ámbito, 0 (cero):

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

En este ejemplo, todos los registros Item del registro LineItems participan en la acumulación; el valor predeterminado para el parámetro de ámbito indica que se acumulan los valores en todo el mensaje. Los campos Precio y Cantidad se envían a un functoid multiplicación . La salida del functoid multiplicación se convierte en la entrada del functoid Suma acumulativa . La salida del functoid Suma acumulativa es el valor acumulado a medida que se recorren los registros Item en el pedido de compra de entrada.

Nota

La suma acumulativa de entradas tiene lugar en el registro primario en el que se origina el vínculo de entrada. Incluso cuando el functoid acumulativo obtiene su entrada de otro functoid, la agregación acumulativa tiene lugar sobre el registro primario de los vínculos de entrada al functoid que actúa como entrada para el functoid acumulativo .

Si cambia el parámetro de ámbito a 1 (uno) y modifica ligeramente el esquema de salida, se produce el siguiente resultado:

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

Si establece el parámetro de ámbito a 1 (uno) se acumulan los valores de elementos o atributos con el mismo elemento primario. Aquí los campos Precio y Cantidad tienen Item como elemento primario para que el functoid sume los valores de cada elemento individual.

Si establece el parámetro de ámbito a 2 (dos) el functoid acumula los valores de elementos o atributos con el mismo elemento primario de segundo nivel. El abuelo de los campos Precio y Cantidad es el registro LineItems . Dado que solo hay un registro LineItems en el mensaje de instancia, el resultado es el mismo que el uso del valor predeterminado:

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

Nota

Los functoids acumulativos (excepto el functoid de cadena acumulativa ) omiten la entrada no numérica. Por ejemplo, se omite un valor de entrada de "tres”.

Los functoids Promedio acumulado, Mínimo acumulado y Máximo acumulado se comportan de forma similar al functoid Suma acumulativa . La cadena acumulativa concatena cadenas en lugar de agregar valores numéricos.

Functoids disponibles

Los functoids acumulativos son:

  • Promedio acumulativo
  • Concatenación acumulativa
  • Máximo acumulativo
  • Mínimo acumulativo
  • Suma acumulativa

Encontrará más detalles sobre estos functoids en la guía de la interfaz de usuario y en la referencia del espacio de nombres de la API de desarrolladores.

Consulte también