Compartir a través de


Importar BPEL (ejemplo de BizTalk Server)

El ejemplo de Importar BPEL muestra cómo crear una orquestación a partir de una descripción de proceso de Lenguaje de ejecución de procesos empresariales (BPEL) y sus artefactos relacionados.

Descripción del ejemplo

Wide World Importers es una empresa de transporte que ofrece servicios de envío automatizados a distribuidores. En concreto, Wide World Importers permite a los distribuidores llevar a cabo las siguientes acciones:

  • Solicitar envíos de pedidos

  • Llevar a cabo un seguimiento de los envíos

  • Confirmar los envíos

  • Confirmar la facturación y los pagos de los envíos

    Mientras que la disponibilidad de estos servicios puede representarse mediante el uso de un documento de Lenguaje de descripción de servicios web (WSDL), un documento BPEL describe el modo en el que se espera que las compañías de productos llamen a los servicios y cómo deben esperar la respuesta de Wide World Importers.

    Cuando Northwind Traders contrata los servicios de Wide World Importers para que lleve a cabo su envío, se les entrega un archivo BPEL y algunos artefactos relacionados que describen la interacción. Con el archivo BPEL, Northwind Traders crea una aplicación de BizTalk Server (BPELShipping) para procesar automáticamente los pedidos a través de Wide World Importers.

    Este ejemplo realiza un recorrido por este escenario en el que la aplicación BPELShipping:

  1. Recibe un pedido del sistema de pedidos de cliente de Northwind Traders.

  2. Envía una solicitud de envío a Wide World Importers y solicita una confirmación.

  3. Recibe una confirmación de la solicitud de envío de Wide World Importers.

  4. Recibe una notificación de recogida de Wide World Importers.

  5. Recibe mensajes de estado del envío hasta el momento en el que el cliente ha recibido el envío.

  6. Recibe una factura de Wide World Importers.

  7. Responde a Wide World Importers con una confirmación de recepción de factura.

  8. Recibe una confirmación de pago de Wide World Importers.

  9. Envía una confirmación de envío final al sistema de pedidos.

    Se utiliza una aplicación independiente de BizTalk (ShipperProcess) para simular la empresa Wide World Importers para este ejemplo. La aplicación BPELShipping se comunica con ShipperProcess mediante el transporte de archivos, que utiliza ubicaciones del sistema de archivos comunes para la comunicación.

Cómo se ha diseñado este ejemplo y por qué

BPEL para servicios web es un lenguaje basado en XML que describe el proceso empresarial de forma que puedan compartirlo varias empresas distintas que desean hacer negocios entre sí mediante los servicios web. BPEL describe cómo controlar el proceso empresarial en el nivel de protocolo empresarial, pero no describe el proceso interno de una empresa, como los pasos que la empresa realiza para procesar un pedido después de recibirlo de un socio comercial. Este ejemplo está diseñado para mostrar cómo importar BPEL y los archivos WSDL correspondientes, convertirlos a una orquestación y, después, iniciar el proceso empresarial con el socio comercial.

A continuación, se muestra el procedimiento paso a paso que indica cómo importar los archivos BPEL y WSDL y convertirlos a una orquestación para que interactúe con una aplicación de BizTalk ya generada (ShipperProcess). Si completa los pasos siguientes, no necesitará llevar a cabo los pasos descritos en "Generar e inicializar la aplicación BPELShipping".

