Dependências

As entradas de provisionamento geradas podem apresentar dependências entre si. Para lidar com isso, o Blazon conta com um mecanismo específico para tratar essas dependências, garantindo que os eventos de provisionamento sejam processados na ordem correta e evitando inconsistências ou falhas de sincronismo com as aplicações alvo.

O que são as dependências de provisionamento?

Devido à dependência sequencial entre alguns eventos de provisionamento de objetos correlacionados e ao fato de que, isoladamente, não é possível garantir essa ordem de execução, um mecanismo de sincronização identifica a necessidade de sequenciamento com base na definição das dependências.

Esse mecanismo assegura esse comportamento de sequenciamento antes de encaminhar cada entrada para execução, ou descartá-la.

Nota

Na prática as dependências de provisionamento são uma forma de garantir o sequenciamento de alguns eventos de provisionamento do mesmo objeto ou entre objetos correlacionados.

Nota

Como funcionam as dependências de provisionamento?

O mecanismo de sequenciamento considera apenas as entradas presentes na fila de processamento e que estão correlacionadas ao mesmo objeto em provisionamento do novo evento.

Sempre que um novo evento de provisionamento chega para processamento é verificado na fila de eventos em processamento se existe alguma dependência:

  • Caso exista dependência: novo evento é colocado na final de Aguardando dependência;

  • Caso não exista dependência: o novo evento é imediatamente despachado para execução.

As regras de dependência são pré-definidas em uma tabela (ou matriz), que estabelece quais eventos dependem de outros e define o comportamento esperado para o evento dependente após a finalização completa do evento do qual dependia.

Nota

Os eventos que caem na fila de Aguardando dependência ficam nessa fila até que o respectivo evento do qual é dependente seja processado com sucesso, falha ou descarte.

A matriz de dependências de provisionamento

A matriz de definição das dependências entre os eventos de provisionamento é construída de forma a expressar a relação de dependência de um novo evento em relação a cada evento que já está em processamento.

Essa análise também leva em consideração apenas eventos em processamento do mesmo objeto sendo provisionado ou de um objeto correlacionado.

Nota

A matriz contém entradas não preenchidas que indicam pares de eventos para os quais não há qualquer relação de dependência definida.

Assim, a existência de uma entrada para um par de eventos na matriz de dependência indica que há uma relação de dependência entre eles. Consequentemente, o novo evento deverá aguardar a conclusão do evento em execução para que possa ser executado ou descartado.

A matriz de dependências está representada abaixo, onde a primeira coluna contem os eventos novos e cada coluna subsequente representa cada um dos onze eventos possíveis que podem estar na fila de processamento.

Novo evento
Criação de conta
Atualização de conta
Ativação de conta
Inativação de conta
Revogação de conta
Troca de senha
Concessão de direito
Revogação de direito
Criação de direito
Atualização de direito
Remoção de direito

Criação de conta

-

-

-

-

-

-

-

-

-

-

-

Atualização de conta

  • Se sucesso: descarta;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

-

-

-

-

-

Ativação de conta

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

-

-

-

-

-

Inativação de conta

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

-

-

-

-

-

Revogação de conta

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

-

-

-

-

-

Troca de senha

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

-

-

-

-

-

Concessão de direito

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

-

-

-

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

Revogação de direito

-

  • Se sucesso: executa;

  • Se falha: executa;

-

-

  • Se sucesso: descarta;

  • Se falha: executa;

-

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: descarta;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

Criação de direito

-

-

-

-

-

-

-

-

-

-

-

Atualização de direito

-

-

-

-

-

-

-

-

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

Remoção de direito

-

-

-

-

-

-

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: executa;

  • Se falha: descarta;

  • Se sucesso: executa;

  • Se falha: executa;

  • Se sucesso: descarta;

  • Se falha: executa;

Observações finais sobre a matriz de dependências:

  • Quando um evento em processamento é descartado e ele tem uma dependência, o evento dependente também será descartado.

  • Um evento novo nunca tem mais do que uma dependência e esta será a do evento mais recente na fila de processamento.

Nota

Atualizado

Isto foi útil?