Cuando una tarea antecesora y una tarea descendiente se ejecutan con frecuencias distintas (por ejemplo, una tarea diaria que depende de una tarea horaria), DataWorks debe determinar exactamente de qué instancia antecesora depende cada instancia descendiente. Este documento explica dicha regla de resolución (proximidad del tiempo de programación) y muestra cómo cambia el comportamiento al habilitar la autodependencia para cada combinación de frecuencias.
Para consultar la configuración de dependencias dentro del mismo ciclo, consulte Configure same-cycle scheduling dependencies. Para la configuración de dependencias entre ciclos, consulte Configure cross-cycle scheduling dependencies.
Cómo resuelve DataWorks las dependencias a nivel de instancia
DataWorks admite seis frecuencias de programación: minute, hour, day, week, month y year. Cada ciclo de programación genera una instancia. Una dependencia entre dos tareas es, en efecto, una dependencia entre instancias específicas: la instancia descendiente espera a que la instancia antecesora alcance el estado Successful antes de ejecutarse.
Dos comportamientos rigen todas las combinaciones de frecuencias:
|
Comportamiento |
Descripción |
|
Proximidad del tiempo de programación |
Cuando las tareas antecesoras y descendientes tienen frecuencias diferentes, cada instancia descendiente depende de la instancia antecesora cuyo tiempo de programación sea el más cercano, sin ser posterior al tiempo de programación de la propia instancia descendiente, y que no esté sirviendo ya como antecesora de otra instancia descendiente. |
|
Impacto en el tiempo de ejecución real |
Una instancia descendiente no inicia a su hora programada si su instancia antecesora aún no ha alcanzado el estado Successful. |
Casos límite aplicables a todas las combinaciones:
Si una instancia descendiente está programada antes que su antecesora en el mismo día, esperará hasta que la antecesora finalice.
Si ninguna instancia antecesora tiene un tiempo de programación anterior al de la primera instancia descendiente del día actual, dicha primera instancia descendiente dependerá de la primera instancia antecesora del día actual.
Cuándo aplica la proximidad y cuándo no
|
Escenario |
¿Basado en proximidad? |
Notas |
|
La antecesora y la descendiente tienen la misma frecuencia y el mismo número de ciclos diarios |
No |
Mapeo uno a uno de instancias; el tiempo de programación es irrelevante. |
|
La antecesora y la descendiente tienen frecuencias diferentes |
Sí |
Aplica la regla del tiempo más cercano sin ser posterior. |
Impacto en el tiempo de ejecución real: ejemplo
La Tarea A está programada por día a las 07:00. La Tarea B está programada por hora a las 00:00, 08:00 y 16:00. La Tarea B depende de la Tarea A.
A las
00:00: La primera instancia de la Tarea B está programada pero no se ejecuta, ya que la Tarea A aún no ha iniciado.A las
07:00: La Tarea A finaliza. En ese momento, la primera instancia de la Tarea B comienza a ejecutarse.A las
08:00y16:00: Las instancias restantes de la Tarea B se ejecutan a sus horas programadas porque la Tarea A ya se encuentra en estado Successful.

