Cómo: Dividir un intercambio y enrutar los mensajes resultantes a varias ubicaciones de archivos mediante distintos itinerarios
Objetivo
En esta sección se muestra cómo crear una rampa de ESB que use la canalización ItinerarySelectReceiveXml y cómo configurar los componentes de la canalización para dividir un intercambio entrante y seleccionar la lista de distribución adecuada para cada mensaje resultante, en función del contexto del mensaje. La selección de itinerarios se resolverá mediante una directiva de reglas de negocios y los mensajes se enrutarán de forma diferente en función de la región en la que reside el cliente.
En este tema de procedimientos, completará los pasos siguientes:
Cree una rampa de ESB que divida un intercambio XML.
Configure el componente de canalización Selector de itinerarios para usar una directiva de reglas de negocios para seleccionar el itinerario adecuado.
Requisitos previos
Los procedimientos de este tema de procedimientos requieren la finalización de los requisitos previos para las actividades de desarrollo.
Antes de empezar
Complete las tareas siguientes antes de realizar los pasos que se indican más adelante en este tema de procedimientos:
Cree los artefactos necesarios.
Agregue un proyecto de esquemas a la solución Patterns.
Agregue los artefactos al proyecto Esquemas.
Cree una directiva BRE para seleccionar un itinerario mediante propiedades de mensaje personalizadas.
Agregue una regla de selección para el cliente GlobalBank West.
Agregue una regla de selección para el cliente GlobalBank East.
Publique e implemente la directiva.
Cree un modelo de lenguaje específico del dominio (DSL) de ESB para los mensajes de GlobalBank West.
Configure las propiedades del itinerario de GlobalBank West.
Defina la estructura del itinerario de GlobalBank West.
Exporte el modelo GlobalBank West a la base de datos de itinerarios.
Cree un modelo DSL de itinerarios de ESB para los mensajes de GlobalBank East.
Configure las propiedades del itinerario de GlobalBank East.
Defina la estructura del itinerario de GlobalBank East.
Exporte el modelo GlobalBank East a la base de datos de itinerarios.
En los procedimientos siguientes se describe cómo realizar cada uno de estos procedimientos.
Para crear los artefactos necesarios
En el Explorador de Windows, vaya a C:\HowTos.
Cree un nuevo documento de texto denominado OrderDocEnvelope.xsd.
Abra el esquema OrderDocEnvelope.xsd en el Bloc de notas.
Edite el documento con el código siguiente.
<?xml version="1.0" ?> <xs:schema xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://ESB.BizUnit.Map.Test" targetNamespace="http://ESB.BizUnit.Map.Test" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import schemaLocation="GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc" namespace="http://globalbank.esb.dynamicresolution.com/northamericanservices/" /> <xs:annotation> <xs:appinfo> <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" /> <b:references> <b:reference targetNamespace="http://globalbank.esb.dynamicresolution.com/northamericanservices/" /> </b:references> </xs:appinfo> </xs:annotation> <xs:element name="OrderEnvelope"> <xs:annotation> <xs:appinfo> <b:recordInfo body_xpath="/*[local-name()='OrderEnvelope' and namespace-uri()='http://ESB.BizUnit.Map.Test']" /> </xs:appinfo> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="ns0:OrderDoc" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Guarde OrderDocEnvelope.xsd como UTF-8 y cierre el Bloc de notas.
En la carpeta C:\HowTos, cree un nuevo documento de texto denominado Batch.xml.
En el Bloc de notas, abra Batch.xml.
Edite el documento con el código siguiente.
<?xml version="1.0" ?> <ns0:OrderEnvelope xmlns:ns0="http://ESB.BizUnit.Map.Test"> <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/"> <ns0:customerName>GlobalBankWest</ns0:customerName> <ns0:ID>ns0:ID_0</ns0:ID> <ns0:requestType>10</ns0:requestType> </ns0:OrderDoc> <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/"> <ns0:customerName>GlobalBankEast</ns0:customerName> <ns0:ID>ns0:ID_0</ns0:ID> <ns0:requestType>11</ns0:requestType> </ns0:OrderDoc> <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/"> <ns0:customerName>GlobalBankEast</ns0:customerName> <ns0:ID>ns0:ID_0</ns0:ID> <ns0:requestType>12</ns0:requestType> </ns0:OrderDoc> </ns0:OrderEnvelope>
Guarde y cierre Batch.xml.
Para agregar un proyecto de esquemas a la solución Patterns
En Visual Studio, abra C:\HowTos\Patterns\Patterns.sln.
En Explorador de soluciones, haga clic con el botón derecho en Solución "Patrones", seleccione Agregary, a continuación, haga clic en Nuevo proyecto.
En el cuadro de diálogo Agregar nuevo proyecto , en el panel Tipos de proyecto, haga clic en Proyectos de BizTalk y, a continuación, haga lo siguiente:
En el panel Plantillas, haga clic en Vacío BizTalk Server Proyecto.
En el cuadro Nombre , escriba Patterns.Schemas y, a continuación, haga clic en Aceptar.
En Explorador de soluciones, haga clic con el botón derecho en Patterns.Schemas y, a continuación, haga clic en Propiedades.
En el ventana Propiedades, en la pestaña Firma, active la casilla Firmar el ensamblado.
En la lista desplegable Elegir un archivo de clave de nombre seguro , haga clic en <Nuevo...>.
En el cuadro de diálogo Crear clave de nombre seguro , configure las siguientes propiedades:
En el cuadro Nombre de archivo de clave, escriba División.
Desactive la casilla Proteger mi archivo de clave con una contraseña y, a continuación, haga clic en Aceptar.
En el ventana Propiedades, en la pestaña Implementación, en el cuadro Nombre de la aplicación, escriba Microsoft.Practices.ESB.
Cierre la ventana Propiedades.
Para agregar los artefactos al proyecto Esquemas
En Explorador de soluciones, haga clic con el botón derecho en Patterns.Schemas y, a continuación, haga clic en Agregar referencia.
En la pestaña Examinar del cuadro de diálogo Agregar referencia , vaya a y seleccione C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB.DynamicResolution.Schemas\bin\Debug\GlobalBank.ESB.DynamicResolution.Schemas.dll y, a continuación, haga clic en Aceptar.
En Explorador de soluciones, haga clic con el botón derecho en Patterns.Schemas, seleccione Agregary, a continuación, haga clic en Elemento existente.
En el cuadro de diálogo Agregar elemento existente , vaya a C:\HowTos\OrderDocEnvelope.xsd y, a continuación, haga clic en Agregar.
Guarde todos los artefactos de la solución.
En Explorador de soluciones, haga clic con el botón derecho en Patterns.Schemas y, a continuación, haga clic en Implementar.
Nota
En este tema de procedimientos se usan la misma directiva de reglas de negocios e itinerarios que los creados en el tema Cómo: Seleccionar un itinerario mediante una directiva de reglas de negocios. Si aún no ha completado esa sección, complete los pasos adicionales siguientes. Si ha completado esa sección, continúe directamente con la sección "Pasos".
Para crear una directiva del motor de reglas de negocios (BRE) para seleccionar un itinerario mediante propiedades de mensaje personalizadas
Haga clic en Iniciar en la barra de tareas, seleccione Todos los programas, seleccione BizTalk Server y, a continuación, haga clic en Compositor de reglas de negocios.
En el Explorador de directivas, haga clic con el botón derecho en Directivasy, a continuación, haga clic en Agregar nueva directiva. Asigne un nombre a la directiva ResolveItineraryBasedOnCustomer.
Para agregar una regla de selección para el cliente GlobalBank West
En la directiva ResolveItineraryBasedOnCustomer , haga clic con el botón derecho en Versión 1.0 (no guardada) y, a continuación, haga clic en Agregar nueva regla. Asigne a la regla el nombre SetGlobalBankWestItinerary.
En el Explorador de hechos, haga clic en la pestaña Esquemas XML , haga clic con el botón derecho en Esquemas y, a continuación, haga clic en Examinar.
En el cuadro de diálogo Archivos de esquema , vaya a C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB. DynamicResolution.Schemas, seleccione NAOrderDoc.xsd y, a continuación, haga clic en Abrir.
Nota
Este es el esquema que define el mensaje de NAOrderDoc.xml, que se usó para crear los mensajes de Oeste y Este que se usarán para las pruebas.
En el Explorador de hechos, haga clic en NAOrderDoc.xsd, haga clic en la propiedad Tipo de documento en el panel Propiedades y, a continuación, escriba GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc.
Nota
Este es el nombre completo del esquema.
En el Explorador de hechos, expanda NAOrderDoc.xsd y, a continuación, expanda OrderDoc.
En la ventana Regla, haga clic con el botón derecho en Condiciones, seleccione Predicadosy, a continuación, haga clic en Igual.
En el Explorador de hechos, arrastre el elemento customerName al nodo argument1 en Condiciones.
Haga clic en el nodo argument2 y escriba GlobalBankWest.
En el Explorador de hechos, haga clic en la pestaña Vocabularios . Expanda la ESB. Vocabulario de itinerarios , expanda Versión 1.1 y, a continuación, arrastre la definición Establecer nombre de itinerario a Acciones.
Haga clic en <cadena> vacía y escriba GlobalBankWestItinerary.
Nota
Más adelante en este tema de procedimientos, creará este itinerario para procesar mensajes de GlobalBank West.
Para agregar una regla de selección para el cliente GlobalBank East
En el Explorador de directivas, haga clic con el botón derecho en la regla SetGlobalBankWestItinerary y, a continuación, haga clic en Copiar.
Haga clic con el botón derecho en Versión 1.0 (no guardada) y, a continuación, haga clic en Pegar.
En el cuadro de diálogo Nuevo nombre de regla , escriba SetGlobalBankEastItinerary y, a continuación, haga clic en Aceptar.
En el Explorador de directivas, haga clic en la regla SetGlobalBankEastItinerary .
En la sección Condiciones , haga clic con el botón derecho en GlobalBankWest y, a continuación, haga clic en Restablecer argumento.
Haga clic en argument2 y, a continuación, escriba GlobalBankEast.
En la sección Acciones , haga clic con el botón derecho en GlobalBankWestItinerary y, a continuación, haga clic en Restablecer argumento.
Haga clic en <cadena> vacía y escriba GlobalBankEastItinerary.
Nota
Más adelante en este tema de procedimientos, creará este itinerario para procesar mensajes de GlobalBank East.
Para publicar e implementar la directiva
En el Explorador de directivas, en la directiva ResolveItineraryBasedOnCustomer , haga clic en Versión 1.0 (no guardada) y, a continuación, haga clic en Publicar.
En el Explorador de directivas, en la directiva ResolveItineraryBasedOnCustomer , haga clic en Versión 1.0 - Publicada y, a continuación, haga clic en Implementar.
Para crear un modelo DSL de itinerario de ESB para los mensajes de GlobalBank West
En Visual Studio, abra C:\HowTos\Patterns\Patterns.sln.
En Explorador de soluciones, haga clic con el botón derecho en el proyecto ItineraryLibrary, seleccione Agregar y, a continuación, haga clic en Nuevo itinerario.
En el cuadro de diálogo Agregar nuevo elemento , en el panel Plantillas, haga clic en ItinerarioDsl.
En el cuadro Nombre , escriba GlobalBankWestItinerary y, a continuación, haga clic en Agregar.
Para configurar las propiedades del itinerario de GlobalBank West
En Visual Studio, haga clic en la superficie de diseño de GlobalBankWestItinerary.itinerary. En el ventana Propiedades GlobalBankWestItinerary, configure las siguientes propiedades:
En la lista desplegable Exportador de modelos, haga clic en Exportador de itinerarios de base de datos.
Haga clic en el botón de puntos suspensivos (...) junto a la propiedad Base de datos de itinerarios .
En el cuadro de diálogo Propiedades de conexión, elija el SQL Server que hospeda la base de datos del repositorio de itinerarios y, a continuación, especifique el nombre de la base de datos (el nombre predeterminado es EsbItineraryDb).
En la lista desplegable Estado del itinerario , haga clic en Implementado.
Nota
Este paso le permite exportar el itinerario a un repositorio central; los itinerarios se pueden seleccionar y adjuntar desde este repositorio cuando se reciben mensajes. Más adelante configurará el componente de canalización Selector de itinerarios para usar la resolución BRI para evaluar los mensajes entrantes y seleccionar el itinerario adecuado de este repositorio.
Para definir la estructura del itinerario de GlobalBank West
En el Cuadro de herramientas, arrastre un elemento de modelo on-Ramp a la superficie de diseño. En el ventana Propiedades OnRamp1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba ReceiveNAOrder.
En la lista desplegable Extender , haga clic en Extensión de servicio ESB de rampa.
En la lista desplegable Aplicación de BizTalk , haga clic en Microsoft.Practices.ESB.
En la lista desplegable Puerto de recepción, haga clic en OnRamp.Itinerary.
Desde el Cuadro de herramientas, arrastre un elemento de modelo Off-Ramp a la superficie de diseño y colóquelo a la derecha del elemento del modelo ReceiveNAOrder . En el ventana Propiedades OffRamp1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba SendNAOrder.
En la lista desplegable Extender , haga clic en Off-Ramp ESB Service Extension (Extensión de servicio ESB fuera de rampa).
En la lista desplegable Aplicación de BizTalk , haga clic en GlobalBank.ESB.
En la lista desplegable Puerto de envío, haga clic en DynamicResolutionOneWay.
En el Cuadro de herramientas, arrastre un elemento de modelo de Servicio de itinerarios a la superficie de diseño y colóquelo entre el elemento del modelo ReceiveNAOrder y el elemento del modelo SendNAOrder . En la ventana de propiedades de ItineraryService1 , configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba RouteMessage.
En la lista desplegable Extender servicio de itinerarios , haga clic en Extensión de servicio de itinerarios fuera de rampa.
En la lista desplegable Off-Ramp ,expanda SendNAOrdery, a continuación, haga clic en Send Handlers (Enviar controladores).
Haga clic con el botón derecho en la colección Resolver del elemento de modelo RouteMessage y, a continuación, haga clic en Agregar nuevo solucionador. En el ventana Propiedades Resolver1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba StaticResolver.
En la lista desplegable Implementación del solucionador , haga clic en Extensión de resolución estática.
En la lista desplegable Nombre de transporte , haga clic en ARCHIVO.
Haga clic en la propiedad Ubicación de transporte y escriba C:\HowTos\Out\West%MessageID%.xml.
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento del modelo ReceiveNAOrder al elemento de modelo RouteMessage .
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento de modelo RouteMessage al elemento de modelo SendNAOrder .
Para exportar el modelo globalbank occidental a la base de datos de itinerarios
En Visual Studio, haga clic con el botón derecho en la superficie de diseño del itinerario GlobalBankWestItinerary y, a continuación, haga clic en Exportar modelo.
Nota
El itinerario se ha exportado a la base de datos de itinerarios y ahora puede ser utilizado por el componente Selector de itinerarios.
Guarde todos los artefactos del proyecto.
Para crear un modelo DSL de itinerarios de ESB para globalBank East message
En Visual Studio, abra C:\HowTos\Patterns.sln.
En Explorador de soluciones, haga clic con el botón derecho en el proyecto ItineraryLibrary, seleccione Agregar y, a continuación, haga clic en Nuevo itinerario.
En el cuadro de diálogo Agregar nuevo elemento , en el panel Plantillas, haga clic en ItinerarioDsl.
En el cuadro Nombre , escriba GlobalBankEastItinerary y, a continuación, haga clic en Agregar.
Para configurar las propiedades del itinerario de GlobalBank East
En Visual Studio, haga clic en la superficie de diseño de GlobalBankEastItinerary.itinerary. En el ventana Propiedades GlobalBankEastItinerary, configure las siguientes propiedades:
En la lista desplegable Exportador de modelos, haga clic en Exportador de itinerarios de base de datos.
Haga clic en el botón de puntos suspensivos (...) junto a la propiedad Base de datos de itinerarios .
En el cuadro de diálogo Propiedades de conexión, elija el SQL Server que hospeda la base de datos del repositorio de itinerarios y, a continuación, especifique el nombre de la base de datos (el nombre predeterminado es EsbItineraryDb).
En la lista desplegable Estado del itinerario , haga clic en Implementado.
Nota
Este paso le permite exportar el itinerario a un repositorio central; los itinerarios se pueden seleccionar y adjuntar desde este repositorio cuando se reciben mensajes. Más adelante configurará el componente de canalización Selector de itinerarios para usar la resolución BRI para evaluar los mensajes entrantes y seleccionar el itinerario adecuado de este repositorio.
Para definir la estructura del itinerario de GlobalBank East
En el Cuadro de herramientas, arrastre un elemento de modelo on-Ramp a la superficie de diseño. En el ventana Propiedades OnRamp1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba ReceiveNAOrder.
En la lista desplegable Extender , haga clic en Extensión de servicio ESB de rampa.
En la lista desplegable Aplicación de BizTalk , haga clic en Microsoft.Practices.ESB.
En la lista desplegable Puerto de recepción, haga clic en OnRamp.Itinerary.
Desde el Cuadro de herramientas, arrastre un elemento de modelo Off-Ramp a la superficie de diseño y colóquelo a la derecha del elemento del modelo ReceiveNAOrder . En el ventana Propiedades OffRamp1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba SendNAOrder.
En la lista desplegable Extender , haga clic en Off-Ramp ESB Service Extension (Extensión de servicio ESB fuera de rampa).
En la lista desplegable Aplicación de BizTalk , haga clic en GlobalBank.ESB.
En la lista desplegable Puerto de envío, haga clic en DynamicResolutionOneWay.
En el Cuadro de herramientas, arrastre un elemento de modelo de Servicio de itinerarios a la superficie de diseño y colóquelo entre el elemento del modelo ReceiveNAOrder y el elemento del modelo SendNAOrder . En el ventana Propiedades ItineraryService1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba RouteMessage.
En la lista desplegable Extender servicio de itinerarios , haga clic en Extensión de servicio de itinerarios fuera de rampa.
En la lista desplegable Off-Ramp ,expanda SendNAOrdery, a continuación, haga clic en Send Handlers (Enviar controladores).
Haga clic con el botón derecho en la colección Resolver del elemento de modelo RouteMessage y, a continuación, haga clic en Agregar nuevo solucionador. En el ventana Propiedades Resolver1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba StaticResolver.
En la lista desplegable Implementación del solucionador , haga clic en Extensión de resolución estática.
En la lista desplegable Nombre de transporte , haga clic en ARCHIVO.
Haga clic en la propiedad Ubicación de transporte y escriba C:\HowTos\Out\East%MessageID%.xml.
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento del modelo ReceiveNAOrder al elemento de modelo RouteMessage .
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento de modelo RouteMessage al elemento de modelo SendNAOrder .
Para exportar el modelo GlobalBank East a la base de datos de itinerarios
En Visual Studio, haga clic con el botón derecho en la superficie de diseño del itinerario GlobalBankEastItinerary y, a continuación, haga clic en Exportar modelo.
Nota
El itinerario se ha exportado a la base de datos de itinerarios y ahora puede ser utilizado por el componente Selector de itinerarios.
Guarde todos los artefactos del proyecto.
Pasos
Para crear y configurar una rampa de ESB
Haga clic en Iniciar en la barra de tareas, seleccione Todos los programas, BizTalk Server y, a continuación, haga clic en Administración de BizTalk Server.
En la consola de administración de BizTalk Server, expanda Grupo de BizTalk, aplicaciones y, después, Microsoft.Practices.ESB.
Haga clic con el botón derecho en Ubicaciones de recepción, seleccione Nuevoy, a continuación, haga clic en Ubicación de recepción unidireccional.
En el cuadro de diálogo Seleccionar un puerto de recepción , haga clic en OnRamp.Itinerary y, a continuación, haga clic en Aceptar.
En el cuadro de diálogo Propiedades de ubicación de recepción, en el cuadro Nombre , escriba OnRamp.Itinerary.HowTo.
En la lista desplegable Tipo , haga clic en ARCHIVO y, a continuación, haga clic en Configurar.
En el cuadro de diálogo Propiedades de transporte de archivos , en el cuadro Carpeta de recepción , escriba C:\HowTos\DropFolder y, a continuación, haga clic en Aceptar.
Para configurar el componente de canalización selector de itinerarios
En el cuadro de diálogo Propiedades de ubicación de recepción, haga clic en ItinerarySelectReceiveXml en la lista desplegable Canalización de recepción y, a continuación, haga clic en el botón de puntos suspensivos (...).
Use el cuadro de diálogo Configurar canalización para configurar las siguientes propiedades del componente Selector de itinerarios :
Haga clic en la propiedad ItineraryFactKey y, a continuación, escriba Resolver.Itinerary.
Haga clic en la propiedad ResolverConnectionString y escriba BRI:\\policy=ResolveItineraryBasedOnCustomer; useMsg=true; recognizeMessageFormat=true;
Haga clic en Aceptar para cerrar el cuadro de diálogo Configurar canalización .
Nota
Dado que esta ubicación de recepción desensambla un intercambio XML, no se requiere ninguna configuración de componente de desensamblador XML.
Haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades de ubicación de recepción .
En la consola de administración de BizTalk Server, haga clic con el botón derecho en la ubicación de recepción OnRamp.Itinerary.HowTo y, a continuación, haga clic en Habilitar.
Para probar el selector de itinerarios y las reglas de negocios
En el Explorador de Windows, vaya a C:\HowTos.
Copie (no mueva) Batch.xml a la carpeta DropFolder.
Vaya a C:\HowTos\Out. Compruebe que se ha escrito un mensaje West%MessageID%.xml y dos mensajes East%MessageID%.xml en el directorio.
Nota
Aunque los mensajes son idénticos excepto el valor del elemento customer, se procesaron mediante itinerarios diferentes, en función de la resolución del componente de canalización selector de itinerarios.
En la consola de administración de BizTalk Server, haga clic con el botón derecho en la ubicación de recepción OnRamp.Itinerary.HowTo y, a continuación, haga clic en Deshabilitar.
Una vez deshabilitada la ubicación de recepción OnRamp.Itinerary.HowTo , haga clic con el botón derecho en ella y, a continuación, haga clic en Eliminar. En el cuadro de diálogo Confirmar ubicación de recepción de eliminación , haga clic en Sí.
Recursos adicionales
Para obtener más información, vea los siguientes temas relacionados: