Exemplo: Dependências de execução

Cada pedido pode ter várias dependencias, bem como vários pedidos dependentes O aplicativo armazena cada borda como um registro individual que identifica o pedido e também seu pedido dependente. As dependências devem ser acíclicas.

Exemplo: Dependências de execução

O aplicativo também controla se uma dependência é resolvida para uma borda ou não. Isso ajuda na busca de todos os pedidos que ainda serão processados e são elegíveis para serem selecionados para processamento. Por exemplo, considere a seguinte estrutura em árvore de dependência de execução:
Figura 1. Estrutura em árvore de exemplo de relacionamento de dependência de execução
Estrutura em Árvore de Amostra para Dependência de Execução
O aplicativo insere os seguintes registros na tabela YFS_TRANSACTIONAL_RELATION.
Tabela 1. Registros de amostra na tabela YFS_TRANSACTIONAL_RELATION para dependências de execução
Este pedido Pedido relacionado Tipo de Relacionamento IsDependencyResolved
Order-1 Order-11 DEPENDS_ON  
Order-1 Order-12 DEPENDS_ON  
Order-1 Order-13 DEPENDS_ON  
Order-11 Order-111 DEPENDS_ON  
Order-11 Order-112 DEPENDS_ON  
Order-11 Order-131 DEPENDS_ON  
Order-12 Order-131 DEPENDS_ON  
Order-13 Order-131 DEPENDS_ON  
Order-13 Order-132 DEPENDS_ON  
Order-132 Order-1322 DEPENDS_ON  
Order-1322 Order-1321 DEPENDS_ON  
Order-1321 Order-131 DEPENDS_ON  
Neste exemplo, os pedidos que estão prontos para serem processados são os que não têm nenhuma dependência identificada.

Na primeira rodada: Pedido-111, Pedido-112 e Pedido-131 são processados. Quando esses pedidos forem processados ou o trabalho for feito, seus pedidos dependentes deverão ter as respectivas bordas marcadas como resolvidas.

Após a primeira rodada de processamento, o aplicativo insere ou atualiza os seguintes registros na tabela YFS_TRANSACTIONAL_RELATION.
Tabela 2. Registros de amostra na tabela YFS_TRANSACTIONAL_RELATION para dependências de execução
Este pedido Pedido relacionado Tipo de Relacionamento IsDependencyResolved
Order-1 Order-11 DEPENDS_ON  
Order-1 Order-12 DEPENDS_ON  
Order-1 Order-13 DEPENDS_ON  
Order-11 Order-111 DEPENDS_ON S
Order-11 Order-112 DEPENDS_ON S
Order-11 Order-131 DEPENDS_ON S
Order-12 Order-131 DEPENDS_ON S
Order-13 Order-131 DEPENDS_ON S
Order-13 Order-132 DEPENDS_ON  
Order-132 Order-1322 DEPENDS_ON  
Order-1322 Order-1321 DEPENDS_ON  
Order-1321 Order-131 DEPENDS_ON S
De forma semelhante, o aplicativo mantém o processamento de pedidos relacionados e quando os pedidos são processados ou o trabalho é feito, seus pedidos dependentes devem ter as respectivas bordas marcadas como resolvidas. Por último, após o processamento de todos os pedidos dependentes, quando o Pedido-1 for processado ou o trabalho for feito, seus pedidos dependentes devem ter as respectivas bordas marcadas como resolvidas. Portanto, o Pedido-1 não tem pedidos dependentes, o processamento está concluído.