Ejecución superpuesta de flujos de trabajo programados

Acerca de la ejecución de flujos de trabajo programados

En Campaign Standard, el motor de flujo de trabajo garantiza que una instancia de flujo de trabajo se ejecute únicamente mediante un proceso. Bloquear actividades como importaciones, consultas de larga duració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 (generalmente actividades que esperan un evento como la actividad Scheduler).

Esto puede provocar un escenario en el que un flujo de trabajo basado en programación pueda comenzar a ejecutarse incluso cuando la ejecución anterior de ese mismo flujo de trabajo aún no haya finalizado, lo que puede 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, lo que significa que se dirigirá 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 programación (schedule2) que pertenece al flujo de trabajo actual.

      NOTA

      Cuando se inicia una actividad Scheduler, inmediatamente agrega otra tarea de programación para que se ejecute en la siguiente hora programada e inicie el flujo de trabajo. Por lo tanto, es importante filtrar tanto la consulta como las tareas de programación al buscar tareas pendientes de una ejecución anterior.

    • La segunda regla determina si cualquier tarea de una ejecución anterior del flujo de trabajo sigue activa (pendiente), que corresponde al estado de ejecución 0.

  4. Agregue una actividad Test para comprobar el número de tareas pendientes que devuelve la actividad Query. Para ello, configure dos transiciones salientes.

    • La primera transición continúa 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 tareas pendientes.

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 ejecuta de nuevo según la programación, puede seguir estos pasos. Esto garantizará que la ejecución del flujo de trabajo se realice únicamente si no hay tareas activas (pendientes) de una ejecución anterior.

En esta página