Olá pessoal! Após o sucesso absoluto das Canecas Talend Brasil e depois de muito tempo sem tutoriais iremos falar sobre algo essencial dentro do Talend: variáveis de contexto e contextos de execução. Pegue sua caneca Talend Brasil, tome um café e se prepare – ou caso você ainda não tenha uma, não perca tempo e adquira já!
Variáveis de contexto são variáveis de acesso global dentro de um job, cujo conteúdo pode variar de acordo com o contexto de execução.
No Talend, os Contextos são organizados em três níveis, os quais iremos conferir hoje:
Variáveis de Contexto -> Grupos de Variáveis -> Contextos de Execução
– Variáveis de contexto representam o menor nível na definição de contextos. Podemos entendê-las como variáveis simples, mas que podem armazenar conteúdos diferentes de acordo com o Contexto de Execução.
– Grupos de Variáveis, como o próprio nome sugere, são grupos de variáveis criados para proporcionar maior organização ao projeto, agrupando variáveis correlacionadas (exemplo: variavéis que formam a conexão com um Mysql).
– Contextos de Execução são os contextos em si. Exemplos de contexto podem ser “Produção” e “Homologação“, ou “Servidor A” e “Servidor B“.
Para começar, vamos criar um job e definir uma variável de contexto chamada “Servidor“, do tipo String – vá até a aba Contexts e clique no ícone com um “+”:
Clique em Values as tree ou Values as table na aba Contexts.
Em seguida clique em Configure Contexts… (botão destacado na imagem abaixo):
Simples! Todas as variáveis de contexto são acessadas da mesma forma:
Vamos dar um exemplo: Adicione um componente tJava ao job e acrescente o seguinte código ao mesmo:
System.out.println(context.Servidor);
Agora você já sabe definir variáveis dentro de um job, mas e se você quiser reutilizá-las em outros jobs?
Vamos até a árvore do repositório e criaremos um Grupo de Variáveis, ou Context Group:
Por fim, atribuímos os valores a cada contexto:
Dê um Finish e pronto.
Para importar o grupo de variáveis criado para dentro do job que estávamos trabalhando, vá até a aba Contexts e selecione o grupo de variáveis a importar, conforme nas imagens abaixo:
E como o Talend associa tudo isso?
Como você deve ter percebido, é possível criar variáveis sem grupos, grupos sem variáveis, contextos sem variáveis… Não há uma “amarração” muito forte entre os três. Essa é uma flexibilidade que pode ajudar mas também confundir.
É importante compreender como variáveis, grupos e contextos são interligados entre si e a resposta mais simples é: através dos contextos.
Você pode ter tantas variáveis e grupos de variáveis dentro de um job quanto forem necessários. Mas sejam eles importados do repositório ou locais, os nomes de seus contextos de execução deverão coincidir – só assim o Talend poderá compreender em qual contexto executar o job. Observe na imagem anterior: tanto a variável local “Servidor” quanto o grupo denominado “Contexto” possuem dois contextos de execução iguais: Default e Desenvolvimento.
Se você importar um grupo de variáveis cujos contextos de execução são “Servidor A” e “Servidor B” e outro grupo de variáveis cujos contextos de execução são “Desenvolvimento” e “Producao”, não haverá como o Talend compreender em qual contexto executar o job, pois ele terá 4 contextos de execução diferentes.
Dica de boas práticas: variáveis de contexto tem acesso global e funcionam como parâmetros dentro de um job. Seus valores podem ser alterados por quem irá executá-lo e por isso tenha cuidado. Quando for preciso declarar variáveis que influenciam no comportamento de um job e não for sua intenção expor isso, opte por utilizar o globalMap, pois variéveis declaradas lá não ficam expostas externamente à modificações. Como declarar variáveis via globalMap ficará para outro dia… 😉
Muitos usos podem ser feitos das variáveis de contexto, o limite é a criatividade e o motivador é a necessidade – como sempre. Você pode utilizá-las como variáveis de controle de fluxo – como elas tem acesso global dentro do job e seu valor pode ser alterado via parâmetro, você pode utilizá-las para modificar os passos de execução de um job.
Até a próxima!