O DataWorks permite criar dependências entre tarefas com acionamento automático que possuem frequências de agendamento diferentes, como minuto, hora, dia, semana, mês e ano. Cada execução de tarefa corresponde a uma instância, e a frequência de agendamento determina quantas instâncias são geradas. Este tópico explica como o DataWorks estabelece dependências entre as instâncias de tarefas ancestrais e descendentes quando suas frequências de agendamento diferem.
Contexto
No DataWorks, uma tarefa com acionamento automático gera instâncias com base em sua frequência de agendamento. Por exemplo, uma tarefa horária gera um número correspondente de instâncias por dia. As dependências de tarefa são estabelecidas entre essas instâncias. Quando as tarefas ancestrais e descendentes têm frequências de agendamento diferentes, o número de instâncias e a forma como elas dependem umas das outras variam.
O DataWorks suporta diversos cenários de dependência de agendamento. Escolha configurar uma dependência de agendamento no mesmo ciclo ou uma dependência de agendamento entre ciclos. Para mais informações, consulte Configurar uma dependência de agendamento no mesmo ciclo e Configurar uma dependência de agendamento entre ciclos.
Compreenda estes conceitos antes de configurar uma dependência de agendamento.
|
Nº
|
Descrição
|
Referências
|
|
1
|
O DataWorks suporta múltiplas frequências de agendamento, incluindo minuto, hora, dia, semana, mês e ano. Quando uma tarefa ancestral e uma descendente possuem frequências diferentes, o sistema estabelece a dependência usando o princípio de proximidade do horário de agendamento.
Nota
-
Se uma tarefa horária depender de outra tarefa horária e ambas gerarem o mesmo número de instâncias por dia, este princípio não se aplica. A dependência não está relacionada ao horário de agendamento.
-
Por padrão, uma tarefa diária depende de todas as instâncias geradas por suas tarefas ancestrais horárias ou baseadas em minutos no mesmo dia. A tarefa diária inicia somente após o processamento de todos os dados daquele dia provenientes das tarefas ancestrais.
|
Resolução de dependências: O princípio de proximidade do horário de agendamento
|
|
2
|
Uma dependência de agendamento estabelece uma dependência de dados entre tarefas. A tarefa descendente não executa até que sua tarefa ancestral seja concluída com êxito, independentemente do próprio horário de agendamento da descendente.
|
Como as dependências afetam a execução da tarefa
|
|
3
|
Revise os exemplos no apêndice para compreender melhor o princípio de proximidade do horário de agendamento.
|
Apêndice 1: Cenários de dependência complexa
Os cenários incluem:
|
Resolução de dependências: O princípio de proximidade
Quando uma tarefa com acionamento automático executa, ela gera uma ou mais instâncias. Uma instância descendente depende de uma instância ancestral. Por padrão, o sistema resolve dependências usando o princípio de proximidade do horário de agendamento: uma instância descendente depende da instância ancestral disponível mais próxima que ainda não seja dependência de outra instância. Os seguintes princípios aplicam-se em diferentes cenários:
Nota
Uma tarefa descendente agendada para executar antes de sua tarefa ancestral não será acionada até que a ancestral seja concluída.
Ao aplicar o princípio de proximidade do horário de agendamento, se a tarefa ancestral não tiver instâncias agendadas antes da primeira instância do dia da descendente, a primeira instância da descendente dependerá, por padrão, da primeira instância do dia da ancestral.
|
Cenário
|
Descrição
|
Diagrama
|
|
Dependências entre tarefas horárias e baseadas em minutos
|
-
A dependência baseia-se no horário de agendamento das instâncias
-
Comportamento padrão: Uma instância descendente depende da instância ancestral mais próxima agendada no mesmo horário ou antes de seu horário de agendamento, desde que essa instância ancestral já não seja dependência de outra instância.
Nota
Quando um nó ancestral tem uma frequência de agendamento maior que o nó descendente (cenário muitos-para-um), uma instância descendente depende de todas as instâncias ancestrais geradas dentro de sua janela de tempo (início, fim].
-
Caso especial: Se uma autodependência estiver configurada tanto para a tarefa ancestral quanto para a descendente, a instância descendente atual depende de uma única instância ancestral agendada no mesmo horário ou antes de seu próprio horário de agendamento.
Nota
Para uma explicação visual, consulte os diagramas do cenário em que tanto as tarefas horárias quanto as baseadas em minutos possuem autodependência configurada.
-
A dependência não se baseia no horário de agendamento das instâncias.
Se duas tarefas da mesma frequência (como horária para horária) gerarem o mesmo número de instâncias por dia, cria-se uma dependência um-para-um entre suas instâncias correspondentes.
|
Os diagramas a seguir mostram os subcenários para dependências entre tarefas horárias e baseadas em minutos.
Uma tarefa horária depende de outra tarefa horária
Uma tarefa horária depende de uma tarefa baseada em minutos
Uma tarefa baseada em minutos depende de uma tarefa horária
Exemplo:
Uma tarefa horária depende de outra tarefa horária.
-
Cenário 1: O nó horário B depende do nó horário A.
Configuração:
-
O agendamento diário está definido das 00:00 às 23:59.
-
Os nós A e B estão ambos agendados a cada 5 horas.
-
Os nós A e B geram o mesmo número de instâncias por dia.
Relacionamento de dependência: Como os nós A e B geram o mesmo número de instâncias por dia, estabelece-se uma dependência um-para-um entre suas instâncias correspondentes.
-
Cenário 2:
Configuração:
-
O nó A é agendado a cada 4 horas, das 06:10 às 21:59 diariamente, gerando um total de quatro instâncias.
-
O nó B é agendado a cada 4 horas, das 08:00 às 23:59 diariamente, gerando um total de quatro instâncias.
Relacionamento de dependência: Como os nós A e B geram o mesmo número de instâncias por dia, estabelece-se uma dependência um-para-um entre suas instâncias correspondentes.
|
|
Uma tarefa diária depende de uma tarefa horária ou baseada em minutos
|
Comportamento padrão: Uma tarefa diária depende de todas as instâncias geradas por suas tarefas ancestrais horárias ou baseadas em minutos naquele dia. A tarefa diária inicia somente após a conclusão de todas essas instâncias ancestrais.
Outros casos: Se a tarefa diária precisar depender apenas da instância mais recente da tarefa horária ou baseada em minutos, configure uma autodependência para a tarefa ancestral. Assim que essa instância específica da tarefa ancestral for concluída, a tarefa diária iniciará.
|
|
Para mais detalhes sobre dependências e comportamento de execução em cada cenário, consulte Apêndice 1: Cenários de dependência complexa.
Como as dependências afetam a execução da tarefa
Uma tarefa descendente com dependência configurada não executará até que sua tarefa ancestral seja executada com êxito, independentemente de seu próprio horário de agendamento.
Por exemplo, uma tarefa horária B depende de uma tarefa diária A. Nenhuma autodependência está configurada para a tarefa horária.
Tarefa A (diária): O horário de agendamento está definido para 07:00.
Tarefa B (horária): Os horários de agendamento são 00:00, 08:00 e 16:00.
Se a tarefa A não tiver sido concluída, a tarefa B não executará, mesmo em seu horário agendado de 00:00. O horário mais cedo em que a tarefa B pode realmente executar é 07:00.
Apêndice 1: Cenários de dependência complexa
Uma tarefa descendente agendada antes de sua tarefa ancestral não será acionada até que a ancestral seja concluída. Para a primeira instância descendente do dia, se nenhuma instância ancestral estiver agendada antes dela, ela dependerá, por padrão, da primeira instância ancestral daquele dia.
Uma tarefa horária depende de outras tarefas
|
Subcenário
|
Dependência e execução
|
Diagrama
|
|
Uma tarefa horária depende de outra tarefa horária
|
-
Tarefas ancestrais e descendentes geram o mesmo número de instâncias
Estabelece-se uma dependência um-para-um entre instâncias do mesmo dia: a primeira instância descendente depende da primeira instância ancestral, a segunda da segunda, e assim por diante.
-
Tarefas ancestrais e descendentes geram um número diferente de instâncias
Instâncias geradas no mesmo dia dependem umas das outras com base no princípio de proximidade do horário de agendamento. Uma instância descendente depende da instância ancestral mais próxima agendada no mesmo horário ou antes de seu próprio horário de agendamento.
Caso especial: Nas configurações de dependência de agendamento, se um nó ancestral executar com mais frequência que um nó descendente (cenário muitos-para-um), a lógica de dependência da descendente segue o princípio de cobertura de intervalo, não apenas o princípio de proximidade.
Escopo da dependência: Uma instância descendente depende de todas as instâncias ancestrais geradas dentro de sua janela de tempo (início, fim].
|
|
|
Uma tarefa horária depende de uma tarefa diária
|
-
Autodependência não está configurada para a tarefa horária
Todas as instâncias horárias da descendente para aquele dia dependem da tarefa diária ancestral e iniciarão somente após sua conclusão. Quaisquer instâncias horárias cujos horários de agendamento já passaram executarão simultaneamente.
Nota
-
Para evitar execução simultânea, configure uma autodependência para a tarefa horária descendente.
-
A execução de todas as instâncias horárias descendentes não afeta umas às outras.
-
Autodependência está configurada para a tarefa horária
-
Apenas a primeira instância horária depende da tarefa diária ancestral. Todas as outras instâncias horárias dependem de sua instância horária precedente.
-
Uma instância horária inicia somente após a conclusão tanto da tarefa diária quanto da instância horária anterior. Nesse caso, as instâncias horárias não executarão simultaneamente, mesmo que seus horários agendados já tenham passado.
Nota
Uma autodependência pode criar uma dependência entre dias. Se a última instância do dia anterior não tiver sido concluída, isso pode impedir o agendamento das tarefas de hoje.
|
|
|
Uma tarefa horária depende de uma tarefa baseada em minutos
|
-
Autodependência não está configurada para a tarefa baseada em minutos
A tarefa horária descendente depende de todas as instâncias baseadas em minutos geradas dentro daquela hora.
-
Autodependência está configurada tanto para a tarefa baseada em minutos quanto para a horária
A tarefa horária descendente depende da instância baseada em minutos mais próxima agendada no mesmo horário ou antes de seu próprio horário de agendamento dentro daquela hora.
|
|
Uma tarefa diária depende de outras tarefas
|
Subcenário
|
Dependência e execução
|
Diagrama
|
|
Uma tarefa diária depende de uma tarefa diária do mesmo ciclo
|
-
Autodependência não está configurada para a tarefa diária ancestral
Por padrão, a instância diária descendente depende da instância diária ancestral do mesmo ciclo.
-
Autodependência está configurada para a tarefa diária ancestral
Se uma autodependência estiver configurada para a tarefa diária ancestral, a dependência da tarefa diária descendente torna-se uma dependência entre ciclos.
Nota
Uma autodependência pode criar uma dependência entre dias. Se a última instância do dia anterior não tiver sido concluída, isso pode impedir o agendamento das tarefas de hoje.
|
|
|
Uma tarefa diária depende de uma tarefa horária do mesmo dia
|
-
Autodependência não está configurada para a tarefa horária
A tarefa diária descendente depende de todas as instâncias horárias geradas pela tarefa ancestral naquele dia. A tarefa diária inicia somente após o processamento de todos os dados horários daquele dia.
Nota
Se a tarefa diária precisar depender apenas de uma instância horária específica, configure uma autodependência para a tarefa horária. A tarefa diária será agendada automaticamente após a execução bem-sucedida dessa instância horária específica.
-
Autodependência está configurada para a tarefa horária
A tarefa diária descendente depende da instância horária ancestral mais próxima que esteja agendada no mesmo horário ou antes de seu próprio horário de agendamento.
|
|
|
Uma tarefa diária depende de uma tarefa horária ou baseada em minutos do dia anterior
|
-
Autodependência não está configurada para a tarefa horária ou baseada em minutos
A tarefa diária descendente dependerá de todas as instâncias horárias ou baseadas em minutos geradas pela tarefa ancestral no dia anterior.
-
Autodependência está configurada para a tarefa horária ou baseada em minutos
A tarefa diária descendente dependerá da última instância horária ou baseada em minutos gerada pela tarefa ancestral no dia anterior.
|
O exemplo a seguir mostra uma tarefa diária que depende de uma tarefa horária do dia anterior.
|
Uma tarefa baseada em minutos depende de outras tarefas
|
Subcenário
|
Descrição da dependência
|
Diagrama
|
|
Uma tarefa baseada em minutos depende de uma tarefa horária
|
-
Autodependência não está configurada para a tarefa baseada em minutos
Uma instância descendente baseada em minutos depende da instância horária ancestral mais próxima agendada no mesmo horário ou antes de seu próprio horário de agendamento, sem dependências duplicadas.
Nota
Neste cenário, múltiplas instâncias descendentes baseadas em minutos podem depender da mesma instância horária ancestral.
-
Autodependência está configurada tanto para a tarefa baseada em minutos quanto para a horária
Cada instância descendente baseada em minutos depende de sua instância precedente. Ela também depende da instância horária ancestral mais próxima agendada no mesmo horário ou antes de seu próprio horário de agendamento, com base no princípio de proximidade do horário de agendamento.
|
|
|
Uma tarefa baseada em minutos depende de uma tarefa diária
|
|
|
Dependências semanais, mensais ou anuais
Quando uma tarefa diária, horária ou baseada em minutos depende de uma tarefa semanal, mensal ou anual, o sistema gera uma instância de simulação para a tarefa ancestral em seus dias não agendados. Uma instância de simulação não processa dados, não consome recursos e não bloqueia tarefas descendentes.
O exemplo a seguir mostra um cenário onde uma tarefa diária depende de uma tarefa semanal para a qual nenhuma autodependência está configurada:
Tarefa semanal ancestral: Executa normalmente toda segunda e sexta-feira. Na terça, quarta, quinta, sábado e domingo, gera uma instância de simulação. Quando o horário agendado chega, a instância de simulação é imediatamente marcada como bem-sucedida sem realmente executar nenhum código. Uma instância de simulação não afeta a operação normal das instâncias descendentes.
Tarefa diária descendente: Gera uma instância agendada todos os dias, que depende da instância (incluindo qualquer instância de simulação) gerada pela tarefa semanal ancestral para aquele dia. Após a conclusão bem-sucedida da instância do dia da tarefa semanal, a instância descendente correspondente é acionada.
Apêndice 2: Agendamento de fluxo de trabalho
No DataWorks, você pode tratar um fluxo de trabalho inteiro como uma única unidade e configurar nós ancestrais e descendentes para ele. Para mais informações, consulte Orquestração periódica de fluxo de trabalho.