ContinuationToken
Per correlare informazioni eterogenee nell'infrastruttura BAM viene utilizzato un token di continuazione. Si consideri un processo di business che crea i seguenti tipi di messaggi:
Ordine di acquisto identificato da un numero di ordine di acquisto
Ordine di vendita identificato da un numero di ordine di vendita
Spedizione ordine identificato da un numero di ordine di spedizione
In questo processo sono disponibili tre identificatori importanti: ID ordine di acquisto, ID ordine cliente e ID ordine di spedizione. Ognuno di questi identificatori segnala un evento importante nella durata dell'ordine originale, ma non può essere direttamente correlato. Per rilevare gli eventi correlati a un ordine di acquisto, è necessario che le informazioni comuni tra i messaggi vengano identificate in modo da consentire all'infrastruttura di rilevamento BAM di correlare accuratamente gli eventi.
Un token di continuazione è costituito da un elemento di espressione e da una o più operazioni:
<ic:ContinuationToken>
<ic:Expression>
<!-- Operations -->
</ic:Expression>
</ic:ContinuationToken>
Le operazioni comuni seguenti non sono consentite nelle espressioni ContinuationToken:
e
Uguale a
[L'intestazione della sezione Operations in WF/WCF dovrà avere un chart analogo e altri chart, in base alle esigenze]
In questo esempio un token di continuazione per un processo WF viene recuperato dal flusso di lavoro usando GetWorkflowProperty
. Lo sviluppatore ha deciso di supportare la continuazione nel flusso di lavoro utilizzando codice personalizzato, probabilmente perché il processo per determinare il token di continuazione prevede più di due o tre espressioni e può essere basato su dati esterni.
<ic:ContinuationToken>
<ic:Expression>
<wf:Operation Name="GetWorkflowProperty">
<wf:Argument>ContinuationToken</wf:Argument>
</wf:Operation>
</ic:Expression>
</ic:ContinuationToken>
È possibile scegliere di includere funzionalità analoghe nelle nuove applicazioni WF o WCF oppure, se è facile definire il token tramite operazioni di espressione, è possibile evitare di scrivere codice aggiuntivo.
Nell'esempio seguente viene stabilito un token di continuazione per un processo WCF usando un'operazione XPath per recuperare il numero di carta di credito dal messaggio corrente e le operazioni costanti e concatenate per anteporre la stringa "CID_" al numero recuperato:
<ic:ContinuationToken>
<ic:Expression>
<ic:Operation Name="Constant">
<ic:Argument>CID_</ic:Argument>
</ic:Operation>
<wcf:Operation Name="XPath">
<wcf:Argument>//Purchase/Payment/CreditCardNumber</wcf:Argument>
</wcf:Operation>
<ic:Operation Name="Concatenate" />
</ic:Expression>
</ic:ContinuationToken>