Quando uma tarefa ancestral e uma descendente são executadas com frequências diferentes — por exemplo, uma tarefa diária dependendo de uma horária — o DataWorks precisa determinar exatamente qual instância ancestral cada instância descendente deve aguardar. Este documento explica essa regra de resolução (proximidade do horário de agendamento) e demonstra como a ativação da autodependência altera o comportamento para cada combinação de frequência.
Para configurar dependências no mesmo ciclo, consulte Configurar dependências de agendamento no mesmo ciclo. Para configurar dependências entre ciclos, consulte Configurar dependências de agendamento entre ciclos.
Como o DataWorks resolve dependências no nível de instância
O DataWorks oferece suporte a seis frequências de agendamento: minuto, hora, dia, semana, mês e ano. Cada ciclo de agendamento gera uma instância. Na prática, a dependência entre duas tarefas ocorre entre instâncias específicas: a instância descendente aguarda até que a ancestral atinja o estado Successful antes de executar.
Dois comportamentos regem todas as combinações de frequência:
|
Comportamento |
Descrição |
|
Proximidade do horário de agendamento |
Quando as tarefas ancestral e descendente possuem frequências diferentes, cada instância descendente depende da instância ancestral cujo horário de agendamento seja o mais próximo possível, sem ultrapassar o horário da própria instância descendente, desde que essa instância ancestral não esteja servindo como ancestral de outra instância descendente. |
|
Impacto no horário real de execução |
A instância descendente não inicia no horário agendado caso sua instância ancestral ainda não tenha atingido o estado Successful. |
Casos extremos aplicáveis a todas as combinações:
Se uma instância descendente estiver agendada antes de sua ancestral no mesmo dia, ela aguardará a conclusão da ancestral.
Caso nenhuma instância ancestral tenha um horário de agendamento anterior à primeira instância descendente do dia atual, essa primeira instância descendente dependerá da primeira instância ancestral do dia corrente.
Quando a proximidade se aplica — e quando não se aplica
|
Cenário |
Baseado em proximidade? |
Observações |
|
Ancestral e descendente têm a mesma frequência e o mesmo número de ciclos diários |
Não |
Mapeamento de instâncias um para um; o horário de agendamento é irrelevante |
|
Ancestral e descendente têm frequências diferentes |
Sim |
Aplica-se a regra do horário mais próximo sem ultrapassagem |
Impacto no horário real de execução — exemplo
A Tarefa A é agendada diariamente às 07:00. A Tarefa B é agendada por hora às 00:00, 08:00 e 16:00. A Tarefa B depende da Tarefa A.
Às
00:00: a primeira instância da Tarefa B é agendada, mas não executa, pois a Tarefa A ainda não iniciou.Às
07:00: a Tarefa A é concluída e a primeira instância da Tarefa B começa a ser executada logo em seguida.Às
08:00e16:00: as demais instâncias da Tarefa B executam nos horários agendados, já que a Tarefa A está com status Successful.

