Pregunta

En relación con esta cuestión, .

Me entienden cómo implementar versiones de los flujos de trabajo utilizando WorkflowApplication . Si se mantiene la definición XAML original para versiones anteriores de su flujo de trabajo alrededor, usted puede cargar utilizando el constructor WorkflowApplication derecha.

¿Cómo puedes asegurar que los usos WorkflowServiceHost la definición de flujo de trabajo correcta cuando se quiere alojar sus flujos de trabajo en IIS?

No es un constructor WorkflowServiceHost que se puede utilizar para cargar una definición de flujo de trabajo, pero si aloja en el interior de IIS a través de un archivo de XAMLX, no se llama a sí mismo WorkflowServiceHost, esto se maneja de alguna manera por IIS. Entonces, ¿cómo me aseguro de que la definición de flujo de trabajo correcto se carga para la versión correcta de mi flujo de trabajo?

¿Fue útil?

Solución

El enfoque mediante el WorkflowServiceHost no es todo lo que forma diferente utilizando un WorkflowApplication. Los conceptos básicos de mantenimiento de las diferentes versiones XAML (X) alrededor sigue siendo válida. Así, en el caso de la WorkflowServiceHost necesita crear múltiples WorkflowServiceHost de cada alojamiento una versión diferente de su XAMLX. Cada uno con un punto final diferente. Así que, básicamente, de un cuarto de punto final tanto se dirige a un servicio de flujo de trabajo y su versión.

Entonces, ¿cómo conseguir los mensajes del cliente al WorkflowServiceHost correcta? Aquí el servicio de enrutamiento de WCF es su amigo. En lugar de tener cliente se comunican directamente con su WorkflowServiceHost que utilizan un servicio de enrutamiento WCF intermedia. Esto a su vez controla los mensajes y los envía a la WorkflowServiceHost que aloja el archivo XAMLX apropiado. Entonces, ¿cómo sabe él. Hay varias maneras de hacerlo. Por ejemplo hacer una búsqueda de base de datos utilizando un identificador de correlación de mensajes con solicitudes de nuevos flujos de trabajo siempre va a la última versión. La forma más fácil es hacer que el servicio de flujo de trabajo devuelve un número de versión como parte de la solicitud inicial y hacer de esto una parte necesaria de cada solicitud posterior. De esta manera el servicio de enrutamiento de WCF puede hacer todas sus obras con sólo el envío de datos de mensaje.

Un ejemplo de esto sería:

  1. El cliente envía un mensaje de iniciar un nuevo flujo de trabajo utilizando identificación de la orden 7 y recibe la versión 3 de la espalda. La aplicación cliente utiliza httl URL: //localhost/MyWorkflow.xaml y los delanteros de servicios de enrutamiento para httl:. //Localhost/MyWorkflow.v3.xamlx que es la última versión
  2. Siguiente mensaje que envía al flujo de trabajo contiene tanto idpedido y la versión 3. La aplicación cliente utiliza httl URL: //localhost/MyWorkflow.xaml y los delanteros Servicio de encaminamiento a httl: //localhost/MyWorkflow.v3.xamlx que es la versión indicada.
  3. La aplicación cliente quiere enviar un mensaje a un flujo de trabajo más. Utiliza idpedido 2 y la versión 1 (respondieron cuando se inició este flujo de trabajo). La aplicación cliente utiliza httl URL: //localhost/MyWorkflow.xaml y los delanteros de servicios de enrutamiento para httl:. //Localhost/MyWorkflow.v1.xamlx que es la versión incicated

estos screencasts para obtener más información sobre el servicio de enrutamiento de WCF.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top