PartyResolution (ejemplo de BizTalk Server)
En el ejemplo de PartyResolution se muestra cómo utilizar orquestaciones de BizTalk con resolución de entidades para enrutar mensajes a uno de los dos destinatarios posibles.
Descripción del ejemplo
En este ejemplo se ejecutan varias orquestaciones que muestran los distintos roles siguientes:
Orquestación del comprador, que se utiliza para iniciar el procesamiento de mensajes de pedidos.
Orquestación del proveedor, que muestra tanto la resolución de entidades entrantes como salientes.
Orquestaciones ShipmentAgency1 y ShipmentAgency2, que responden a la orquestación del proveedor basada en el destino de envío del pedido.
Cómo se ha diseñado este ejemplo y por qué
La resolución de entidades se refiere al proceso de determinar quién envía un mensaje (es decir, qué entidad). Por ejemplo, es posible que desee habilitar a enviar mensajes solo a las entidades conocidas. La resolución de entidades salientes es el proceso por el que se determina a qué entidades se les debería enviar un mensaje.
Además de la resolución de entidades, en este ejemplo se muestra cómo implementar y usar roles. Por ejemplo, para procesar el envío de su producto, se crea un puerto de envío al que se envía un documento para indicar al remitente que envíe su producto. Si tiene que elegir entre varios remitentes, puede crear un rol de remitente en su orquestación en vez de crear varios puertos de envío cuya única diferencia sea la dirección URL del remitente. Puede enviar mensajes relacionados con el envío del producto al rol de remitente. Cree entidades y asocie un puerto de envío a cada entidad y certificado de entidades. Por último, dé de alta cada entidad al rol de remitente para habilitarla. En la orquestación, puede especificar dinámicamente a qué remitente está enviando el mensaje.
Este ejemplo también muestra cómo utilizar correlaciones para que el mensaje entrante coincida con la instancia de orquestación derecha.
A continuación se muestran los flujos de procesos empresariales para el comprador, el proveedor y las agencias de envío:
Flujo de procesos empresariales del comprador:
Recibir mensajes de pedido de departamentos internos como archivo .xml.
Enviar mensajes de pedido al proveedor.
Flujo de procesos empresariales del proveedor:
Resuelve la entidad (resolución de entidad entrante) para actualizar la entidad de origen basada en el certificado de firma.
Recibir un mensaje de activación (pedido) del comprador.
Enviar un mensaje de confirmación de pedido al comprador.
Comprobar el país de entrega.
Resolver la entidad saliente para encontrar la agencia de envío que se va a utilizar. Si EE.UU. es el país, la agencia de envío es ShipmentAgency2. Si Canadá es el país, la agencia de envío es ShipmentAgency1.
Enviar un mensaje de solicitud de envío de pedido a la agencia de envío correspondiente.
Recibir el mensaje de confirmación de envío de pedido de la agencia de envío correspondiente.
Enviar un mensaje de consejo de envío a la agencia de envío correspondiente.
Recibir un mensaje de confirmación de consejo de envío de la agencia de envío correspondiente.
Enviar un mensaje final de notificación de entrega de pedido al comprador.
Flujo de procesos empresariales de la agencia de envío (igual para las dos agencias de envío):
Recibir el mensaje de solicitud de envío de pedido del proveedor.
Generar y enviar un mensaje de confirmación para el mensaje de solicitud de envío de pedido.
Recibir un mensaje de consejo de envío del proveedor.
Generar y enviar un mensaje de confirmación para el mensaje de consejo de envío.
Las instrucciones siguientes explican cómo se diseña este ejemplo:
La orquestación BuyerProcess.odx recibe un mensaje y utiliza la canalización personalizada MimePartyResSendPipeline para codificar el mensaje y enviarlo al proveedor. Esta operación se realiza mediante el Diseñador de canalizaciones para generar e implementar una canalización de envío personalizada. Antes de enviar el mensaje al proveedor, el mensaje se firma digitalmente con la clave privada del comprador que se especifica en la consola de administración de BizTalk Server en Propiedades del grupo de BizTalk.
La orquestación SupplierProcess.odx utiliza la canalización personalizada MimePartyResReceivePipeline, que incluye un componente descodificador de MIME/SMIME para descodificar el mensaje y realizar resolución de entidades entrantes mediante la clave pública del comprador para resolver y validar la identidad del comprador. Esta operación se realiza al generar e implementar una canalización de recepción personalizada.
La orquestación del proveedor inicia el POCorrelationSets, que está definido para que se base en una propiedad promocionada PONo. La propiedad PONo se utiliza para que coincidan los mensajes entrantes y salientes de esta instancia de orquestación en la fase posterior, ya que existen varias acciones de envío y recepción a través de toda la orquestación.
La orquestación del proveedor implementa vínculos de rol para que se ocupen de la resolución de entidades entrantes y salientes. La orquestación del proveedor usa dos tipos de vínculo de rol:
Tipo de vínculo de rol Buyer_Supplier
Tipo de vínculo de rol Supplier_Shipment
En la forma Buyer_Supplier Vínculo de rol, el proveedor está en el rol Proveedor y el comprador está en el rol Consumidor porque el proveedor recibe el primer mensaje del comprador. Cuando la orquestación del proveedor envía la confirmación al rol de comprador, hay un puerto de envío asociado al comprador, y se envía el mensaje al comprador a través del puerto de envío especificado. Para buscar el puerto de envío, haga clic con el botón derecho en BuyerAgency en la consola de administración de BizTalk Server y, a continuación, haga clic en Propiedades. El puerto de envío se muestra en Puertos de envío.
Después, la orquestación utiliza la expresión siguiente para devolver la información de socios comerciales y escribe un archivo XML en una carpeta mediante una llamada a un ensamblado externo denominado CheckPartyName.
Buyer_Supplier(Microsoft.XLANGs.BaseTypes.SourceParty)
En la forma Supplier_Shipment Vínculo de rol, el rol Envío contiene un puerto de envío con dos operaciones que se usan para enviar el mensaje del proveedor a la agencia de envío adecuada en función de la parte de destino. El rol de proveedor contiene un puerto de recepción con dos operaciones que se usan para recibir la respuesta de la agencia de envío. La correlación se utiliza al enviar y recibir estos mensajes y se basa en el PONo.
Nota
Al enlazar la orquestación del proveedor, se encontrará con que solo es necesario que se enlace un puerto de envío y dos puertos de recepción. Esto se debe a que los puertos de envío de las entidades de destino ya están enlazados con las entidades. Además, uno de los puertos de recepción de la orquestación contiene dos operaciones de recepción, por lo que incluso si ve tres formas de recepción, solo dos de ellas deben enlazarse.
La orquestación del proveedor utiliza la primera línea en el código siguiente para obtener la agencia de envío llamando a un ensamblado externo denominado QueryShipmentCatalogComponent. A continuación, usa la segunda línea para establecer la entidad de destino del rol de envío.
strShipmentName= objQueryShipmentCatalog.GetShipmentDetails(POMessage.MessagePart_1.POHeader.Address.Country); Supplier_Shipment(Microsoft.XLANGs.BaseTypes.DestinationParty) = new Microsoft.XLANGs.BaseTypes.Party(strShipmentName,"OrganizationName");
Shipper1Process.odx y Shipper2Process.odx se generan para recibir el pedido de envío y el consejo de envío de SupplierProcess.odx y enviar la respuesta de nuevo a SupplierProcess.odx. En las dos orquestaciones de remitente, se utiliza la correlación y el tipo de correlación se basa en la propiedad promocionada PONo.
Ubicación del ejemplo
<Ruta de acceso> de ejemplos\Orquestaciones\PartyResolution\
En la tabla siguiente se enumeran los archivos del ejemplo y se describe su propósito.
Archivos | Descripción |
---|---|
BuyerBinding.xml ShippingAgency1Binding.xml, ShippingAgency2Binding.xml, SupplierBinding.xml, | Se usa para la configuración automatizada, como el enlace de puertos. |
Cleanup.bat | Se utiliza para anular la implementación de ensamblados y quitarlos de la caché de ensamblados global. Quita los puertos de envío y recepción. Quita los directorios virtuales de los Servicios de Microsoft Internet Information (IIS) según sea necesario. |
PartyResolution.sln | Archivo de solución que contiene todos los proyectos en varias subcarpetas. |
PurchaseOrder.xml | Pedido de entrada de ejemplo. |
Setup.bat | Se utiliza para crear e iniciar partes de este ejemplo. |
En la carpeta \Buyer: Buyer.btproj BuyerProcess.odx |
Proyecto y orquestación de BizTalk utilizados para implementar al comprador en este ejemplo. |
En la carpeta \Catalog: Catalog.xml |
Se utiliza para determinar la agencia de envío en función del destino de envío especificado en el pedido. |
En la carpeta \CheckPartyName: AssemblyInfo.cs, CheckPartyName.csproj, Class1.cs |
Archivos de origen y de proyecto de Visual C# de Microsoft para la aplicación CheckPartyName utilizada para obtener acceso a las propiedades de la entidad de origen. |
En la carpeta \FilePolling: App.ico, AssemblyInfo.cs, FilePolling.cs, FilePolling.csproj, FilePolling.resx, FilePolling.sln, |
Solución, proyecto, origen y archivos asociados de Visual C# para la aplicación FilePolling. Utilice esta aplicación para mantenerse informado acerca del estado de procesamiento de este escenario automatizado. |
En la carpeta \Pipeline\projectschema: MimePartyResReceivePipeline.btp, MimePartyResSendPipeline.btp |
Archivos de canalización de BizTalk Server que utilizan las distintas funciones en este ejemplo. |
En la carpeta \QueryShipmentCatalogComponent: AssemblyInfo.cs, QueryShipmentCatalog.cs, QueryShipmentCatalogComponent.csproj |
Archivos de origen y proyecto de Visual C # para el componente QueryShipmentCatalog que se utiliza para obtener acceso al catálogo de envío definido en el archivo Catalog.xml. El componente QueryShipmentCatalog determina qué agencia de envío utilizará el proveedor. Utiliza datos de Catalog.xml para determinar el mejor remitente basado en la geografía. |
En la carpeta \Schemas: PODeliveryReceipt.xsd, POPropertySchema.xsd, PurchaseOrder.xsd, PurchaseOrderAcknowledgement.xsd, Schemas.btproj, ShipmentAdvice.xsd, ShipmentAdviceAcknowledgement.xsd, ShipmentOrderAcknowledgement.xsd, ShipmentOrderRequest.xsd |
Esquemas que varios roles usan en este ejemplo. |
En la carpeta \ShipmentAgency1: ShipmentAdviceAck.btm, ShipmentAgency1.btproj, ShipmentOrderAck.btm, Shipper1Process.odx |
Asignaciones, orquestación y proyecto de BizTalk que se utilizan para implementar ShipmentAgency1 en este ejemplo. |
En la carpeta \ShipmentAgency2: ShipmentAdviceAck.btm, ShipmentAgency2.btproj, ShipmentOrderAck.btm, Shipper2Process.odx |
Asignaciones, orquestación y proyecto de BizTalk que se utilizan para implementar ShipmentAgency2 en este ejemplo. |
En la carpeta \Supplier: PO_POAck.btm, PO_ShipmentOrderRequest.btm, ShipmentAdviceAck_PODeliveryReceipt.btm, ShipmentOrder_ShipmentAdvice.btm, Supplier.btproj, SupplierProcess.odx |
Asignaciones, orquestación y proyecto de BizTalk que se utilizan para implementar al remitente en este ejemplo. |
Crear e inicializar este ejemplo
Nota
Antes de generar e inicializar este ejemplo, se debe asegurar de que el host En curso de BizTalk predeterminado está configurado como Autenticación de confianza. Para obtener más información, consulte BizTalk Server Recomendaciones de seguridad en tiempo de ejecución.
El componente de canalización MIME no es compatible con una instancia de host de 64 bits. El host asociado con el controlador de envío y de recepción para el adaptador de archivo debe configurarse como un host de solo 32 bits. Para obtener más información sobre esto, vea Cómo modificar las propiedades del host. Si ya tiene un host de solo 32 bits configurado en el sistema y desea usarlo, consulte Configuración del adaptador de archivos para obtener instrucciones sobre cómo configurar los hosts asociados al controlador de envío y recepción del adaptador de archivos.
El certificado que se menciona en esta sección debe agregarse al almacén Personal de la cuenta de inicio de sesión configurada para la instancia de host en proceso predeterminada de BizTalk que va a firmar los mensajes.
De forma predeterminada, el archivo setup.bat mencionado a continuación instalará el ejemplo de resolución de entidades en la aplicación de BizTalk Server predeterminada. Puede modificar el archivo setup.bat para implementar el ejemplo en una nueva aplicación de BizTalk Server abriendo el archivo setup.bat y reemplazando la sección precedida de la instrucción @ECHO Deploy Assemblies...
por lo siguiente:
@ECHO Deploy Assemblies...
btstask AddApp -ApplicationName:PartyResolutionSample -Description:"Party Resolution Orchestration sample from the SDK"
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Schemas\bin\Release\Schemas.dll -Options:GacOnAdd
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Pipeline\projectschema\bin\Release\ProjectSchema.dll -Options:GacOnAdd
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Buyer\bin\Release\Buyer.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%BuyerBindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:ShipmentAgency1\bin\Release\ShipmentAgency1.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%ShipmentAgency1BindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:ShipmentAgency2\bin\Release\ShipmentAgency2.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%ShipmentAgency2BindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Supplier\bin\Release\Supplier.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%SupplierBindingFileName%
Para crear e iniciar el ejemplo PartyResolution
En una ventana de comandos, desplácese a la siguiente carpeta:
<Ruta de acceso de> ejemplos\Orchestrations\PartyResolution
Ejecute el archivo Setup.bat que realiza las acciones siguientes:
Compila los proyectos de Visual Studio para este ejemplo e implementa los ensamblados resultantes.
Crea y enlaza los puertos de recepción y envío de BizTalk Server.
Puede recibir las advertencias siguientes o similares durante el proceso de instalación. Los puede pasar por alto sin que afecte a la seguridad.
"C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\PartyResolution.sln" (Buildtarget) (1) -> "C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj" (default target) (5) -> "C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj" (default target) (5:2) -> (CompileODX target) -> C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\SupplierProcess.odx(831,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it [C:\ProgramFiles\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj] C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\SupplierProcess.odx(841,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it [C:\ProgramFiles\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj]
Inicie el símbolo del sistema de Visual Studio.
Escriba los siguientes comandos para instalar los ensamblados en la caché de ensamblados global:
gacutil -i \Archivos de programa (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Schemas\bin\Release\schemas.dll
gacutil -i \Archivos de programa (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Pipeline\projectschema\bin\Release\ProjectSchema.dll
gacutil -i \Archivos de programa (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Buyer\bin\Release\Buyer.dll
gacutil -i \Archivos de programa (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\ShipmentAgency1\bin\Release\ShipmentAgency1.dll
gacutil -i \Archivos de programa (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\ShipmentAgency2\bin\Release\ShipmentAgency2.dll
gacutil -i \Archivos de programa (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Supplier\bin\Release\Supplier.dll
Obtenga un certificado de correo electrónico seguro de una entidad emisora de certificados (CA). La entidad emisora de certificados podría ser una autoridad de terceros o la autoridad dentro de su organización. Después de obtener el certificado, exporte la clave pública y la clave privada.
Para importar la clave privada al almacén Personal de la cuenta de inicio sesión de la instancia de host, así como la clave pública al almacén Otras personas del equipo local, haga lo siguiente:
En BizTalk Server Consola de administración, expanda el grupo de BizTalk y, a continuación, expanda Configuración de la plataforma.
Haga clic en Instancias de host y busque la cuenta de inicio de sesión que se muestra para la instancia de host predeterminada In-Process. En una instalación predeterminada, el host en proceso predeterminado debe denominarse BizTalkServerApplication.
Haga clic en Inicioy, a continuación, haga clic en Ejecutar. En el cuadro Ejecutar , escriba mmc.exey, a continuación, haga clic en Aceptar. Escriba la contraseña correcta de la cuenta de inicio de sesión de la instancia de host para abrir Microsoft Management Console (MMC) en esa cuenta.
En el menú Archivo , haga clic en Agregar o quitar complemento.
En el cuadro de diálogo Agregar o quitar complementos , seleccione Certificados y, a continuación, haga clic en Agregar.
En el cuadro de diálogo Complemento Certificados , seleccione Mi cuenta de usuario y, a continuación, haga clic en Finalizar.
En el cuadro de diálogo Agregar o quitar complementos , seleccione Certificados y, a continuación, haga clic en Agregar.
En el cuadro de diálogo Complemento de certificados, seleccione Cuenta de equipo y haga clic en Siguiente.
En el cuadro de diálogo Seleccionar equipo, seleccione Equipo local y haga clic en Finalizar.
En el cuadro de diálogo Agregar o quitar complementos , haga clic en Aceptar.
Expanda el nodo Certificates - Current User (Certificados: usuario actual ) y, a continuación, expanda Personal. Haga clic con el botón secundario en Certificados, haga clic en Todas las tareas y haga clic en Importar.
Importe la clave privada y proporcione una contraseña en el asistente.
Expanda el nodo Certificados (Equipo local) y expanda Otras personas. Haga clic con el botón secundario en Certificados, haga clic en Todas las tareas y haga clic en Importar.
Importe la clave pública.
En la consola de administración de BizTalk Server, haga clic con el botón derecho en el nodo Grupo de BizTalk y, a continuación, haga clic en Propiedades. En el cuadro de diálogo Propiedades de grupo de BizTalk , seleccione Certificado.
En el cuadro de diálogo Certificado , haga clic en Examinar y seleccione la clave privada que acaba de importar. El certificado que aquí se especifica se usa para firmar el mensaje de salida. Haga clic en OK.
Para actualizar la entidad BuyerAgency en este ejemplo, haga lo siguiente:
En la consola de administración de BizTalk Server, seleccione Partes.
Haga clic con el botón derecho en BuyerAgency y, a continuación, haga clic en Propiedades. En el cuadro de diálogo BuyerAgency - Party Properties (Propiedades de comprador: entidad ), seleccione General.
En la sección Alias del cuadro de diálogo, agregue un nuevo alias con el nombre y el calificador establecido en WindowsUser. Establezca el valor en un nombre de usuario en formato dominio <\nombre> de usuario (por ejemplo, SOMEDOMAIN\someuser).
Seleccione Certificado y, a continuación, haga clic en Examinar y seleccione la clave pública que acaba de importar. Se utiliza el certificado especificado aquí para validar la identidad del remitente del mensaje entrante. Haga clic en OK.
En la consola de administración de BizTalk Server, expanda Configuración de la plataforma y, a continuación, seleccione Hosts.
Haga clic con el botón derecho en BizTalkServerApplication y, a continuación, haga clic en Propiedades. En el cuadro de diálogo BizTalkServerApplication - Propiedades de host , seleccione Certificados.
Haga clic en Examinar y seleccione la clave privada que acaba de importar. El certificado que aquí se especifica se usa para descifrar los mensajes de entrada. Haga clic en OK.
En la consola de administración de BizTalk Server, expanda Configuración de la plataforma y, a continuación, seleccione Instancias de host.
Haga clic con el botón derecho en BizTalkServerApplication y, a continuación, haga clic en Reiniciar.
Ejecución del ejemplo
Para ejecutar el ejemplo de PartyResolution
Ejecute FilePolling.exe desde la carpeta siguiente:
<Ruta de> acceso de ejemplos\Orquestaciones\PartyResolution\FilePolling\bin\Debug
Haga clic en Iniciar sondeo.
Pegue una copia del archivo de instancia de pedido proporcionado PurchaseOrder.xml en la carpeta siguiente:
<Ruta de> acceso de ejemplos\Orchestrations\PartyResolution\FileDrop\PurchaseOrder
Observe la secuencia de mensajes que se proporcionan en forma de cuadros de mensajes, que le mantienen informado acerca del progreso del ejemplo:
Cuando el proveedor recibe el pedido del comprador.
Cuando se recibe una solicitud de envío de pedido de agencia de envío 1 o 2.
Cuando la agencia de envío 1 o 2 recibe un consejo de envío.
Cuando el proveedor envía la confirmación de entrega de pedido al comprador.
Haga clic en Salir para cerrar el programa De sondeo de archivos.
Nota
Puede cambiar la ficha País de PurchaseOrder.xml a "EE. UU." y, a continuación, repetir los pasos 2 y 3. Observe que el pedido de envío se envía ahora a la agencia de envío 2.
Desinstalar este ejemplo
Para desinstalar el ejemplo PartyResolution
En un símbolo del sistema de Visual Studio, cambie el directorio (cd) a <Samples Path>\Orchestrations\ PartyResolution\.
Ejecute Cleanup.bat.
Consulte también
Resolución de entidades [componente de canalización]
Cómo configurar el componente de canalización de codificador de MIME/SMIME
Cómo configurar el componente de canalización de descodificador MIME-SMIME
Orquestaciones (carpetas de ejemplos de BizTalk Server)