Para importar desde BPEL y generar una solución de trabajo

  1. En Microsoft Visual Studio, en el menú Archivo , haga clic en Nuevo y, a continuación, haga clic en Proyecto.

    Nota

    Antes de completar este procedimiento, deberá configurar la aplicación ShipperProcess para crear los proyectos de esquema y los procesos complementarios.

  2. En el cuadro de diálogo Nuevo proyecto, en el panel Tipos de proyecto, seleccione BizTalk (Proyectos). En el panel Plantillas, seleccione Proyecto de importación de BPEL de BizTalk (Server).

  3. En el cuadro Nombre , escriba BPELShipping.

    Nota

    Si utiliza un nombre distinto, pueden producirse problemas con el paso de enlace final.

  4. Seleccione una ubicación para el proyecto y haga clic en Aceptar para iniciar el Asistente para importación de BPEL.

  5. En la página principal, haga clic en Siguiente.

  6. En la página Seleccionar archivos BPEL, WSDL y XSD , haga clic en Examinar.

  7. Seleccione todos los archivos de la < carpeta Samples Path>\Orchestrations\BPELImport\BPELSource, haga clic en Abrir y, a continuación, haga clic en Siguiente.

    Nota

    En este paso, seleccione los archivos BPEL y WSDL para describir el proceso empresarial y los archivos XSD para representar los esquemas de documentos empresariales.

  8. En la página Seleccionar archivos WSDL para Servicios web invocados , haga clic en Finalizar.

  9. Cuando el Asistente para importar BPEL informe de que la importación se ha realizado correctamente, cierre el asistente. Ya se ha creado el proyecto.

  10. En el símbolo del sistema de Visual Studio, cambie el directorio (cd) a la ubicación del proyecto.

  11. Ejecute el siguiente comando:

    sn –k BPELShipping.snk

  12. En Explorador de soluciones, haga clic con el botón derecho en el proyecto BPELShipping y, a continuación, haga clic en Propiedades.

  13. En Propiedades comunes\Ensamblado, seleccione el archivo de clave de ensamblado BPELShipping.snk creado en el paso 11 y, a continuación, haga clic en Aceptar.

  14. En el Explorador de soluciones, seleccione todos los archivos .xsd y elimínelos.

  15. En Explorador de soluciones, seleccione Agregar referencia y, en la pestaña Proyectos, haga clic en Examinar.

  16. Seleccione ShippingSchemas.dll en la ruta> de acceso de ejemplos de ubicación<\Orquestaciones\BPELImport\Solution\ShipperProcess\ShippingSchemas\bin\Development y, a continuación, haga clic en Aceptar.

    Nota

    La sección "Generar e iniciar la aplicación ShipperProcess" contiene instrucciones acerca de cómo generarla.

  17. En Explorador de soluciones, haga doble clic en OrderShippingProcess.bpel.odx.

  18. En el menú Ver , seleccione Otras ventanas o vista de orquestación.

  19. En la ventana Vista de orquestación, haga clic con el botón derecho en Propiedades de orquestación y, a continuación, haga clic en Ventana Propiedades.

  20. En el ventana Propiedades, establezca la propiedad Exportable orchestration en False.

  21. En Explorador de soluciones, haga doble clic en OrderShipping.wsdl.odx.

  22. En la ventana Vista de orquestación, expanda Tipos/Tipos de mensajes de varias partes.

  23. Expanda InvoiceAckMessageType y, a continuación, haga clic en InvoiceAckMessagePart.

  24. En el ventana Propiedades, expanda el campo Tipo y seleccione Esquemas/Seleccionar del ensamblado al que se hace referencia.

  25. En el cuadro de diálogo Seleccionar tipo de artefacto , haga clic en ShippingSchemas, seleccione el tipo de Imported_InvoiceAckMessage y, a continuación, haga clic en Aceptar.

    Nota

    En los pasos del 23 al 25, reemplaza el tipo de mensaje de los servicios que participan en el proceso de BPEL con los tipos de mensajes correspondientes descritos en ShippingSchemas.

  26. Repita los pasos del 23 al 25 para cada tipo de mensaje mediante los siguientes valores.

    Parte de mensaje Tipo de mensaje
    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. En Explorador de soluciones, haga clic con el botón derecho en el proyecto BPELShipping, seleccione Agregar y, a continuación, haga clic en Elemento existente.

  28. Seleccione todos los archivos .btm en la ubicación <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\Solution\BPELShipping\BPELShipping.

  29. En la ventana Vista de orquestación, busque la forma Asignación de mensajes denominada MessageAssignment_1 en ConstructMessage1 y elimínela.

  30. En el Cuadro de herramientas, arrastre una forma Transformar a la forma ConstructMessage1.

  31. En el ventana Propiedades, haga clic en el botón de puntos suspensivos (...) y abra el cuadro de diálogo Transformar configuración.

  32. Seleccione Mapa existente.

  33. Seleccione el nombre completo del mapa como BPELShipping.Order2ShipRequest.

  34. Seleccione el origen como orden. OrderMessagePart.

  35. Seleccione el destino como ship_request. ShipRequestMessagePart y haga clic en Aceptar.

  36. Repita los pasos del 29 al 35 para cada una de las formas de asignación de mensajes y reemplácelas por Transformar formas según la tabla siguiente.

    Forma para reemplazar Asignación que se va a usar Documento de origen Documento de destino
    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. Guarde la orquestación.

  38. Haga doble clic en Rule_1 de la forma DecidirDecision_1.

  39. En el Editor de expresiones de BizTalk, reemplace

    ship_request_ack(BPELShipping.Ship_Acknowledged) == true

    con

    ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true

  40. Haga doble clic en la forma bucle denominada Loop_1.

  41. En el Editor de expresiones de BizTalk, reemplace

    ship_history(BPELShipping.Ship_Completed) == true

    con

    ship_history(ShippingSchemas.Ship_Completed) == true

  42. Haga doble clic en Rule_2 de la forma DecidirDecision_2.

  43. En el Editor de expresiones de BizTalk, reemplace

    ship_status(BPELShipping.ShipStatus) == "DONE"

    con

    ship_status(ShippingSchemas.ShipStatus) == "DONE"

  44. En la vista Orquestación, expanda Tipos/Tipos de correlación y haga clic en OrderCorrelationSet_Type\.

  45. En el ventana Propiedades, haga clic en el botón de puntos suspensivos (...) en Propiedades de correlación.

  46. En el panel Propiedades que se van a correlacionar, haga clic en BPELShipping.OrderID y, a continuación, haga clic en Quitar.

  47. En el panel Propiedades disponibles, expanda Esquemas de envío, seleccione Id. de pedido y, a continuación, haga clic en Agregar.

  48. Haga clic en OK.

  49. Guarde todos los archivos y genere la solución.

  50. Implementar la solución.

  51. Vaya a la ubicación <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\Solution\BPELShipping y haga doble clic enBindAndStartOnly.bat para enlazar e iniciar la orquestación.

