GOOGLE ADS

martes, 3 de mayo de 2022

¿Debo usar una máquina de estado o un flujo de trabajo de secuencia en WF?

Tengo un proceso comercial repetible que ejecuto todas las semanas como parte de mis responsabilidades de gestión de la configuración. El proceso no cambia: descargo los detalles del cambio en Excel, abro la hoja de cálculo y copio los detalles en función de una macro, creo un documento de Word a partir de una plantilla de agenda, actualizo la agenda con los datos de Excel, creo archivos PDF a partir del documento de Word y enviarlos por correo electrónico.

Este proceso se representa muy fácilmente en un flujo de trabajo de secuencia y así es como lo tengo hasta ahora, con automatización COM para manejar las piezas de Excel y Word automáticamente. La llave en los engranajes es que hay un paso humano entre "crear agenda" y "enviarla", donde reviso los detalles del cambio y formulo preguntas sobre ellos, que se agregan a la agenda. Actualmente tengo una actividad Suspender para suspender el flujo de trabajo mientras realizo manualmente esta parte del proceso.

Mi pregunta es, ¿debería reescribir mi flujo de trabajo para convertirlo en una máquina de estado para seguir una mejor práctica para la interacción humana en un proceso comercial, o la actividad Suspender es una solución razonable?


Solución del problema

No, no creo que tengas que usar una máquina de estado para este flujo de trabajo. Pero propongo cambiar la actividad Suspender porque:

La actividad SuspendActivity detiene temporalmente la ejecución del flujo de trabajo actual. Normalmente, utiliza la actividad SuspendActivity para reflejar una condición de error que requiere la atención de un administrador.


Cuando se suspende una instancia de flujo de trabajo, se registra un error. Puede especificar una cadena de mensaje para acompañar el error para ayudar al administrador a diagnosticar el problema con la propiedad SuspendActivity Error. Una instancia de flujo de trabajo suspendida aún puede recibir mensajes que están en cola hasta que se reinicia el flujo de trabajo. Toda la información de estado de la instancia de flujo de trabajo se guarda y se restablece cuando se reanuda la instancia (usando Reanudar).


Fuente: MSDN

La forma típica de agregar una tarea humana en un flujo de trabajo (ya sea una secuencia o una máquina de estado) es definir una interfaz de intercambio de datos externos y usar una actividad HandleExternalEvent (y posiblemente una actividad CallExternalMethod). Para obtener más detalles, consulte los siguientes artículos:


  • Creación de máquinas de estado con Windows Workflow Foundation

  • Flujo de trabajo humano simple con Windows Workflow Foundation

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...