Functoid cumulativi
Panoramica
I functoid cumulativi riducono una serie di valori a un singolo valore, ad esempio una somma, una stringa concatenata o una media.
Tutti i functoid cumulativi accettano due parametri di input:
Il valore da accumulare. Questo valore è numerico per tutti i functoid cumulativi ad eccezione del functoid Concatena cumulativo che prevede un valore stringa. Il valore è un collegamento, spesso da un nodo Field Attribute, Field Element o Record (con la relativa proprietà Mixed impostata su True).
Nota
Se nessuno dei nodi Record predecessore nell'albero dello schema esegue il ciclo, l'uso di un functoid cumulativo non è necessario.
L'ambito in cui il valore viene accumulato. L'argomento è facoltativo. L'argomento indica il livello di correlazione che deve esistere tra i valori specificati per consentirne l'accumulo.
Nella tabella seguente sono illustrati i valori per il parametro di ambito e il relativo effetto:
Valore del parametro di ambito | Effetto |
---|---|
0 (zero) | Viene accumulato il valore nell'intero messaggio dell'istanza. Valore predefinito. |
1 (uno) | Viene accumulato il valore dell'elemento o i valori dell'attributo con lo stesso elemento padre. |
2 | Viene accumulato il valore dell'elemento o i valori dell'attributo con lo stesso elemento padre del padre. |
3 o valore maggiore | Viene accumulato il valore dell'elemento o i valori dell'attributo dell'ambito progressivamente più ampio che segue il modello precedente (elemento padre del padre del padre, elemento padre del padre del padre del padre e così via). |
Esempio
Un esempio di utilizzo di un functoid cumulativo può sommare i costi in un ordine di acquisto. Nel codice seguente viene illustrato un esempio di ordine di acquisto.
<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 proprietà Max Occurs per il record Item , naturalmente, non è associata. Questo indica che viene eseguito un ciclo sul record Item e che tale record viene compilato in BizTalk Mapper come ciclo.
La figura seguente mostra una mappa che usa un functoid di moltiplicazione e un functoid Somma cumulativa per aggregare i record degli articoli da un ordine di acquisto in ingresso e restituire i risultati nel campo POTotal :
La mappa produce il seguente output con i dati precedenti e il valore del parametro di ambito predefinito, 0 (zero):
<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<POTotal>2039.45</POTotal>
</ns0:SummedPO>
In questo esempio tutti i record Item nel record LineItems partecipano all'accumulo. L'impostazione predefinita per il parametro di ambito indica l'accumulo dei valori nell'intero messaggio. I campi Price e Quantity vengono inviati a un functoid Di moltiplicazione . L'output del functoid moltiplicazione diventa l'input del functoid Somma cumulativa . L'output del functoid Somma cumulativa è il valore accumulato quando i record dell'elemento vengono attraversati nell'ordine di acquisto di input.
Nota
L'aggregazione cumulativa dell'input viene eseguita sul record padre da cui ha origine il collegamento di input. Anche quando il functoid cumulativo ottiene l'input da un altro functoid, l'aggregazione cumulativa viene eseguita sul record padre dei collegamenti di input al functoid che funge da input per il functoid Cumulativo .
La modifica del parametro di ambito in 1 (uno) e la lieve modifica dello schema di output producono il seguente risultato:
<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>
L'impostazione del parametro di ambito su 1 (uno) indica l'accumulo di valori per elementi o attributi con lo stesso elemento padre. In questo caso i campi Prezzo e Quantità hanno Item come elemento padre in modo che il functoid somma i valori per ogni singolo elemento.
Se il parametro di ambito viene impostato su 2, il functoid accumula i valori per elementi o attributi con lo stesso elemento padre del padre. Il padre dei campi Price e Quantity è il record LineItems . Poiché nel messaggio dell'istanza è presente un solo record LineItems , il risultato corrisponde all'uso del valore predefinito:
<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<POTotal>2039.45</POTotal>
</ns0:SummedPO>
Nota
I functoid cumulativi (ad eccezione del functoid Stringa cumulativa ) ignorano l'input non numerico. Il valore di input "tre", ad esempio, viene ignorato.
I functoid Cumulative Average, Cumulative Minimum e Cumulative Maximum si comportano in modo analogo al functoid Somma cumulativa . La stringa cumulativa concatena stringhe anziché aggregare valori numerici.
Functoid disponibili
I functoid cumulativi sono:
- Cumulative Average
- Cumulative Concatenate
- Cumulative Maximum
- Cumulative Minimum
- Cumulative Sum
Altri dettagli su questi functoid sono disponibili nelle linee guida dell'interfaccia utente e nelle informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori.
Vedere anche
- Come aggiungere functoid di base a una mappa
- Informazioni di riferimento sugli functoid cumulativi nelle linee guida dell'interfaccia utente e nelle informazioni di riferimento sullo spazio dei nomi delle API per sviluppatori