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:
Recibe un pedido del sistema de pedidos de cliente de Northwind Traders.
Envía una solicitud de envío a Wide World Importers y solicita una confirmación.
Recibe una confirmación de la solicitud de envío de Wide World Importers.
Recibe una notificación de recogida de Wide World Importers.
Recibe mensajes de estado del envío hasta el momento en el que el cliente ha recibido el envío.
Recibe una factura de Wide World Importers.
Responde a Wide World Importers con una confirmación de recepción de factura.
Recibe una confirmación de pago de Wide World Importers.
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
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.
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).
En el cuadro Nombre , escriba BPELShipping.
Nota
Si utiliza un nombre distinto, pueden producirse problemas con el paso de enlace final.
Seleccione una ubicación para el proyecto y haga clic en Aceptar para iniciar el Asistente para importación de BPEL.
En la página principal, haga clic en Siguiente.
En la página Seleccionar archivos BPEL, WSDL y XSD , haga clic en Examinar.
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.
En la página Seleccionar archivos WSDL para Servicios web invocados , haga clic en Finalizar.
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.
En el símbolo del sistema de Visual Studio, cambie el directorio (cd) a la ubicación del proyecto.
Ejecute el siguiente comando:
sn –k BPELShipping.snk
En Explorador de soluciones, haga clic con el botón derecho en el proyecto BPELShipping y, a continuación, haga clic en Propiedades.
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.
En el Explorador de soluciones, seleccione todos los archivos .xsd y elimínelos.
En Explorador de soluciones, seleccione Agregar referencia y, en la pestaña Proyectos, haga clic en Examinar.
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.
En Explorador de soluciones, haga doble clic en OrderShippingProcess.bpel.odx.
En el menú Ver , seleccione Otras ventanas o vista de orquestación.
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.
En el ventana Propiedades, establezca la propiedad Exportable orchestration en False.
En Explorador de soluciones, haga doble clic en OrderShipping.wsdl.odx.
En la ventana Vista de orquestación, expanda Tipos/Tipos de mensajes de varias partes.
Expanda InvoiceAckMessageType y, a continuación, haga clic en InvoiceAckMessagePart.
En el ventana Propiedades, expanda el campo Tipo y seleccione Esquemas/Seleccionar del ensamblado al que se hace referencia.
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.
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 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.
Seleccione todos los archivos .btm en la ubicación <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\Solution\BPELShipping\BPELShipping.
En la ventana Vista de orquestación, busque la forma Asignación de mensajes denominada MessageAssignment_1 en ConstructMessage1 y elimínela.
En el Cuadro de herramientas, arrastre una forma Transformar a la forma ConstructMessage1.
En el ventana Propiedades, haga clic en el botón de puntos suspensivos (...) y abra el cuadro de diálogo Transformar configuración.
Seleccione Mapa existente.
Seleccione el nombre completo del mapa como BPELShipping.Order2ShipRequest.
Seleccione el origen como orden. OrderMessagePart.
Seleccione el destino como ship_request. ShipRequestMessagePart y haga clic en Aceptar.
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 Guarde la orquestación.
Haga doble clic en Rule_1 de la forma DecidirDecision_1.
En el Editor de expresiones de BizTalk, reemplace
ship_request_ack(BPELShipping.Ship_Acknowledged) == true
con
ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true
Haga doble clic en la forma bucle denominada Loop_1.
En el Editor de expresiones de BizTalk, reemplace
ship_history(BPELShipping.Ship_Completed) == true
con
ship_history(ShippingSchemas.Ship_Completed) == true
Haga doble clic en Rule_2 de la forma DecidirDecision_2.
En el Editor de expresiones de BizTalk, reemplace
ship_status(BPELShipping.ShipStatus) == "DONE"
con
ship_status(ShippingSchemas.ShipStatus) == "DONE"
En la vista Orquestación, expanda Tipos/Tipos de correlación y haga clic en OrderCorrelationSet_Type\.
En el ventana Propiedades, haga clic en el botón de puntos suspensivos (...) en Propiedades de correlación.
En el panel Propiedades que se van a correlacionar, haga clic en BPELShipping.OrderID y, a continuación, haga clic en Quitar.
En el panel Propiedades disponibles, expanda Esquemas de envío, seleccione Id. de pedido y, a continuación, haga clic en Agregar.
Haga clic en OK.
Guarde todos los archivos y genere la solución.
Implementar la solución.
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
Inicie el símbolo del sistema de Visual Studio.
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
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
-
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
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
Copie el archivo Order.xml de la <carpeta Samples Path>\Orchestrations\BPELImport\Solution en la < carpeta Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.
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
En un símbolo del sistema de Visual Studio, cambie el directorio (cd) a <Ruta de acceso> de ejemplos\Orquestaciones\BPELImport\BPELShipping.
Ejecute Cleanup.bat.
Vaya a Ruta de acceso> de < ejemplos\Orquestaciones\BPELImport\ShipperProcess.
Ejecute Cleanup.bat.