Pregunta

Tengo un repetible proceso de negocio que se me ejecute cada semana como parte de la configuración de mi responsabilidades de gestión.El proceso no cambia:Me descargue el cambio de datos en Excel, abra la hoja de cálculo y la copia de los detalles basados en una macro, crear un documento de Word a partir de una agenda de la plantilla, la actualización de la agenda con los datos de Excel, crear archivos Pdf a partir del documento de Word y correo electrónico de ellos.

Este proceso es muy fácilmente representados en una secuencia de flujo de trabajo y eso es lo que me tiene así de lejos, con la automatización COM para manejar el Excel y Word piezas automáticamente.La llave de los engranajes es que hay un paso humano entre "crear orden del día" y "enviar hacia fuera," en donde puedo revisar los detalles del cambio y de la formulación de preguntas acerca de ellos, que se agregan a la agenda.Actualmente tengo una Suspender la actividad para suspender el flujo de trabajo mientras yo hacerlo manualmente pieza del proceso.

Mi pregunta es, debo escribir mi flujo de trabajo para hacer de él una máquina de estado para seguir una de las mejores prácticas para la interacción humana en un proceso de negocio, o la Suspensión de la actividad de una solución razonable?

¿Fue útil?

Solución

No, no creo que usted tiene que utilizar una máquina de estado para el flujo de trabajo.Pero, propongo a cambio de la Suspensión de la actividad debido a que:

El SuspendActivity actividad detiene temporalmente la ejecución de la flujo de trabajo actual.Normalmente, se utiliza el SuspendActivity actividad reflejar una condición de error que requiere atención por parte de un administrador.

Cuando un flujo de trabajo la instancia es suspendida, un error es registra.Usted puede especificar un mensaje cadena para acompañar el error para ayudar a el administrador de diagnosticar el problema con el SuspendActivity Error de la propiedad.Suspendido el flujo de trabajo ejemplo todavía puede recibir mensajes de que están en la cola hasta que el flujo de trabajo se reinicia.Todo el estado información de la instancia de flujo de trabajo se guarda y se restablecen cuando el instancia se reanuda (utilizando Curriculum vitae).

Fuente: MSDN

La forma típica para agregar una tarea humana en un flujo de trabajo (ya sea de la secuencia o del estado de la máquina) es definir un Intercambio de Datos Externos de la interfaz y el uso de una actividad HandleExternalEvent (y, posiblemente, una actividad CallExternalMethod).Para obtener más detalles, consulte los artículos siguientes:

Otros consejos

Actualización:Panos hace un buen punto acerca de Suspender la Actividad.Estoy de acuerdo en que tiene un propósito diferente en el flujo de trabajo del autómata.

Si usted siente que usted se preocupe más por el flujo de trabajo de transición entre los diferentes estados, a continuación, la máquina de estado del flujo de trabajo es ideal.De lo contrario, la secuencia está bien.

El principal problema que usted debería estar tratando de resolver es que el flujo de trabajo no debe atar un hilo mientras se espera para la interacción humana (hilo de agilidad).Si el flujo de trabajo es ociosa y persistió durante ese tiempo (como el uso de SqlWorkflowPersistenceService), no debería ser un problema.

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