Lorsqu'une tâche ancêtre et une tâche descendante s'exécutent à des fréquences différentes — par exemple, une tâche quotidienne dépendant d'une tâche horaire — DataWorks doit déterminer précisément quelle instance ancêtre chaque instance descendante attend. Cette rubrique explique cette règle de résolution (proximité temporelle d'ordonnancement) et montre comment l'activation de l'autodépendance modifie le comportement pour chaque combinaison de fréquences.
Pour configurer les dépendances au sein du même cycle, consultez Configurer les dépendances d'ordonnancement dans le même cycle. Pour configurer les dépendances entre cycles différents, consultez Configurer les dépendances d'ordonnancement entre cycles.
Mécanisme de résolution des dépendances au niveau des instances par DataWorks
DataWorks prend en charge six fréquences d'ordonnancement : minute, heure, jour, semaine, mois et année. Chaque cycle d'ordonnancement génère une instance. Une dépendance entre deux tâches correspond en réalité à une dépendance entre des instances spécifiques : l'instance descendante attend que l'instance ancêtre atteigne l'état Successful avant de s'exécuter.
Deux comportements régissent toutes les combinaisons de fréquences :
| Comportement | Description |
|---|---|
| Proximité temporelle d'ordonnancement | Lorsque les tâches ancêtre et descendante ont des fréquences différentes, chaque instance descendante dépend de l'instance ancêtre dont l'heure d'ordonnancement est la plus proche sans être postérieure à celle de l'instance descendante, et qui ne sert pas déjà d'ancêtre à une autre instance descendante. |
| Impact sur l'heure d'exécution réelle | Une instance descendante ne démarre pas à l'heure prévue si son instance ancêtre n'a pas encore atteint l'état Successful. |
Cas limites applicables à toutes les combinaisons :
Si une instance descendante est planifiée plus tôt que son ancêtre le même jour, elle attend la fin de l'ancêtre.
Si aucune instance ancêtre n'a une heure d'ordonnancement antérieure à la première instance descendante du jour courant, cette première instance descendante dépend de la première instance ancêtre du jour courant.
Application de la règle de proximité
| Scénario | Basé sur la proximité ? | Notes |
|---|---|---|
| L'ancêtre et le descendant ont la même fréquence et le même nombre de cycles quotidiens | Non | Mappage un-à-un des instances ; l'heure d'ordonnancement n'est pas pertinente |
| L'ancêtre et le descendant ont des fréquences différentes | Oui | La règle « la plus proche mais pas postérieure » s'applique |
Impact sur l'heure d'exécution réelle — exemple
La tâche A est planifiée quotidiennement à 07:00. La tâche B est planifiée toutes les heures à 00:00, 08:00 et 16:00. La tâche B dépend de la tâche A.
À
00:00: la première instance de la tâche B est planifiée mais ne s'exécute pas, car la tâche A n'a pas encore démarré.À
07:00: la tâche A se termine. La première instance de la tâche B commence alors son exécution.À
08:00et16:00: les instances restantes de la tâche B s'exécutent aux heures prévues, car la tâche A est déjà dans l'état Successful.