Ubicación del ejemplo

<Ruta de acceso> de ejemplos\Orquestaciones\BPELImport

En la tabla siguiente se enumeran los archivos del ejemplo y se describe su propósito.

Archivos Descripción
BPELSource\InvoiceAckMessage.xsd Esquema de confirmación de factura.
BPELSource\InvoiceMessage.xsd Esquema de factura.
BPELSource\OrderAckMessage.xsd Esquema de confirmación de pedido.
BPELSource\OrderHeader.xsd Esquema de encabezado de pedido.
BPELSource\OrderMessage.xsd Esquema de mensajes de pedido.
BPELSource\OrderShipping.wsdl Archivo WSDL al que hace referencia BPEL.
BPELSource\OrderShippingProcess.bpel Flujo de proceso BPEL.
BPELSource\PaymentConfirmationMessage.xsd Mensaje de confirmación de pago.
BPELSource\PickupNotificationMessage.xsd Mensaje de notificación de recogida.
BPELSource\ShipConfirmationMessage.xsd Mensaje de confirmación de envío.
BPELSource\ShippingHistory.xsd Documento de historial de envío.
BPELSource\ShipRequestAckMessage.xsd Enviar confirmación de solicitud.
BPELSource\ShipRequestMessage.xsd Enviar mensaje de solicitud.
BPELSource\ShipStatusMessage.xsd Enviar mensaje de estado.
Solution\bindings\BPELBindings.xml Archivo de enlace que especifica los enlaces de puertos de la orquestación BPELShipping.
Solution\bindings\ShipperBindings.xml Archivo de enlace que especifica los enlaces de puertos de la orquestación ShipperProcess.
Solution\BPELShipping\BindAndStartOnly.bat Archivo por lotes que se utiliza para enlazar e iniciar la orquestación BPELImport después de que se haya generado manualmente e implementado.
Solution\BPELShipping\cleanup.bat Archivo por lotes que se utiliza para quitar el proceso BPELShipping.
Solution\BPELShipping\Setup.bat Archivo por lotes que se utiliza para instalar e iniciar el ejemplo BPELShipping proporcionado.
Solution\BPELShipping\BPELShipping.sln El ejemplo BPELShipping ya generado.
olution\BPELShipping\BPELShipping\Invoice2Ack.btm Factura para facturar la asignación de confirmación.
Solution\BPELShipping\BPELShipping\Order2FinalConfirmation.btm Asignación para convertir el Mensaje de pedido a la confirmación de envío final.
Solution\BPELShipping\BPELShipping\Order2OrderAck.btm Asignación para convertir el Mensaje de pedido a la confirmación de pedido.
Solution\BPELShipping\BPELShipping\Order2OrderNack.btm Asignación para convertir de Mensaje de pedido a confirmación negativa de pedido.
Solution\BPELShipping\BPELShipping\Order2ShipHistory.btm Asignación para convertir de Mensaje de pedido a Documento de historial de envío.
Solution\BPELShipping\BPELShipping\Order2ShipRequest.btm Asignación para convertir el Mensaje de pedido a la Solicitud de envío.
Solution\BPELShipping\BPELShipping\ShipRequest2Completed.btm Asignación para definir el Historial de envío como completado.
Solution\ShipperProcess\setup.bat El archivo por lotes que se va a generar, implementar, enlazar e iniciar la orquestación del asistente ShipperProcess y sus puertos.
Solution\ShipperProcess\cleanup.bat Archivo por lotes para detener, dar de baja y anular la implementación de la orquestación del asistente ShipperProcess y sus puertos.

