BPEL Import (esempio di BizTalk Server)
Nell'esempio BPEL Import viene illustrato come creare un'orchestrazione da una descrizione di processo BPEL (Business Process Execution Language) e dai relativi elementi.
Scopo dell'esempio
Wide World Importers è una società di spedizioni che offre servizi automatizzati di spedizione ai rivenditori. Wide World Importers, in particolare, consente ai rivenditori di eseguire le operazioni seguenti:
Richiedere le spedizioni degli ordini
Tenere traccia delle spedizioni
Confermare le spedizioni
Confermare la fatturazione e il pagamento relativi alle spedizioni
Sebbene sia possibile rappresentare la disponibilità di questi servizi utilizzando un documento WSDL (Web Services Description Language), in un documento BPEL viene descritto il modo standard in cui si prevede che le società di prodotti richiedano i servizi e le risposte previste da parte di Wide World Importers.
Quando Northwind Traders si rivolge a Wide World Importers per la gestione delle spedizioni, riceve un file BPEL e alcuni elementi correlati che descrivono l'interazione completa. Usando il file BPEL, Northwind Traders crea un'applicazione BizTalk Server (BPELShipping) per elaborare automaticamente gli ordini tramite Wide World Importers.
In questo esempio viene illustrato lo scenario in cui tramite l'applicazione BPELShipping vengono eseguite le operazioni seguenti:
Ricezione di un ordine dal sistema per la gestione degli ordini dei clienti di Northwind Traders.
Invio di una richiesta di spedizione a Wide World Importers e richiesta di conferma.
Ricezione della conferma della richiesta di spedizione da Wide World Importers.
Ricezione della notifica di prelievo da Wide World Importers.
Ricezione di messaggi sullo stato della spedizione fino al momento della ricezione della spedizione da parte del cliente.
Ricezione di una fattura da Wide World Importers.
Risposta a Wide World Importers con un'accettazione della fattura.
Ricezione di una conferma di pagamento da Wide World Importers.
Invio di una conferma di spedizione finale al sistema per la gestione degli ordini.
Per simulare Wide World Importers in questo esempio viene utilizzata un'applicazione BizTalk distinta (ShipperProcess). L'applicazione BPELShipping comunica con ShipperProcess mediante il trasporto FILE, che utilizza percorsi di file system comuni per la comunicazione.
Progettazione e finalità dell'esempio
BPEL per i servizi Web è un linguaggio basato su XML per descrivere il processo di business in modo che possa essere facilmente condiviso tra società diverse che desiderano gestire i rapporti commerciali mediante servizi Web. BPEL descrive come gestire il processo di business a livello di protocollo di business, ma non descrive il processo interno di una società, ad esempio la procedura che una società deve seguire per elaborare un ordine di acquisto dopo averlo ricevuto da un partner. In questo esempio viene illustrato come importare il file BPEL e i corrispondenti file WSDL, convertirli in un'orchestrazione e quindi avviare l'esecuzione del processo di business con il partner.
Di seguito è riportata la procedura dettagliata che illustra come importare i file BPEL e WSDL e convertirli in un'orchestrazione per interagire con l'applicazione BizTalk predefinita (ShipperProcess). Se si completa la procedura seguente, non è necessario eseguire la procedura descritta in "Per compilare e inizializzare l'applicazione BPELShipping".
Per eseguire l'importazione da BPEL e compilare una soluzione funzionante
In Microsoft Visual Studio scegliere Nuovo dal menu File e quindi fare clic su Progetto.
Nota
Prima di completare questa procedura, è necessario configurare l'applicazione ShipperProcess per creare i processi di supporto e i progetti di schema.
Nel riquadro Tipi di progetto della finestra di dialogo Nuovo progetto selezionare BizTalk (Progetti). Nel riquadro Modelli selezionare BizTalk (Server) BPEL Import Project (Progetto di importazione).
Nella casella Nome immettere BPELShipping.
Nota
Se si utilizza un nome diverso, potrebbero verificarsi problemi con il passaggio di binding finale.
Selezionare un percorso per il progetto e quindi fare clic su OK per avviare l'Importazione guidata BPEL.
Nella pagina Benvenuti fare clic su Avanti.
Nella pagina Seleziona file BPEL, WSDL e XSD fare clic su Sfoglia.
Selezionare tutti i file dalla < cartella Samples Path>\Orchestrations\BPELImport\BPELSource, fare clic su Apri e quindi su Avanti.
Nota
In questo passaggio vengono selezionati i file BPEL e WSDL per descrivere il processo di business e i file XSD per rappresentare gli schemi dei documenti di business.
Nella pagina Select WSDL Files for Invoked WebServices (Seleziona file WSDL per i servizi Web richiamati ) fare clic su Finish (Fine).
Dopo che è stato segnalato il corretto completamento dell'Importazione guidata BPEL, chiudere la procedura guidata. Verrà creato il progetto.
Al prompt dei comandi di Visual Studio modificare la directory (cd) nel percorso del progetto.
Eseguire il comando seguente:
sn –k BPELShipping.snk
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto BPELShipping e quindi scegliere Proprietà.
In Proprietà comuni\Assembly selezionare il file di chiave dell'assembly BPELShipping.snk creato nel passaggio 11 e quindi fare clic su OK.
In Esplora soluzioni selezionare tutti i file con estensione xsd ed eliminarli.
In Esplora soluzioni selezionare Aggiungi riferimento e nella scheda Progetti fare clic su Sfoglia.
Selezionare ShippingSchemas.dll dal percorso <Percorsi> esempi\Orchestrazioni\BPELImport\Solution\ShipperProcess\ShippingSchemas\bin\Development e quindi fare clic su OK.
Nota
Nella sezione "Per compilare e inizializzare l'applicazione ShipperProcess" sono disponibili le istruzioni per la compilazione.
In Esplora soluzioni fare doppio clic su OrderShippingProcess.bpel.odx.
Scegliere Altre finestre/Visualizzazione orchestrazione dal menu Visualizza.
Nella finestra Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Proprietà orchestrazione e quindi scegliere Finestra Proprietà.
Nella Finestra Proprietà impostare la proprietà Orchestration Exportable su False.
In Esplora soluzioni fare doppio clic su OrderShipping.wsdl.odx.
Nella finestra Visualizzazione orchestrazione espandere Tipi/Tipi di messaggi multiparte.
Espandere InvoiceAckMessageType e quindi fare clic su InvoiceAckMessagePart.
Nella Finestra Proprietà espandere il campo Tipo e selezionare Schemi/Seleziona da assembly a cui si fa riferimento.
Nella finestra di dialogo Seleziona tipo di artefatto fare clic su ShippingSchemas, selezionare il tipo di Imported_InvoiceAckMessage e quindi fare clic su OK.
Nota
Nei passaggi da 23 a 25, il tipo di messaggio dei servizi che partecipano al processo BPEL viene sostituito con i corrispondenti tipi di messaggi descritti in ShippingSchemas.
Ripetere i passaggi da 23 a 25 per ogni tipo di messaggio che utilizza i valori seguenti.
Parte del messaggio Tipo di messaggio InvoiceMessagePart ShippingSchemas.Imported_InvoiceMessage OrderAckMessagePart ShippingSchemas.Imported_OrderAckMessage OrderMessagePart ShippingSchemas.Imported_OrderMessage PaymentConfirmationMessagePart ShippingSchemas.Imported_PaymentConfirmationMessage PickupNotificationMessagePart ShippingSchemas.Imported_PickupNotificationMessage ShipConfirmationMessagePart ShippingSchemas.Imported_ShipConfirmationMessage ShippingHistoryPart ShippingSchemas.Imported_ShippingHistory ShipRequestAckMessagePart ShippingSchemas.Imported_ShipRequestAckMessage ShipRequestMessagePart ShippingSchemas.Imported_ShipRequestMessage ShipStatusMessagePart ShippingSchemas.Imported_ShipStatusMessage In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto BPELShipping, scegliere Aggiungie quindi fare clic su Elemento esistente.
Selezionare tutti i file con estensione btm dal percorso <Percorso> esempi\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping.
Nella finestra Visualizzazione orchestrazione individuare la forma Assegnazione messaggi denominata MessageAssignment_1 in ConstructMessage1 ed eliminarla.
Dalla casella degli strumenti trascinare una forma Trasforma nella forma ConstructMessage1.
Nella Finestra Proprietà fare clic sul pulsante con i puntini di sospensione (...) e aprire la finestra di dialogo Trasforma configurazione.
Selezionare Mappa esistente.
Selezionare il nome completo della mappa come BPELShipping.Order2ShipRequest.
Selezionare l'origine come ordine. OrderMessagePart.
Selezionare la destinazione come ship_request. ShipRequestMessagePart e fare clic su OK.
Ripetere i passaggi da 29 a 35 per ognuna delle forme Assegnazione messaggi e sostituirle con le forme Trasforma in base alla tabella seguente.
Forma da sostituire Mappa da utilizzare Documento di origine Documento di destinazione MessageAssignment_2 BPELShipping.Order2OrderAck order.OrderMessagePart order_ack.OrderAckMessagePart MessageAssignment_3 BPELShipping.Order2OrderNAck order.OrderMessagePart order_ack.OrderAckMessagePart MessageAssignment_4 BPELShipping.Order2ShipHistory order.OrderMessagePart ship_history.ShippingHistoryPart MessageAssignment_5 BPELShipping.ShipHistory2Completed order.OrderMessagePart ship_history.ShippingHistoryPart MessageAssignment_6 BPELShipping.Invoice2Ack Invoice.InvoiceMessagePart invoice_ack.InvoiceAckMessagePart MessageAssignment_7 BPELShipping.Order2FinalConfirmation order.OrderMessagePart order_shipped.OrderAckMessagePart Salvare l'orchestrazione.
Fare doppio clic su Rule_1 nella Decision_1decide forma.
Nell'Editor espressioni BizTalk sostituire
ship_request_ack(BPELShipping.Ship_Acknowledged) == true
con
ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true
Fare doppio clic sulla forma Ciclo denominata Loop_1.
Nell'Editor espressioni BizTalk sostituire
ship_history(BPELShipping.Ship_Completed) == true
con
ship_history(ShippingSchemas.Ship_Completed) == true
Fare doppio clic su Rule_2 nella Decision_2decide forma.
Nell'Editor espressioni BizTalk sostituire
ship_status(BPELShipping.ShipStatus) == "DONE"
con
ship_status(ShippingSchemas.ShipStatus) == "DONE"
Nella visualizzazione orchestrazione espandere Tipi/Tipi di correlazione e fare clic su OrderCorrelationSet_Type\.
Nella Finestra Proprietà fare clic sul pulsante con i puntini di sospensione (...) in Proprietà di correlazione.
Nel riquadro Proprietà da correlare fare clic su BPELShipping.OrderID e quindi fare clic su Rimuovi.
Nel riquadro Proprietà disponibili espandere Schemi di spedizione, selezionare ID ordine e quindi fare clic su Aggiungi.
Fare clic su OK.
Salvare tutti i file e compilare la soluzione.
Distribuzione della soluzione.
Passare al percorso <Esempi percorso>\Orchestrazioni\BPELImport\Solution\BPELShipping e fare doppio clic suBindAndStartOnly.bat per associare e avviare l'orchestrazione.
Percorso dell'esempio
<>Percorsi di esempio\Orchestrations\BPELImport
Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.
File | Descrizione |
---|---|
BPELSource\InvoiceAckMessage.xsd | Schema di accettazione della fattura. |
BPELSource\InvoiceMessage.xsd | Schema della fattura. |
BPELSource\OrderAckMessage.xsd | Schema dell'accettazione dell'ordine. |
BPELSource\OrderHeader.xsd | Schema dell'intestazione dell'ordine. |
BPELSource\OrderMessage.xsd | Schema messaggi dell'ordine. |
BPELSource\OrderShipping.wsdl | File WSDL a cui fa riferimento BPEL. |
BPELSource\OrderShippingProcess.bpel | Flusso del processo BPEL. |
BPELSource\PaymentConfirmationMessage.xsd | Messaggio di conferma del pagamento. |
BPELSource\PickupNotificationMessage.xsd | Messaggio di notifica del prelievo. |
BPELSource\ShipConfirmationMessage.xsd | Messaggio di conferma della spedizione. |
BPELSource\ShippingHistory.xsd | Documento relativo alla cronologia della spedizione. |
BPELSource\ShipRequestAckMessage.xsd | Accettazione della richiesta di spedizione. |
BPELSource\ShipRequestMessage.xsd | Messaggio della richiesta di spedizione. |
BPELSource\ShipStatusMessage.xsd | Messaggio sullo stato della spedizione. |
Solution\bindings\BPELBindings.xml | File di associazione che specifica i binding delle porte per l'orchestrazione BPELShipping. |
Solution\bindings\ShipperBindings.xml | File di associazione che specifica i binding delle porte per l'orchestrazione ShipperProcess. |
Solution\BPELShipping\BindAndStartOnly.bat | File batch da utilizzare per il binding e l'avvio dell'orchestrazione BPELImport dopo la compilazione manuale e la distribuzione. |
Solution\BPELShipping\cleanup.bat | File batch da utilizzare per rimuovere il processo BPELShipping. |
Solution\BPELShipping\Setup.bat | File batch da utilizzare per installare e avviare l'esempio BPELShipping fornito. |
Solution\BPELShipping\BPELShipping.sln | Esempio BPELShipping predefinito. |
olution\BPELShipping\BPELShipping\Invoice2Ack.btm | Mappa delle accettazioni tra fatture. |
Solution\BPELShipping\BPELShipping\Order2FinalConfirmation.btm | Mappa per convertire il messaggio dell'ordine nella conferma di spedizione finale. |
Solution\BPELShipping\BPELShipping\Order2OrderAck.btm | Mappa per convertire il messaggio dell'ordine nell'accettazione dell'ordine. |
Solution\BPELShipping\BPELShipping\Order2OrderNack.btm | Mappa per convertire il messaggio dell'ordine nella mancata accettazione dell'ordine. |
Solution\BPELShipping\BPELShipping\Order2ShipHistory.btm | Mappa per convertire il messaggio dell'ordine nel documento della cronologia della spedizione. |
Solution\BPELShipping\BPELShipping\Order2ShipRequest.btm | Mappa per convertire il messaggio dell'ordine nella richiesta di spedizione dell'ordine. |
Solution\BPELShipping\BPELShipping\ShipRequest2Completed.btm | Mappa per impostare la cronologia della spedizione su completata. |
Solution\ShipperProcess\setup.bat | File batch per compilare, distribuire, associare e avviare l'orchestrazione dell'helper ShipperProcess e le relative porte. |
Solution\ShipperProcess\cleanup.bat | File batch per arrestare, rimuovere e annullare la distribuzione dell'orchestrazione dell'helper ShipperProcess e delle relative porte. |
Compilazione e inizializzazione dell'esempio
Il primo passaggio prevede la compilazione e l'inizializzazione dell'applicazione ShipperProcess utilizzata per simulare Wide World Importers.
Per compilare e inizializzare l'applicazione ShipperProcess
Avviare il prompt dei comandi di Visual Studio.
Dal prompt dei comandi di Visual Studio modificare la directory (cd) alla cartella seguente:
<>Percorsi di esempio\Orchestrations\BPELImport\Solution\ShipperProcess
Eseguire il file Setup.bat. Verranno eseguite le operazioni seguenti:
Compilazione del progetto ShippingSchemas, contenente gli schemi utilizzati nel processo ShipperProcess e BPELShipping
Compilazione di ShipperProcess
Distribuzione dei progetti ShippingSchemas e ShipperProcess
Creazione e binding delle porte di trasmissione e di ricezione utilizzate da ShipperProcess
Avvio delle porte utilizzate da ShipperProcess
Integrazione e avvio dell'orchestrazione ShipperProcess
Prima di tentare di eseguire l'esempio, verificare che non siano stati segnalati errori durante il processo di compilazione e inizializzazione. È possibile che venga visualizzato uno dei seguenti avvisi che possono essere ignorati.
The 'http://contoso.org/samples/Fragments:XXXX' element is not declared. An error occurred at , (35, 16).
<SAMPLE_LOCATION>\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(667,22): convoy found at 'activate receive(Receive_ShipOrder.Operation_1, Request, initialize Correl)'
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): and 'receive(ReceiveInvoiceAck.Operation_1, Invoice_Ack, Correl)'
Nota
Non è necessario eseguire la procedura seguente se è stata completata la procedura descritta in "Per eseguire l'importazione da BPEL e compilare una soluzione di lavoro".
Per compilare e inizializzare l'applicazione BPELShipping
-
Avviso
Prima di eseguire questa procedura, è necessario completare quella precedente “Per compilare e inizializzare l'applicazione ShipperProcess".
Dal prompt dei comandi di Visual Studio modificare la directory (cd) alla cartella seguente:
<Percorso> esempi\Orchestrations\BPELImport\Solution\BPELShipping
Eseguire il file Setup.bat. Verranno eseguite le operazioni seguenti:
Compilazione del progetto BPELShipping
Distribuzione del progetto BPELShipping
Creazione e binding delle porte di trasmissione e ricezione utilizzate dal processo BPELShipping
Avvio delle porte utilizzate dal processo BPELShipping
Integrazione e avvio dell'orchestrazione BPELShipping
Esecuzione dell'esempio
Per eseguire l'esempio BPEL Import
Copiare il file Order.xml dalla <cartella Samples Path>\Orchestrations\BPELImport\Solution nella < cartella Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.
L'orchestrazione BPELShipping seleziona questo file come ordine dal sistema di elaborazione degli ordini cliente, esegue il processo di spedizione e produce un file ogni file nella < cartella Path\Orchestrations\BPELImport\Solution\Ports\SendOrder e la < cartella Samples Path>>\Orchestrations\BPELImport\Solution\Ports\FinalConfirmation. Il formato del nome di questi file è <MessageID.xml, dove <MessageID>> è il GUID generato per identificare in modo univoco il messaggio.
Disinstallazione dell'esempio
Per disinstallare l'esempio BPEL Import
Al prompt dei comandi di Visual Studio modificare la directory (cd) in <Percorso> esempi\Orchestrations\BPELImport\BPELShipping.
Eseguire Cleanup.bat.
Passare a <Percorso> esempi\Orchestrations\BPELImport\ShipperProcess.
Eseguire Cleanup.bat.