CallOrchestration (ejemplo de BizTalk Server)
El ejemplo de CallOrchestration muestra cómo llamar a una orquestación de BizTalk desde otra orquestación.
Descripción del ejemplo
Este ejemplo muestra una orquestación que llama a otra orquestación mediante los pasos que se indican a continuación:
La orquestación principal recibe un mensaje de pedido.
La orquestación principal llama a la secundaria para determinar el precio de envío del pedido.
La orquestación secundaria calcula el precio de envío solicitado y lo devuelve a la orquestación primaria.
La orquestación principal actualiza el mensaje de pedido con el precio de envío.
La orquestación principal guarda el mensaje de pedido actualizado en una carpeta para que lo inspeccione.
Cómo se ha diseñado este ejemplo y por qué
El objetivo principal de este ejemplo consiste en mostrar cómo llamar a una orquestación desde otra orquestación. La posibilidad de llamar a orquestaciones permite dividir los procesos empresariales en componentes reutilizables. Puede descomponer sus procesos comunes en orquestaciones independientes para que otras personas puedan reutilizarlos.
En este ejemplo, la forma Orquestación de llamadas de receivePO.odx invoca findShippingPrice.odx y espera a que la orquestación anidada, findShippingPrice.odx, calcule y devuelva el precio de envío antes de enviar el pedido de compra. La orquestación findShippingPrice.odx utiliza la siguiente lógica para calcular el precio de envío:
If ( weight * shippingRate ) < minShippingPrice Then
shippingPrice = minShippingPrice
Else
shippingPrice = weight * shippingRate
End If
El archivo de pedido de entrada de ejemplo, InputPO.xml, especifica un peso de 20, lo que da como resultado que el mensaje de pedido de salida haya cambiado el precio de envío de 10 a 20.
Nota
No puede llamar a una transacción de larga ejecución desde una orquestación atómica.
Nota
La diferencia entre usar la forma Orquestación de llamadas y la forma Iniciar orquestación es que al llamar a una orquestación, el autor de la llamada espera a que la orquestación anidada vuelva antes de continuar. Al iniciar una orquestación desde una orquestación, una vez que el autor de la llamada inicia la acción, pasa al siguiente paso del flujo de procesos. La orquestación invocada por el autor de la llamada se ejecuta de forma independiente hasta que finaliza el flujo de procesos. Para obtener más información, vea Cómo configurar la forma de orquestación de llamadas. Consulte también How to Configure the Start Orchestration Shape.
Ubicación del ejemplo
<Ruta de acceso de> ejemplos\Orchestrations\CallOrchestration\
En la tabla siguiente se enumeran los archivos del ejemplo y se describe su propósito.
Archivos | Descripción |
---|---|
CallOrchestration.btproj, CallOrchestration.sln | Archivos de proyectos y de soluciones de este ejemplo. |
CallOrchestrationBinding.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. |
findShippingPrice.odx | La orquestación de BizTalk que sirve como orquestación secundaria llamada desde la orquestación principal, receivePO.odx. |
InputPO.xml | El mensaje de pedido de entrada de ejemplo que se ajusta al esquema definido en el archivo PO.xsd. |
PO.xsd | El esquema que define la estructura de mensajes de pedidos entrantes, como el archivo de entrada de ejemplo InputPO.xml, y define la promoción de propiedades de los tres elementos del esquema. |
PropertySchema.xsd | El archivo de esquema de propiedad que participa en la promoción de propiedades de los tres elementos del esquema PO.xsd. |
receivePO.odx | La orquestación de BizTalk que sirve como orquestación principal en este ejemplo. Recupera los mensajes de pedido de la carpeta de recepción y llama a la otra orquestación, findShippingPrice.odx, para calcular y actualizar el precio de envío. |
Setup.bat | Se utiliza para crear e iniciar este ejemplo. |
Crear e inicializar este ejemplo
Para crear e iniciar el ejemplo de CallOrchestration
En una ventana de comandos, desplácese a la siguiente carpeta:
<Ruta de acceso de> ejemplos\Orchestrations\CallOrchestration\
Ejecute el archivo Setup.bat que realiza las acciones siguientes:
Crea las carpetas de entrada (In) y salida (Out) de este ejemplo en la carpeta CallOrchestration.
Compila e implementa el proyecto de Visual Studio, que contiene ambas orquestaciones, para este ejemplo.
Crea y enlaza la ubicación de recepción de BizTalk Server y los puertos de envío y recepción.
Habilita la ubicación de recepción e inicia el puerto de envío.
Nota
Debe confirmar que BizTalk Server no ha notificado ningún error durante el proceso de generación e inicialización antes de intentar ejecutar este ejemplo.
Ejecución del ejemplo
Para ejecutar el ejemplo de CallOrchestration
Guarde una copia del archivo InputPO.xml en la carpeta In.
Observe el archivo de pedido XML actualizado creado en la carpeta Out. Contiene el mensaje de pedido original, modificado para incluir el costo de envío calculado del modo explicado anteriormente. El formato del nombre de este archivo es <MessageID>.xml, donde <MessageID> es el GUID generado para identificar de forma única el mensaje.
Desinstalar este ejemplo
Para desinstalar el ejemplo CallOrchestration
En una ventana de comandos de Visual Studio, vaya a la carpeta siguiente:
<Ruta de acceso de> ejemplos\Orchestrations\CallOrchestration\
Ejecute Cleanup.bat.