Crear e inicializar este ejemplo

El primer paso consiste en generar e iniciar la aplicación ShipperProcess utilizada para simular Wide World Importers.

Para generar e iniciar la aplicación ShipperProcess

  1. Inicie el símbolo del sistema de Visual Studio.

  2. En el símbolo del sistema de Visual Studio, cambie el directorio (cd) a la siguiente carpeta:

    <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\Solution\ShipperProcess

  3. Ejecute el archivo Setup.bat que realiza las acciones siguientes:

    • Genera el proyecto ShippingSchemas, que contiene los esquemas utilizados en ShipperProcess y en el proceso de BPELShipping

    • Genera el ShipperProcess

    • Implementa los proyectos ShippingSchemas y ShipperProcess

    • Crea y enlaza los puertos de envío y recepción utilizados por ShipperProcess

    • Se inician los puertos utilizados por ShipperProcess

    • Da de alta e inicia la orquestación ShipperProcess

    Debe confirmar que no se ha informado de errores durante el proceso de creación e iniciación antes de intentar ejecutar este ejemplo. Puede aparecer una o más de las advertencias siguientes; puede pasarlas por alto.

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

No será necesario llevar a cabo los pasos siguientes si se han completado los que se describen en "Para importar desde BPEL y generar una solución de trabajo".

Para generar e iniciar la aplicación BPELShipping

  1. Advertencia

    Antes de ejecutar estos pasos, debe completar los pasos anteriores titulados "Para generar e iniciar la aplicación ShipperProcess".

    En el símbolo del sistema de Visual Studio, cambie el directorio (cd) a la siguiente carpeta:

    <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\Solution\BPELShipping

  2. Ejecute el archivo Setup.bat que realiza las acciones siguientes:

    • Genera el proyecto BPELShipping

    • Implementa el proyecto BPELShipping

    • Crea y enlaza los puertos de envío y recepción utilizados por el proceso BPELShipping

    • Inicia los puertos utilizados por el proceso BPELShipping

    • Da de alta e inicia la orquestación BPELShipping

Ejecución del ejemplo

Para ejecutar el ejemplo de Importación BPEL

  1. Copie el archivo Order.xml de la <carpeta Samples Path>\Orchestrations\BPELImport\Solution en la < carpeta Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.

  2. La orquestación BPELShipping recoge este archivo como un pedido del sistema de procesamiento de pedidos de cliente, se ejecuta a través del proceso de envío y genera un archivo cada uno en la < carpeta Samples Path>\Orchestrations\BPELImport\Solution\Ports\SendOrder y la < carpeta Samples Path>\Orchestrations\BPELImport\Solution\Ports\FinalConfirmation. El formato del nombre de estos archivos es <MessageID>.xml, donde <MessageID> es el GUID generado para identificar de forma única el mensaje.

Desinstalar este ejemplo

Para desinstalar el ejemplo Importación BPEL

  1. En un símbolo del sistema de Visual Studio, cambie el directorio (cd) a <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\BPELShipping.

  2. Ejecute Cleanup.bat.

  3. Vaya a Ruta de acceso> de < ejemplos\Orquestaciones\BPELImport\ShipperProcess.

  4. Ejecute Cleanup.bat.

Consulte también

Orquestaciones (carpetas de ejemplos de BizTalk Server)