Condividi tramite


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:

  1. Ricezione di un ordine dal sistema per la gestione degli ordini dei clienti di Northwind Traders.

  2. Invio di una richiesta di spedizione a Wide World Importers e richiesta di conferma.

  3. Ricezione della conferma della richiesta di spedizione da Wide World Importers.

  4. Ricezione della notifica di prelievo da Wide World Importers.

  5. Ricezione di messaggi sullo stato della spedizione fino al momento della ricezione della spedizione da parte del cliente.

  6. Ricezione di una fattura da Wide World Importers.

  7. Risposta a Wide World Importers con un'accettazione della fattura.

  8. Ricezione di una conferma di pagamento da Wide World Importers.

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

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

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

  3. Nella casella Nome immettere BPELShipping.

    Nota

    Se si utilizza un nome diverso, potrebbero verificarsi problemi con il passaggio di binding finale.

  4. Selezionare un percorso per il progetto e quindi fare clic su OK per avviare l'Importazione guidata BPEL.

  5. Nella pagina Benvenuti fare clic su Avanti.

  6. Nella pagina Seleziona file BPEL, WSDL e XSD fare clic su Sfoglia.

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

  8. Nella pagina Select WSDL Files for Invoked WebServices (Seleziona file WSDL per i servizi Web richiamati ) fare clic su Finish (Fine).

  9. Dopo che è stato segnalato il corretto completamento dell'Importazione guidata BPEL, chiudere la procedura guidata. Verrà creato il progetto.

  10. Al prompt dei comandi di Visual Studio modificare la directory (cd) nel percorso del progetto.

  11. Eseguire il comando seguente:

    sn –k BPELShipping.snk

  12. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto BPELShipping e quindi scegliere Proprietà.

  13. In Proprietà comuni\Assembly selezionare il file di chiave dell'assembly BPELShipping.snk creato nel passaggio 11 e quindi fare clic su OK.

  14. In Esplora soluzioni selezionare tutti i file con estensione xsd ed eliminarli.

  15. In Esplora soluzioni selezionare Aggiungi riferimento e nella scheda Progetti fare clic su Sfoglia.

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

  17. In Esplora soluzioni fare doppio clic su OrderShippingProcess.bpel.odx.

  18. Scegliere Altre finestre/Visualizzazione orchestrazione dal menu Visualizza.

  19. Nella finestra Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Proprietà orchestrazione e quindi scegliere Finestra Proprietà.

  20. Nella Finestra Proprietà impostare la proprietà Orchestration Exportable su False.

  21. In Esplora soluzioni fare doppio clic su OrderShipping.wsdl.odx.

  22. Nella finestra Visualizzazione orchestrazione espandere Tipi/Tipi di messaggi multiparte.

  23. Espandere InvoiceAckMessageType e quindi fare clic su InvoiceAckMessagePart.

  24. Nella Finestra Proprietà espandere il campo Tipo e selezionare Schemi/Seleziona da assembly a cui si fa riferimento.

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

  26. 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
  27. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto BPELShipping, scegliere Aggiungie quindi fare clic su Elemento esistente.

  28. Selezionare tutti i file con estensione btm dal percorso <Percorso> esempi\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping.

  29. Nella finestra Visualizzazione orchestrazione individuare la forma Assegnazione messaggi denominata MessageAssignment_1 in ConstructMessage1 ed eliminarla.

  30. Dalla casella degli strumenti trascinare una forma Trasforma nella forma ConstructMessage1.

  31. Nella Finestra Proprietà fare clic sul pulsante con i puntini di sospensione (...) e aprire la finestra di dialogo Trasforma configurazione.

  32. Selezionare Mappa esistente.

  33. Selezionare il nome completo della mappa come BPELShipping.Order2ShipRequest.

  34. Selezionare l'origine come ordine. OrderMessagePart.

  35. Selezionare la destinazione come ship_request. ShipRequestMessagePart e fare clic su OK.

  36. 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
  37. Salvare l'orchestrazione.

  38. Fare doppio clic su Rule_1 nella Decision_1decide forma.

  39. Nell'Editor espressioni BizTalk sostituire

    ship_request_ack(BPELShipping.Ship_Acknowledged) == true

    con

    ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true

  40. Fare doppio clic sulla forma Ciclo denominata Loop_1.

  41. Nell'Editor espressioni BizTalk sostituire

    ship_history(BPELShipping.Ship_Completed) == true

    con

    ship_history(ShippingSchemas.Ship_Completed) == true

  42. Fare doppio clic su Rule_2 nella Decision_2decide forma.

  43. Nell'Editor espressioni BizTalk sostituire

    ship_status(BPELShipping.ShipStatus) == "DONE"

    con

    ship_status(ShippingSchemas.ShipStatus) == "DONE"

  44. Nella visualizzazione orchestrazione espandere Tipi/Tipi di correlazione e fare clic su OrderCorrelationSet_Type\.

  45. Nella Finestra Proprietà fare clic sul pulsante con i puntini di sospensione (...) in Proprietà di correlazione.

  46. Nel riquadro Proprietà da correlare fare clic su BPELShipping.OrderID e quindi fare clic su Rimuovi.

  47. Nel riquadro Proprietà disponibili espandere Schemi di spedizione, selezionare ID ordine e quindi fare clic su Aggiungi.

  48. Fare clic su OK.

  49. Salvare tutti i file e compilare la soluzione.

  50. Distribuzione della soluzione.

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

  1. Avviare il prompt dei comandi di Visual Studio.

  2. Dal prompt dei comandi di Visual Studio modificare la directory (cd) alla cartella seguente:

    <>Percorsi di esempio\Orchestrations\BPELImport\Solution\ShipperProcess

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

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

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

  1. Copiare il file Order.xml dalla <cartella Samples Path>\Orchestrations\BPELImport\Solution nella < cartella Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.

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

  1. Al prompt dei comandi di Visual Studio modificare la directory (cd) in <Percorso> esempi\Orchestrations\BPELImport\BPELShipping.

  2. Eseguire Cleanup.bat.

  3. Passare a <Percorso> esempi\Orchestrations\BPELImport\ShipperProcess.

  4. Eseguire Cleanup.bat.

Vedere anche

Orchestrations (cartella di esempi di BizTalk Server)