Comportamiento predeterminado frente al comportamiento con autodependencia
Las siguientes secciones abordan cada combinación de frecuencias. Para cada combinación, primero se describe el comportamiento predeterminado (sin autodependencia) y luego el cambio que ocurre cuando se habilita la autodependencia.
La autodependencia significa que una tarea depende de su propia instancia del ciclo anterior. Cuando se habilita la autodependencia en una tarea horaria o por minuto, la primera instancia de cada día puede depender de la última instancia del día anterior. Si esa instancia del día anterior no ha finalizado, la tarea no podrá ejecutarse en el día actual. Para conocer los pasos de configuración, consulte Dependency on the instance generated for the current node in the previous cycle .
Dependencias para tareas programadas por día
Día depende de otra tarea diaria
|
Configuración |
Comportamiento |
|
Sin autodependencia |
La instancia diaria descendiente depende de la instancia diaria antecesora en el mismo ciclo de programación (uno a uno). |
|
Autodependencia habilitada en la tarea diaria antecesora |
Existe una dependencia cruzada: la instancia diaria descendiente depende de una instancia diaria antecesora que, a su vez, depende de su propia instancia del ciclo anterior. |
Día depende de una tarea horaria (día actual)
|
Configuración |
Comportamiento |
|
Sin autodependencia en la tarea horaria |
La instancia diaria depende de todas las instancias horarias del día actual. Por ejemplo, si la tarea horaria se ejecuta a las |
|
Autodependencia habilitada en la tarea horaria |
La instancia diaria depende únicamente de la instancia horaria más cercana cuyo tiempo de programación no sea posterior al tiempo de programación de la tarea diaria. Por ejemplo, si la tarea diaria se ejecuta a las |
Para hacer que la tarea diaria dependa de una instancia horaria específica en lugar de todas las instancias, habilite la autodependencia en la tarea horaria.
Día depende de una tarea horaria o por minuto (día anterior)
|
Configuración |
Comportamiento |
|
Sin autodependencia en la tarea horaria/por minuto |
La instancia del día actual depende de todas las instancias de la tarea horaria o por minuto del día anterior. |
|
Autodependencia habilitada en la tarea horaria/por minuto |
La instancia del día actual depende únicamente de la última instancia de la tarea horaria o por minuto del día anterior. |
El siguiente diagrama ilustra cómo una tarea diaria depende de una tarea horaria del día anterior.
Dependencias para tareas programadas por hora
Hora depende de otra tarea horaria
|
Comparación de cantidad de ciclos |
Comportamiento |
|
Mismo número de instancias diarias |
Mapeo uno a uno: la primera instancia horaria descendiente depende de la primera instancia horaria antecesora, la segunda de la segunda, y así sucesivamente. |
|
Diferente número de instancias diarias |
Aplica la regla de proximidad: cada instancia horaria descendiente depende de la instancia horaria antecesora cuyo tiempo de programación sea el más cercano, sin ser posterior al suyo. Si la antecesora genera menos instancias, varias instancias descendientes podrían depender de la misma instancia antecesora. |
Hora depende de una tarea diaria
|
Configuración |
Comportamiento |
|
Sin autodependencia en la tarea horaria |
Todas las instancias horarias del día actual dependen de la única instancia diaria. Una vez que finaliza la tarea diaria, todas las instancias horarias pendientes se ejecutan concurrentemente. |
|
Autodependencia habilitada en la tarea horaria |
Solo la primera instancia horaria depende de la tarea diaria. Cada instancia horaria subsiguiente depende de la instancia horaria previa (autodependencia del ciclo anterior). Las instancias se ejecutan secuencialmente (una tras otra) en lugar de concurrentemente. |
Hora depende de una tarea por minuto
|
Configuración |
Comportamiento |
|
Sin autodependencia en la tarea por minuto |
La instancia horaria depende de todas las instancias por minuto dentro de la misma hora. Por ejemplo, si la tarea por minuto se ejecuta cada 15 minutos, la instancia horaria de las |
|
Autodependencia habilitada tanto en la tarea horaria como en la tarea por minuto |
La instancia horaria depende de la instancia por minuto más cercana cuyo tiempo de programación no sea posterior al suyo. Por ejemplo, la instancia horaria de las |
Dependencias para tareas programadas por minuto
Minuto depende de una tarea horaria
|
Configuración |
Comportamiento |
|
Sin autodependencia en la tarea por minuto |
Cada instancia por minuto depende de la instancia horaria más cercana cuyo tiempo de programación no sea posterior al suyo. Varias instancias por minuto dentro de la misma hora dependen de la misma instancia horaria. Por ejemplo, las instancias por minuto de las |
|
Autodependencia habilitada tanto en la tarea por minuto como en la tarea horaria |
Cada instancia por minuto depende de su propia instancia del ciclo anterior y de la instancia horaria más cercana (no posterior). La cadena de autodependencia garantiza que las instancias se ejecuten secuencialmente dentro de un ciclo. |
Minuto depende de una tarea diaria
|
Configuración |
Comportamiento |
|
Sin autodependencia en la tarea por minuto |
Todas las instancias por minuto del día actual dependen de la única instancia diaria. Una vez que finaliza la tarea diaria, todas las instancias por minuto pendientes cuyo tiempo de programación ya haya llegado se ejecutan concurrentemente. |
|
Autodependencia habilitada en la tarea por minuto |
Solo la primera instancia por minuto depende de la tarea diaria. Cada instancia por minuto subsiguiente depende de la instancia por minuto anterior. Todas las instancias se ejecutan secuencialmente. |
Dependencias de tareas programadas por semana, mes o año
Cuando una tarea diaria, horaria o por minuto depende de una tarea programada por semana, mes o año, DataWorks genera instancias de ejecución simulada para la tarea de menor frecuencia en los días en que no está programada para ejecutarse. Las instancias de ejecución simulada no ejecutan ningún código, no generan datos, no consumen recursos y no bloquean a las tareas descendientes.
Cuando llega el tiempo programado de una instancia de ejecución simulada, su estado se establece inmediatamente en Successful, lo que permite que las instancias descendientes continúen con normalidad.
Ejemplo: Una tarea semanal está programada para cada lunes y viernes. Una tarea diaria depende de ella.
Lunes y viernes: se ejecutan instancias reales y generan datos.
Martes, miércoles, jueves, sábado y domingo: se generan instancias de ejecución simulada y se marcan inmediatamente como Successful.
La tarea diaria se ejecuta todos los días y depende de la instancia correspondiente de la tarea semanal (real o de ejecución simulada), sin ningún bloqueo en los días no programados.
