Ejecución superpuesta de flujos de trabajo programados preventing-overlapping-execution-of-scheduled-workflows

Acerca de la ejecución de flujos de trabajo programados

En Campaign Standard, el motor de flujos de trabajo garantiza que una instancia de flujo de trabajo se ejecute en un solo proceso. El bloqueo de actividades como importaciones, consultas de larga ejecución o escrituras en la base de datos impide la ejecución de cualquier otra tarea al ejecutarse.

Por otro lado, las actividades que no bloquean no bloquean la ejecución de otras tareas (normalmente actividades que esperan un evento como la actividad Scheduler).

Esto puede dar lugar a un escenario en el que un flujo de trabajo basado en programación pueda empezar a ejecutarse incluso cuando la ejecución anterior de ese mismo flujo de trabajo aún no haya finalizado, lo que podría provocar problemas de datos inesperados.

Por lo tanto, al diseñar un flujo de trabajo programado que incluya varias actividades, debe asegurarse de que el flujo de trabajo no se vuelva a programar hasta que finalice. Para ello, debe configurar el flujo de trabajo para evitar su ejecución si una o más tareas de una ejecución anterior siguen pendientes.

Configuración del flujo de trabajo

Para comprobar si una o más tareas de una ejecución de flujo de trabajo anterior siguen pendientes, debe utilizar una actividad Query y una actividad Test.

  1. Agregue una actividad Query después de la actividad Scheduler y configúrela de la siguiente manera.

  2. Cambie el recurso de la actividad a WorkflowTaskDetail, para que se dirija a las tareas actuales del flujo de trabajo.

  3. Configure la consulta con las reglas siguientes:

    • La primera regla filtra la tarea actual (query2) así como la siguiente tarea de planificación (schedule2) que pertenece al flujo de trabajo actual.

      note note
      NOTE
      Cuando se inicia una actividad Scheduler, agrega inmediatamente otra tarea de programación para que se ejecute a la siguiente hora programada e inicie el flujo de trabajo. Por lo tanto, es importante filtrar tanto la consulta como las tareas programadas cuando se buscan tareas pendientes de una ejecución anterior.
    • La segunda regla determina si alguna tarea de una ejecución anterior del flujo de trabajo sigue activa (pendiente), lo que corresponde al estado de ejecución 0.

  4. Agregue una actividad Test para comprobar la cantidad de tareas pendientes devueltas por la actividad Query. Para ello, configure dos transiciones salientes.

    • La primera transición continúa con la ejecución del flujo de trabajo si no hay tareas pendientes,
    • La segunda transición cancela la ejecución del flujo de trabajo si hay alguna tarea pendiente.

Ahora puede configurar el resto del flujo de trabajo según sea necesario. Si la ejecución del flujo de trabajo se cancela debido a tareas pendientes, cuando el flujo de trabajo se ejecute de nuevo según la programación, puede seguir estos pasos. Esto garantiza que la ejecución del flujo de trabajo continúe solo si no hay tareas activas (pendientes) de una ejecución anterior.

recommendation-more-help
3ef63344-7f3d-48f9-85ed-02bf569c4fff