Scenari che utilizzano transazioni a esecuzione prolungata
Negli scenari seguenti viene descritto l'utilizzo delle transazioni a esecuzione prolungata.
Scenario 1: Uso di transazioni con esecuzione prolungata con timeout
È possibile associare gli ambiti a esecuzione prolungata con un timeout, ovvero un tempo logico entro cui un lavoro a tempo prolungato deve essere completato. Se l'ambito non viene completato entro il tempo specificato, viene generata un'eccezione di sistema predefinita TimeoutException .
È possibile creare processi a esecuzione prolungata contrassegnando l'intera orchestrazione come a esecuzione prolungata o nidificando altri ambiti in un ambito a esecuzione prolungata esterno. Nel primo scenario, viene eseguito un gestore di eccezioni fornito dal sistema, mentre il secondo consente di associare gestori di eccezioni specifici all'ambito esterno. Il gestore di eccezioni predefinito fornito dal sistema eseguirà il gestore di compensazione per ogni ambito transazionale annidato completato correttamente, se presente, in ordine di completamento inverso. È possibile conseguire lo stesso risultato mediante compensazione automatica utilizzando la forma Compensa nel gestore di eccezioni per una transazione a esecuzione prolungata.
L'orchestrazione seguente è una rappresentazione del modo in cui associare i timeout alle transazioni a esecuzione prolungata.
Transazioni a esecuzione prolungata con timeout
Talvolta può essere necessario interfacciarsi con sistemi legacy che operano in modalità batch. Questo scenario illustra un ordine di acquisto che viene ricevuto e inviato al sistema legacy. Il sistema legacy elabora l'ordine di acquisto e invia un riconoscimento di ordine di acquisto. L'operazione di invio inizializza un set correlazioni utilizzando il numero dell'ordine d'acquisto e l'operazione di ricezione segue questo set correlazioni. L'operazione di ricezione avviene anche in un ambito a esecuzione prolungata con un valore di timeout.
Il motore di orchestrazione disidraterà l'istanza di orchestrazione in attesa di ricezione. La correlazione garantirà il richiamo della stessa istanza di orchestrazione una volta ricevuto il messaggio. Se l'acknowledgement dell'ordine di acquisto non arriva entro l'intervallo di tempo specificato dai valori di timeout, verrà generata un'eccezione TimeoutException .
Scenario 2: Utilizzo di transazioni a esecuzione prolungata con compensazione personalizzata
Nelle orchestrazioni seguenti viene dimostrato come associare e richiamare compensazioni personalizzate associate alle intere orchestrazioni. In questo scenario viene inserito un nuovo cliente e i dettagli dell'ordine relativi al cliente. In base alla logica dell'orchestrazione, se l'inserimento dell'ordine non riesce, è necessario eseguire il rollback dell'inserimento del cliente. Poiché l'inserimento del cliente potrebbe essere eseguito da un sistema legacy, viene pertanto dimostrato in un'orchestrazione separata disponibile per la chiamata. La chiamata orchestrazione ha la proprietà Custom impostata per la compensazione, che fornisce un foglio separato per eseguire il processo di compensazione. La compensazione consente di eliminare il cliente appena inserito.
Per eseguire l'inserimento dell'ordine, l'orchestrazione chiamante dispone di un ambito a esecuzione prolungata annidato all'interno di un ambito a esecuzione prolungata esterno. All'ambito esterno è associato un gestore di eccezioni per rilevare eventuali eccezioni. Il gestore utilizza la forma Compensa per richiamare l'eccezione personalizzata associata all'orchestrazione chiamata per eseguire il rollback di eventuali modifiche che potrebbero verificarsi nella chiamata all'orchestrazione.
Transazioni a esecuzione prolungata con compensazione personalizzata
Orchestrazione chiamata (principale)
Orchestrazione chiamata (compensazione)