Cómo: Implementar el enrutamiento basado en contenido mediante una directiva de reglas de negocio para un tipo de mensaje conocido
Objetivo
En esta sección se muestra cómo crear un itinerario que enruta dinámicamente un mensaje, en función del contenido de un tipo de mensaje conocido (esquema implementado en la base de datos de configuración de Microsoft BizTalk Server), mediante una directiva de reglas de negocios.
En este tema de procedimientos, completará los pasos siguientes:
Cree una directiva de reglas de negocios que se usará para enrutar un mensaje en función del contenido.
Cree una lista de enrutamiento de itinerarios con una resolución BRE para enrutar dinámicamente un mensaje.
Pruebe el itinerario mediante la aplicación de ejemplo Cliente de prueba de itinerarios.
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 el mensaje de prueba de GlobalBank West.
Cree el mensaje de prueba de GlobalBank East.
En los procedimientos siguientes se describe cómo realizar cada uno de estos procedimientos.
Para crear el mensaje de prueba de GlobalBank West
En el Explorador de Windows, vaya a C:\HowTos.
Cree una copia de NAOrderDoc.xml y, a continuación, asigne un nombre al West.xml de copia.
En el Bloc de notas, abra West.xml y cambie el valor del elemento customerName a GlobalBankWest.
Guarde West.xml como UTF-8 y cierre el Bloc de notas.
Para crear el mensaje de prueba de GlobalBank East
En el Explorador de Windows, vaya a C:\HowTos.
Cree una copia de NAOrderDoc.xml y, a continuación, asigne un nombre al East.xml de copia.
En el Bloc de notas, abra East.xml y cambie el valor del elemento customerName a GlobalBankEast.
Guarde East.xml como UTF-8 y cierre el Bloc de notas.
Pasos
Para crear una directiva BRE para enrutar mediante propiedades de mensaje personalizadas
Esta regla usará el nombre del cliente para establecer dinámicamente el punto de conexión usado para enrutar el mensaje.
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 RouteBasedOnCustomerKnownType.
Para agregar una regla de enrutamiento para globalBank West del cliente
En la directiva RouteBasedOnCustomerKnownType , 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 un nombre a la regla SetWestEndpoint.
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 y, a continuación, en el panel Propiedades, haga clic en la propiedad Tipo de documento 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 y expanda ESB. EndPointInfo y, a continuación, expanda la versión 1.0.
Nota
Microsoft BizTalk ESB Toolkit incluye varios vocabularios que se pueden usar para crear reglas para su uso en ESB. Algunos de estos deben reemplazarse o aumentarse por sus propios vocabularios. Por ejemplo, dynamicRunTimeMaptypes tiene definiciones para los mapas proporcionados en los ejemplos de GlobalBank .
En el Explorador de hechos, arrastre la definición Set End Point Outbound Transport Location (Establecer ubicación de transporte saliente de punto de conexión) a Actions (Acciones).
Haga clic en <cadena> vacía y escriba C:\HowTos\Out\West%MessageID%.xml.
En el Explorador de hechos, arrastre la definición Establecer tipo de transporte saliente de punto de conexión a Acciones.
En el Explorador de hechos, expanda ESB. TransportTypes, expanda Versión 1.0 y, a continuación, arrastre la definición proveedores de adaptador a <una cadena> vacía.
En el panel Acciones , expanda la lista desplegable Proveedores de adaptadores y, a continuación, haga clic en ARCHIVO.
Para agregar una regla de enrutamiento para el cliente GlobalBank East
En el Explorador de directivas, haga clic con el botón derecho en la regla SetWestEndpoint 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 SetEastEndpoint y, a continuación, haga clic en Aceptar.
En el Explorador de directivas, haga clic en la regla SetEastEndpoint .
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 C:\HowTos\Out\West%MessageID%.xmly, a continuación, haga clic en Restablecer argumento.
Haga clic en <cadena> vacía y escriba C:\HowTos\Out\East%MessageID%.xml.
Para agregar una regla de enrutamiento para clientes desconocidos
En la directiva RouteBasedOnCustomerKnownType, 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 un nombre a la regla SetUnknownCustomerEndpoint.
En la ventana Regla, haga clic con el botón derecho en Condicionesy, a continuación, haga clic en Agregar AND lógico.
En la ventana Regla, haga clic con el botón derecho en AND, seleccione Predicados y, a continuación, haga clic en NotEqual.
En el Explorador de hechos, haga clic en la pestaña Esquemas XML, expanda NAOrderDoc.xsd y, a continuación, expanda OrderDoc.
En el Explorador de hechos, arrastre el elemento customerName al nodo argument1 en Condiciones.
Haga clic en el nodo argument2 y escriba GlobalBankWest.
En la ventana Regla, haga clic con el botón derecho en AND, seleccione Predicados y, a continuación, haga clic en NotEqual.
En el Explorador de hechos, arrastre el elemento customerName al nodo argument1 en Condiciones.
Haga clic en el nodo argument2 y escriba GlobalBankEast.
En el Explorador de hechos, haga clic en la pestaña Vocabularios y expanda ESB. EndPointInfo y, a continuación, expanda la versión 1.0.
En el Explorador de hechos, arrastre la definición Set End Point Outbound Transport Location (Establecer ubicación de transporte saliente de punto de conexión) a Actions (Acciones).
Haga clic en <cadena> vacía y escriba C:\HowTos\Out\CustomerUnknown%MessageID%.xml.
En el Explorador de hechos, arrastre la definición Establecer tipo de transporte saliente de punto de conexión a Acciones.
En el Explorador de hechos, expanda ESB. TransportTypes, expanda Versión 1.0 y, a continuación, arrastre la definición proveedores de adaptador a <una cadena> vacía.
En el panel Acciones, expanda la lista desplegable Proveedores de adaptadores y, a continuación, haga clic en ARCHIVO.
Para publicar e implementar la directiva
En el Explorador de directivas, en la directiva RouteBasedOnCustomerKnownType , haga clic con el botón derecho en Versión 1.0 (no guardada) y, a continuación, haga clic en Publicar.
En el Explorador de directivas, en la directiva RouteBasedOnCustomerKnownType , haga clic con el botón derecho en Versión 1.0 - Publicada y, a continuación, haga clic en Implementar.
Para crear un modelo DSL de itinerarios de ESB
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 cuadro Nombre , escriba CbrKnownType y, a continuación, haga clic en Agregar.
Para configurar las propiedades del itinerario
En Visual Studio, haga clic en la superficie de diseño de CbrKnownType.itinerary. En el ventana Propiedades CbrKnownType, configure las siguientes propiedades:
En la lista desplegable Exportador de modelos, haga clic en Exportador de itinerarios XML.
En la sección Configuración de extensor , junto a la propiedad Archivo XML de itinerario , haga clic en el botón de puntos suspensivos (...).
En el cuadro de diálogo Seleccionar archivo XML , escriba C:\HowTos\Itinerarios\CbrKnownType en el cuadro Nombre de archivo y, a continuación, haga clic en Guardar.
Nota
Este paso le permite exportar el itinerario como XML a una ubicación de archivo local. Al exportar un itinerario a una ubicación de archivo local, en lugar de a la base de datos de itinerarios, permite realizar pruebas del itinerario mediante la aplicación cliente de prueba de ESB. Completará este proceso más adelante en este tema de procedimientos.
Para definir la estructura del itinerario
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 On-Ramp ESB Extender.
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 SendRegionalOrders.
En la lista desplegable Extender , haga clic en Off-Ramp ESB Extender.
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 de modelo SendRegionalOrders . En el ventana Propiedades ItineraryService1, configure las siguientes propiedades:
Haga clic en la propiedad Name y escriba SendPortFilter.
En la lista desplegable Extender del servicio de itinerarios , haga clic en Extender fuera de rampa.
En la lista desplegable Off-Ramp ,expanda SendRegionalOrdersy, 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 SendPortFilter 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 RouteRegionalOrders.
En la lista desplegable Nombre de transporte , haga clic en BRE.
En la lista desplegable Implementación del solucionador , haga clic en Extensión de resolución bre.
En la lista desplegable Directiva , haga clic en RouteBasedOnCustomerKnownType.
En la lista desplegable Reconocer formato de mensaje , haga clic en True.
En la lista desplegable UseMsg , haga clic en True.
Nota
Si usa la extensión de resolución BRE de la orquestación, la propiedad recognizeMessageFormat debe establecerse en False.
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento del modelo ReceiveNAOrder al elemento de modelo SendPortFilter .
En el cuadro de herramientas, haga clic en Conector. Arrastre una conexión desde el elemento de modelo SendPortFilter al elemento de modelo SendRegionalOrders .
Para exportar el modelo para su uso con el cliente de prueba de itinerarios
En Visual Studio, haga clic con el botón derecho en la superficie de diseño del itinerario cbrKnownType y, a continuación, haga clic en Exportar modelo.
Nota
La versión XML del itinerario se abre en Visual Studio.
Guarde todos los artefactos del proyecto.
En el Explorador de Windows, vaya a C:\HowTos\Itinerarios y observe la creación del XML del itinerario (CbrKnownType.xml).
Para probar el itinerario y las reglas de negocios
Abra la aplicación de ejemplo Cliente de prueba de itinerarios mediante el acceso directo creado durante los requisitos previos para las actividades de desarrollo (C:\HowTos\ESB.Itinerary.Test.exe - Acceso directo).
En el cliente de prueba de itinerarios, desactive la casilla Usar servicio WCF y, a continuación, haga clic en Cargar itinerario.
En el cuadro de diálogo Abrir archivo de itinerario , vaya a C:\HowTos\Itinerarios. Seleccione CbrKnownType.xmly haga clic en Abrir para cargar el itinerario.
Haga clic en Aceptar para borrar el mensaje Itinerario cargado correctamente .
En el cliente de prueba de itinerarios, haga clic en el botón de puntos suspensivos (...) situado junto al cuadro Cargar mensaje .
En el cuadro de diálogo Seleccionar documento XML para cargar , vaya a C:\HowTos. Seleccione West.xmly haga clic en Abrir para cargar el mensaje de prueba.
Haga clic en el botón Enviar solicitud . Cuando finalice la prueba, haga clic en Aceptar para descartar la confirmación que aparece.
En el Explorador de Windows, vaya a C:\HowTos\Out. Compruebe que el mensaje West%MessageID%.xml se ha escrito en el directorio.
Repita el proceso de prueba con el mensaje East.xml.
En el Explorador de Windows, vaya a C:\HowTos\Out. Compruebe que el mensaje East%MessageID%.xml se ha escrito en el directorio.
Repita el proceso de prueba con el mensaje NAOrderDoc.xml.
En el Explorador de Windows, vaya a C:\HowTos\Out. Compruebe que el mensaje CustomerUnknown%MessageID%.xml se ha escrito en el directorio.
Recursos adicionales
Para obtener más información, vea los siguientes temas relacionados: