Condividi tramite


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:

  1. L'orchestrazione primaria riceve un messaggio dell'ordine di acquisto.

  2. L'orchestrazione primaria chiama quella secondaria per determinare il prezzo della spedizione per l'ordine di acquisto.

  3. L'orchestrazione secondaria calcola il prezzo della spedizione richiesto e lo restituisce all'orchestrazione primaria.

  4. L'orchestrazione primaria aggiorna il messaggio dell'ordine di acquisto con il prezzo della spedizione restituito.

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

  1. In una finestra di comando passare alla seguente cartella:

    <Percorso> esempi\Orchestrations\CallOrchestration\

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

  1. Inserire una copia del file InputPO.xml nella cartella In.

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

  1. In una finestra dei comandi di Visual Studio passare alla cartella seguente:

    <Percorso> esempi\Orchestrations\CallOrchestration\

  2. Eseguire Cleanup.bat.

Vedere anche

Orchestrations (cartella di esempi di BizTalk Server)