Comportement par défaut et comportement avec autodépendance
Les sections suivantes détaillent chaque combinaison de fréquences. Pour chaque combinaison, le comportement par défaut (sans autodépendance) est décrit en premier, suivi de la modification apportée lorsque l'autodépendance est activée.
L'autodépendance signifie qu'une tâche dépend de sa propre instance du cycle précédent. Lorsque l'autodépendance est activée sur une tâche horaire ou minutée, la première instance de chaque jour peut dépendre de la dernière instance de la veille. Si cette instance de la veille n'est pas terminée, la tâche ne peut pas s'exécuter le jour courant. Pour les étapes de configuration, consultez Dépendance vis-à-vis de l'instance générée pour le nœud actuel dans le cycle précédent .
Dépendances pour les tâches planifiées par jour
Une tâche quotidienne dépend d'une autre tâche quotidienne
| Configuration | Comportement |
|---|---|
| Sans autodépendance | L'instance quotidienne descendante dépend de l'instance quotidienne ancêtre dans le même cycle d'ordonnancement (relation un-à-un). |
| Autodépendance activée sur la tâche quotidienne ancêtre | Une dépendance croisée existe : l'instance quotidienne descendante dépend d'une instance quotidienne ancêtre qui dépend elle-même de sa propre instance du cycle précédent. |
Une tâche quotidienne dépend d'une tâche horaire (jour courant)
| Configuration | Comportement |
|---|---|
| Pas d'autodépendance sur la tâche horaire | L'instance quotidienne dépend de toutes les instances horaires du jour courant. Par exemple, si la tâche horaire s'exécute à 00:00, 01:00, ... 23:00, la tâche quotidienne attend que les 24 instances horaires soient terminées. |
| Autodépendance activée sur la tâche horaire | L'instance quotidienne dépend uniquement de l'instance horaire la plus proche dont l'heure d'ordonnancement n'est pas postérieure à l'heure d'ordonnancement de la tâche quotidienne. Par exemple, si la tâche quotidienne s'exécute à 08:30, elle attend uniquement l'instance horaire de 08:00. |
Pour faire dépendre la tâche quotidienne d'une instance horaire spécifique plutôt que de toutes les instances, activez l'autodépendance sur la tâche horaire.
Une tâche quotidienne dépend d'une tâche horaire ou minutée (jour précédent)
| Configuration | Comportement |
|---|---|
| Pas d'autodépendance sur la tâche horaire/minutée | L'instance du jour courant dépend de toutes les instances de la tâche horaire ou minutée du jour précédent. |
| Autodépendance activée sur la tâche horaire/minutée | L'instance du jour courant dépend uniquement de la dernière instance de la tâche horaire ou minutée du jour précédent. |
Le diagramme suivant illustre comment une tâche quotidienne dépend d'une tâche horaire du jour précédent.
Dépendances pour les tâches planifiées à l'heure
Une tâche horaire dépend d'une autre tâche horaire
| Comparaison du nombre de cycles | Comportement |
|---|---|
| Même nombre d'instances quotidiennes | Mappage un-à-un : la première instance horaire descendante dépend de la première instance horaire ancêtre, la seconde de la seconde, et ainsi de suite. |
| Nombre différent d'instances quotidiennes | La règle de proximité s'applique : chaque instance horaire descendante dépend de l'instance horaire ancêtre dont l'heure d'ordonnancement est la plus proche sans être postérieure à la sienne. Si l'ancêtre génère moins d'instances, plusieurs instances descendantes peuvent dépendre de la même instance ancêtre. |
Une tâche horaire dépend d'une tâche quotidienne
| Configuration | Comportement |
|---|---|
| Pas d'autodépendance sur la tâche horaire | Toutes les instances horaires du jour courant dépendent de l'unique instance quotidienne. Une fois la tâche quotidienne terminée, toutes les instances horaires en attente s'exécutent concurrentiellement. |
| Autodépendance activée sur la tâche horaire | Seule la première instance horaire dépend de la tâche quotidienne. Chaque instance horaire suivante dépend de l'instance horaire précédente (autodépendance du cycle précédent). Les instances s'exécutent séquentiellement — l'une après l'autre — plutôt que concurrentiellement. |
Une tâche horaire dépend d'une tâche minutée
| Configuration | Comportement |
|---|---|
| Pas d'autodépendance sur la tâche minutée | L'instance horaire dépend de toutes les instances minutées au sein de la même heure. Par exemple, si la tâche minutée s'exécute toutes les 15 minutes, l'instance horaire de 09:00 attend que les instances minutées de 08:00, 08:15, 08:30 et 08:45 soient terminées. |
| Autodépendance activée sur les tâches horaire et minutée | L'instance horaire dépend de l'instance minutée la plus proche dont l'heure d'ordonnancement n'est pas postérieure à la sienne. Par exemple, l'instance horaire de 09:00 dépend uniquement de l'instance minutée de 08:45. |
Dépendances pour les tâches planifiées à la minute
Une tâche minutée dépend d'une tâche horaire
| Configuration | Comportement |
|---|---|
| Pas d'autodépendance sur la tâche minutée | Chaque instance minutée dépend de l'instance horaire la plus proche dont l'heure d'ordonnancement n'est pas postérieure à la sienne. Plusieurs instances minutées au sein de la même heure dépendent toutes de la même instance horaire. Par exemple, les instances minutées à 09:05, 09:10 et 09:15 attendent toutes l'instance horaire de 09:00. |
| Autodépendance activée sur les tâches minutée et horaire | Chaque instance minutée dépend de sa propre instance du cycle précédent et de l'instance horaire la plus proche (non postérieure). La chaîne d'autodépendance garantit que les instances s'exécutent séquentiellement au sein d'un cycle. |
Une tâche minutée dépend d'une tâche quotidienne
| Configuration | Comportement |
|---|---|
| Pas d'autodépendance sur la tâche minutée | Toutes les instances minutées du jour courant dépendent de l'unique instance quotidienne. Une fois la tâche quotidienne terminée, toutes les instances minutées en attente dont l'heure d'ordonnancement est déjà arrivée s'exécutent concurrentiellement. |
| Autodépendance activée sur la tâche minutée | Seule la première instance minutée dépend de la tâche quotidienne. Chaque instance minutée suivante dépend de l'instance minutée précédente. Toutes les instances s'exécutent séquentiellement. |
Dépendances vis-à-vis des tâches planifiées par semaine, mois ou année
Lorsqu'une tâche quotidienne, horaire ou minutée dépend d'une tâche planifiée par semaine, mois ou année, DataWorks génère des instances simulées (dry-run) pour la tâche de fréquence inférieure les jours où elle n'est pas planifiée pour s'exécuter. Les instances simulées n'exécutent aucun code, ne génèrent aucune donnée, ne consomment aucune ressource et ne bloquent pas les tâches descendantes.
Lorsque l'heure planifiée d'une instance simulée arrive, son statut passe immédiatement à Successful, permettant aux instances descendantes de se poursuivre normalement.
Exemple : Une tâche hebdomadaire est planifiée tous les lundis et vendredis. Une tâche quotidienne en dépend.
Les lundi et vendredi : des instances réelles s'exécutent et génèrent des données.
Les mardi, mercredi, jeudi, samedi et dimanche : des instances simulées sont générées et immédiatement marquées comme Successful.
La tâche quotidienne s'exécute chaque jour, en fonction de l'instance correspondante de la tâche hebdomadaire (réelle ou simulée), sans aucun blocage les jours non planifiés.