Comportamento padrão versus comportamento com autodependência
As seções abaixo abordam cada combinação de frequência. Para cada uma, descreve-se primeiro o comportamento padrão (sem autodependência), seguido pela alteração quando a autodependência está ativada.
Autodependência significa que uma tarefa depende de sua própria instância do ciclo anterior. Quando ativada em uma tarefa horária ou de minuto, a primeira instância de cada dia pode depender da última instância do dia anterior. Se essa instância do dia anterior não tiver terminado, a tarefa não poderá executar no dia atual. Para etapas de configuração, consulte Dependência da instância gerada para o nó atual no ciclo anterior .
Dependências para tarefas agendadas por dia
Dia depende de outra tarefa diária
|
Configuração |
Comportamento |
|
Sem autodependência |
A instância descendente diária depende da instância ancestral diária no mesmo ciclo de agendamento (um para um). |
|
Autodependência ativada na tarefa ancestral diária |
Existe uma dependência cruzada: a instância descendente diária depende de uma instância ancestral diária que, por sua vez, depende de sua própria instância do ciclo anterior. |
Dia depende de uma tarefa horária (dia atual)
|
Configuração |
Comportamento |
|
Sem autodependência na tarefa horária |
A instância diária depende de todas as instâncias horárias do dia atual. Por exemplo, se a tarefa horária executar às |
|
Autodependência ativada na tarefa horária |
A instância diária depende apenas da instância horária mais próxima cujo horário de agendamento não seja posterior ao da tarefa diária. Por exemplo, se a tarefa diária executar às |
Para fazer com que a tarefa diária dependa de uma instância horária específica em vez de todas as instâncias, ative a autodependência na tarefa horária.
Dia depende de uma tarefa horária ou de minuto (dia anterior)
|
Configuração |
Comportamento |
|
Sem autodependência na tarefa horária/de minuto |
A instância do dia atual depende de todas as instâncias da tarefa horária ou de minuto do dia anterior. |
|
Autodependência ativada na tarefa horária/de minuto |
A instância do dia atual depende apenas da última instância da tarefa horária ou de minuto do dia anterior. |
O diagrama a seguir ilustra como uma tarefa diária depende de uma tarefa horária do dia anterior.
Dependências para tarefas agendadas por hora
Hora depende de outra tarefa horária
|
Comparação da contagem de ciclos |
Comportamento |
|
Mesmo número de instâncias diárias |
Mapeamento um para um: a primeira instância horária descendente depende da primeira instância horária ancestral, a segunda depende da segunda, e assim por diante. |
|
Número diferente de instâncias diárias |
Aplica-se a regra de proximidade: cada instância horária descendente depende da instância horária ancestral cujo horário de agendamento seja o mais próximo possível, sem ultrapassar o seu próprio. Se a ancestral gerar menos instâncias, várias instâncias descendentes poderão depender da mesma instância ancestral. |
Hora depende de uma tarefa diária
|
Configuração |
Comportamento |
|
Sem autodependência na tarefa horária |
Todas as instâncias horárias do dia atual dependem da única instância diária. Após a conclusão da tarefa diária, todas as instâncias horárias pendentes executam concorrentemente. |
|
Autodependência ativada na tarefa horária |
Apenas a primeira instância horária depende da tarefa diária. Cada instância horária subsequente depende da instância horária anterior (autodependência do ciclo anterior). As instâncias executam sequencialmente — uma após a outra — em vez de concorrentemente. |
Hora depende de uma tarefa de minuto
|
Configuração |
Comportamento |
|
Sem autodependência na tarefa de minuto |
A instância horária depende de todas as instâncias de minuto dentro da mesma hora. Por exemplo, se a tarefa de minuto executar a cada 15 minutos, a instância horária das |
|
Autodependência ativada tanto na tarefa horária quanto na de minuto |
A instância horária depende da instância de minuto mais próxima cujo horário de agendamento não seja posterior ao seu próprio. Por exemplo, a instância horária das |
Dependências para tarefas agendadas por minuto
Minuto depende de uma tarefa horária
|
Configuração |
Comportamento |
|
Sem autodependência na tarefa de minuto |
Cada instância de minuto depende da instância horária mais próxima cujo horário de agendamento não seja posterior ao seu próprio. Várias instâncias de minuto dentro da mesma hora dependem da mesma instância horária. Por exemplo, as instâncias de minuto às |
|
Autodependência ativada tanto na tarefa de minuto quanto na horária |
Cada instância de minuto depende de sua própria instância do ciclo anterior e da instância horária mais próxima (não posterior). A cadeia de autodependência garante que as instâncias executem sequencialmente dentro de um ciclo. |
Minuto depende de uma tarefa diária
|
Configuração |
Comportamento |
|
Sem autodependência na tarefa de minuto |
Todas as instâncias de minuto do dia atual dependem da única instância diária. Após a conclusão da tarefa diária, todas as instâncias de minuto pendentes cujo horário de agendamento já chegou executam concorrentemente. |
|
Autodependência ativada na tarefa de minuto |
Apenas a primeira instância de minuto depende da tarefa diária. Cada instância de minuto subsequente depende da instância de minuto anterior. Todas as instâncias executam sequencialmente. |
Dependências de tarefas agendadas por semana, mês ou ano
Quando uma tarefa diária, horária ou de minuto depende de uma tarefa agendada por semana, mês ou ano, o DataWorks gera instâncias de simulação para a tarefa de menor frequência nos dias em que ela não está programada para executar. Instâncias de simulação não executam código, não geram dados, não consomem recursos e não bloqueiam tarefas descendentes.
Quando o horário agendado de uma instância de simulação chega, seu status é imediatamente definido como Successful, permitindo que as instâncias descendentes prossigam normalmente.
Exemplo: Uma tarefa semanal é agendada para toda segunda e sexta-feira. Uma tarefa diária depende dela.
Na segunda e na sexta-feira: instâncias reais executam e geram dados.
Na terça, quarta, quinta, sábado e domingo: instâncias de simulação são geradas e marcadas imediatamente como Successful.
A tarefa diária executa todos os dias, dependendo da instância correspondente da tarefa semanal (real ou de simulação), sem qualquer bloqueio nos dias fora do agendamento.
