Cenários no Oracle Data Integrator (ODI): Lidando com a Duplicação de Código e Estratégias de Contorno
- Rodrigo de Oliveira
- 31 de jan. de 2024
- 2 min de leitura
Atualizado: 5 de fev. de 2024
No Oracle Data Integrator (ODI), um cenário é uma instância executável de um objeto, como uma interface/mapeamento, pacote ou procedimento.
Os cenários podem conter versões ou apenas uma única versão que é sempre recompilada (regenerada), sobrepondo o código fonte anterior. No ODI, os cenários são gerados no formato XML e transitam entre os ambientes de desenvolvimento. Um exemplo clássico seria a criação de um ETL no ambiente de desenvolvimento e o cenário referente ao ETL irá para os ambientes de homologação e produção.
Uma característica desafiadora dos cenários é o forte encapsulamento dos códigos que compõem o objeto referente ao cenário. Por exemplo, considere um cenário de pacote de carga com uma procedure contendo uma query. Essa query será encapsulada no cenário do pacote de carga. Se a procedure for um passo padrão em todo o ETL criado na sua empresa e você precisar alterá-lo, essa mudança não refletirá nos pacotes de carga que a utilizam, pois o cenário do pacote de carga, conterá o código fonte (query) do procedimento no momento da geração.
Para que a alteração reflita nos pacotes de carga que utilizam aquele procedimento, é necessário regenerar o cenário do pacote de carga. Um exemplo prático pode ser visualizado a seguir:
Criei um pacote simples com um Step de início e fim, e um procedimento no meio.

O procedimento contém uma query simples.

Ao gerar o cenário, a mesma query contida no procedimento é verificada dentro do cenário do pacote.

Em resumo, mesmo que você altere a lógica da query dentro da procedure, isso não afetará diretamente o cenário do pacote que a utiliza. O cenário do pacote encapsula a lógica interna de cada passo, garantindo a independência entre eles. Alterações no procedimento não impactarão o cenário do pacote, desde que o cenário do pacote de carga não seja regenerado.
O mesmo princípio é válido para variáveis. Uma alternativa interessante para contornar esses casos é utilizar o cenário do procedimento dentro do pacote de carga, e não o próprio procedimento. Com isso, o cenário do pacote de carga contém uma referência ao cenário do procedimento, não copiando o código para si.
Segue o exemplo com o cenário do procedimento dentro do pacote de carga.

E ao gerar o cenário a fonte fica desta forma:

Dessa forma, o cenário do pacote passa a fazer referência ao cenário do procedimento que contém a query, resultando em uma total desvinculação. Basta, então, atualizar o cenário relacionado ao procedimento para que todas as alterações realizadas sejam automaticamente absorvidas por todos os pacotes de carga que fazem referência a ele.
A utilização inteligente de referências entre cenários no ODI contribui para um ambiente mais ágil e adaptável. Ao adotar essa estratégia, você otimiza a manutenção, garantindo que as mudanças sejam absorvidas de maneira eficaz.
Espero que essas informações sejam úteis. Em caso de dúvidas ou mais esclarecimentos, estou à disposição. Até a próxima.
Comentarios