CallOrchestration (esempio di BizTalk Server)
Nell'esempio CallOrchestration viene illustrato come chiamare un'orchestrazione BizTalk da un'altra orchestrazione.
Scopo dell'esempio
In questo esempio viene illustrato come un'orchestrazione venga chiamata da un'altra orchestrazione con la sequenza di passaggi seguente:
L'orchestrazione primaria riceve un messaggio dell'ordine di acquisto.
L'orchestrazione primaria chiama quella secondaria per determinare il prezzo della spedizione per l'ordine di acquisto.
L'orchestrazione secondaria calcola il prezzo della spedizione richiesto e lo restituisce all'orchestrazione primaria.
L'orchestrazione primaria aggiorna il messaggio dell'ordine di acquisto con il prezzo della spedizione restituito.
L'orchestrazione primaria inserisce il messaggio dell'ordine di acquisto aggiornato in una cartella per l'analisi da parte dell'utente.
Progettazione e finalità dell'esempio
Lo scopo principale di questo esempio è di illustrare come chiamare un'orchestrazione da un'altra orchestrazione. La possibilità di chiamare le orchestrazioni consente di suddividere i processi di business in componenti riutilizzabili. È possibile eseguire il refactoring dei processi comuni in orchestrazioni distinte per consentire ad altri utenti di riutilizzarli.
In questo esempio la forma Di orchestrazione chiamata in receivePO.odx richiama findShippingPrice.odx e attende l'orchestrazione annidata, findShippingPrice.odx, per calcolare e restituire il prezzo di spedizione prima di inviare l'ordine di acquisto. L'orchestrazione findShippingPrice.odx utilizza la logica seguente per calcolare il prezzo della spedizione:
If ( weight * shippingRate ) < minShippingPrice Then
shippingPrice = minShippingPrice
Else
shippingPrice = weight * shippingRate
End If
Poiché nel file dell'ordine di acquisto di input di esempio, InputPO.xml, viene specificato un peso pari a 20, nel messaggio dell'ordine di acquisto di output il prezzo della spedizione è passato da 10 a 20.
Nota
Non è possibile chiamare una transazione a esecuzione prolungata da un'orchestrazione atomica.
Nota
La differenza tra l'uso della forma Di orchestrazione chiamata e la forma Start Orchestration è che quando si chiama un'orchestrazione, il chiamante attende che l'orchestrazione annidata venga restituita prima di continuare. Quando avvia un'orchestrazione da un'altra, dopo avere iniziato l'azione, il chiamante procede al passaggio successivo del flusso del processo. L'orchestrazione richiamata dal chiamante viene eseguita in modo indipendente fino al termine del flusso del processo. Per altre informazioni, vedere Come configurare la forma di orchestrazione delle chiamate. Vedere anche Come configurare la forma di orchestrazione start.
Percorso dell'esempio
<Percorso> esempi\Orchestrations\CallOrchestration\
Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.
File | Descrizione |
---|---|
CallOrchestration.btproj, CallOrchestration.sln | File di progetto e soluzione per l'esempio. |
CallOrchestrationBinding.xml | Utilizzato per l'impostazione automatica, ad esempio il binding delle porte. |
Cleanup.bat | Viene utilizzato per annullare la distribuzione degli assembly e rimuoverli dalla Global Assembly Cache. Consente inoltre di rimuovere porte di trasmissione e ricezione. Consente infine di rimuovere le directory virtuali di Microsoft Internet Information Services (IIS), se necessario. |
findShippingPrice.odx | Orchestrazione BizTalk che funge da orchestrazione secondaria, chiamata dall'orchestrazione primaria, receivePO.odx. |
InputPO.xml | File dell'ordine di acquisto di input di esempio conforme allo schema definito nel file PO.xsd. |
PO.xsd | Schema che definisce la struttura dei messaggi degli ordini di acquisto in ingresso, quale il file di input di esempio InputPO.xml, e la promozione proprietà per i tre elementi dello schema. |
PropertySchema.xsd | File di schema proprietà che partecipa alla promozione proprietà per i tre elementi dello schema PO.xsd. |
receivePO.odx | Orchestrazione BizTalk che funge da orchestrazione primaria in questo esempio. Recupera i messaggi degli ordini di acquisto dalla cartella di ricezione e quindi chiama l'altra orchestrazione, findShippingPrice.odx, per calcolare e aggiornare il prezzo della spedizione. |
Setup.bat | Utilizzato per compilare e inizializzare l'esempio. |
Compilazione e inizializzazione dell'esempio
Per compilare e inizializzare l'esempio CallOrchestration
In una finestra di comando passare alla seguente cartella:
<Percorso> esempi\Orchestrations\CallOrchestration\
Eseguire il file Setup.bat. Verranno eseguite le operazioni seguenti:
Creazione delle cartelle di input (In) e output (Out) per l'esempio nella cartella CallOrchestration.
Compila e distribuisce il progetto di Visual Studio, contenente entrambe le orchestrazioni, per questo esempio.
Creazione e binding dell'indirizzo di ricezione di BizTalk e delle porte di trasmissione e ricezione.
Abilita l'indirizzo di ricezione e avvia la porta di trasmissione.
Nota
Prima di provare a eseguire l'esempio, è necessario verificare che BizTalk Server non abbia segnalato errori durante il processo di generazione e inizializzazione.
Esecuzione dell'esempio
Per eseguire l'esempio CallOrchestration
Inserire una copia del file InputPO.xml nella cartella In.
Osservare il file XML dell'ordine di acquisto aggiornato creato nella cartella Out. Contiene il messaggio dell'ordine di acquisto originale, modificato in modo da includere un costo di spedizione calcolato nel modo illustrato in precedenza. Il formato del nome di questo file è <MessageID.xml, dove <MessageID>> è il GUID generato per identificare in modo univoco il messaggio.
Disinstallazione dell'esempio
Per disinstallare l'esempio CallOrchestration
In una finestra dei comandi di Visual Studio passare alla cartella seguente:
<Percorso> esempi\Orchestrations\CallOrchestration\
Eseguire Cleanup.bat.