Talend: Retornando valores entre jobs

Compartilhe este post

Neste pequeno tutorial sobre Talend demonstraremos como retornar valores de jobs “filhos” utilizando o componente tRunJob sem “fluxo de dados”, ou seja, sem utilizar o schema deste componente.

A passagem de parâmetros entre jobs no Talend é feita através de variáveis de contexto. Geralmente os parâmetros do job pai são transferidos para o job filho e quando este precisa retornar algo, são dados cujos metadados são definidos no schema do componente tRunJob. Na forma como foi implementado, o Talend possibilita transferir parâmetros do job pai para o filho através de variáveis de contexto, mas não o contrário. Também não é possível transferir parâmetros entre jobs através do globalMap, pois cada job possui sua própria área de globalMap.

Porém, algumas vezes você pode desejar retornar valores de um job filho que não estão necessariamente em um fluxo de dados. Como fazer isso?

Vamos criar dois jobs de exemplo para demonstrar como retornar valores de subjobs:

Em ambos os jobs, defina uma variável de contexto com tipo Object, vamos chamá-la aqui de SUBJOB_CONTEXT.

pass_param_subjob (1)

Vamos começar pelo job filho. Adicione um componente tJava ao mesmo, e na guia Advanced adicione as seguintes linhas para importar as bibliotecas necessárias:

import java.util.Map;
import java.util.HashMap;

pass_param_subjob (2)

Ainda no componente tJava, na guia Basic, adicione as seguintes linhas:

//Imprime o parâmetro recebido do job pai
System.out.println("param=" + ((Map<String, String>)context.SUBJOB_CONTEXT).get("param"));

//Define uma nova variável, denominada "retVal" e atribui o valor "Ok" à mesma
((Map<String, String>)context.SUBJOB_CONTEXT).put("retVal", "Ok");

pass_param_subjob (3)

O job filho está concluído. Salve.

Agora no job pai, acrescente um componente tJava, importe as mesmas bibliotecas Map e HashMap, conforme no job filho e na guia Basic acrescente as seguintes linhas:

//Instancia um HashMap na variável de contexto definida
context.SUBJOB_CONTEXT = new HashMap<String, String>();

//E então atribui "valor" à uma chave denominada "param" (poderia ter qualquer nome, funciona exatamente como o globalMap)
((Map<String, String>)context.SUBJOB_CONTEXT).put("param", "valor");

pass_param_subjob (6)

Agora arraste o job filho do repositório para o job pai e no campo “Context Param” lembre-se de acrescentar à variável SUBJOB_CONTEXT e atribuir o valor context.SUBJOB_CONTEXT à mesma. Neste exemplo você pode optar também por marcar a opção “Transmit whole context”.

pass_param_subjob (8)

Agora acrescente outro tJava e na guia Basic cole a seguinte linha:

//Imprime o retorno do job filho
 System.out.println("retVal=" + ((Map<String, String>)context.SUBJOB_CONTEXT).get("retVal"));

pass_param_subjob (7)

Ligue os três componentes através da trigger OnSubJobOk.

pass_param_subjob (4)

Execute:

pass_param_subjob (5)

Agora você já viu como é possível retornar valores de jobs filhos utilizando poucas linhas de código. Embora esse seja um exemplo muito simples, é apenas uma porta para várias possibilidades.

Até a próxima!

Fonte: http://bekwam.blogspot.com.br/2011/05/passing-parameters-and-variables-to.html

Assine nossa newsletter

Fique por dentro das novidades mais recentes sobre o Talend e aprenda com nossos experts

Leia outros posts do nosso blog

Talend

5 Princípios da Confiabilidade dos Dados

Os dados sustentam a transformação digital das organizações e as tecnologias inovadoras essenciais para sua viabilidade a longo prazo, incluindo análises avançadas, inteligência artificial e aprendizado de máquina. No entanto, a maioria das empresas não consegue medir a saúde de seus dados e 62% de seus funcionários disseram que não confiam em seus dados, aponta uma recente pesquisa global realizada pela Talend.

Talend

Acessando Web Services SOAP no Talend

A utilização de Web Services é comumente usada na integração e comunicação entre sistemas. Nesse artigo começaremos com uma breve introdução sobre Web Services, o que são, seu formato padrão e como podem ser utilizados, posteriormente, iremos aprender como realizar requisições a um Web Service utilizando o Talend com um exemplo prático usando um Web Service de captura de endereço através do CEP.

Para o desenvolvimento desse artigo iremos utilizar um Web Service pertencente ao pessoal do Byjg, que é um site que possui diversos serviços para diversas situações, dentre eles está o serviço de consulta de CEP, no qual podemos passar um CEP para ter como retorno o endereço, e vice-versa.

Quer acelerar a tomada de decisão com dados de qualidade?

Fale conosco agora mesmo!

Fale com nossos experts

O café é por nossa conta!