Exemplo: Multicontexto com Gatilho Temporal
Last updated
Last updated
Este exemplo ilustra a criação de um fluxo multicontexto a partir de um gatilho temporal. Os contextos são programados internamente a partir de uma variável de fluxo
Neste exemplo, trazemos um cenário de uma integração entre um sistema Web que provê informações meteorológicas e um banco de dados Postgres. As informações meteorológicas são obtidas de forma recorrente através de um gatilho temporal. A cada leitura também registramos as informações relevantes em um banco de dados de forma que possam ser consultadas posteriormente.
A leitura das informações meteorológicas requer a especificação da localidade sobre a qual os dados correntes serão fornecidos. Além disso, é necessário fornecer um token de acesso para que a API funcione corretamente.
Inicialmente faremos um fluxo monocontexto (convencional) que recupera os dados de uma única localidade e armazena em um único banco de dados. Em seguida vamos estender o mesmo fluxo para que possamos fazer a leitura das informações meteorológicas de múltiplas localidades usando contas distintas de acesso e armazenar as informações de cada localidade em um banco de dados distinto. Para isso utilizaremos as ferramentas de multicontexto da plataforma.
Passos
Passo a Passo
Inicie pela criação da versão monocontexto do fluxo para podermos validar de forma mais simples o seu correto funcionamento. A versão monocontexto é apenas uma versão convencional de flow que funciona para apenas um contexto. Depois que essa versão estiver funcional iremos transformá-la em multicontexto.
Você também pode iniciar a criação de um fluxo multicontexto do zero. Esse exemplo parte de um fluxo monocontexto por propósitos didáticos.
O fluxo original que vamos trabalhar se parece com o da figura abaixo
Periodicamente o fluxo chama uma API da Weather API e obtém as informações meteorológicas de uma determinada localidade. Em seguida, um módulo de Banco de Dados armazena as informações relevantes em um banco de dados Postgres.
A Weather API necessita de apenas duas variáveis. O primeiro é a localidade para a qual se busca as informações. Informamos esse parâmetro através de uma variável de fluxo previamente configurada.
Os dados retornados pela Weather API são armazenados no Banco de Dados Postgres.
Esse fluxo tem um gatilho temporal e não recebe informações externas na sua inicialização. Por essa razão as informações de contexto serão armazenadas dentro do próprio fluxo através de uma variável de fluxo.
Na versão multicontexto esse mesmo fluxo irá rodar múltiplas vezes, porém em cada uma utilizará informações diferentes de cidades, chaves de acesso à Weather API e conta de banco de dados. Para isso vamos criar uma chave de contexto que nos permitirá identificar essas informações. A chave de contexto pode ser qualquer identificador que seja único. Podemos utilizar uma informação de userid como números sequenciais tais como: 0001, 0002, 0003 e assim por diante.
Crie um parâmetro de fluxo do tipo array. Você pode nomeá-lo como userid_list e coloque como valor a lista de userids que definirão os contextos, como por exemplo:
["0001","0002","0003"]
Vamos executar o mesmo procedimento para cada contexto. Para isso criaremos um loop definindo qual o trecho do fluxo será executado repetidas vezes.
Especifique como lista de controle o parâmetro de fluxo recém criado userid_list. Dessa forma o loop será executado uma vez para cada chave de contexto.
Cada vez que a plataforma percorrer o loop, um contexto diferente deverá ser utilizado. Para isso colocaremos o "Context Finder" dentro do loop.
Insira o "Context Finder" conforme mostra a imagem seguir:
O "Context Finder" requer como parâmetro a chave do contexto a ser utilizado. Passe o valor do elemento sendo utilizado no módulo Dessa forma estaremos passando os valores de userid definidos no parâmetro de fluxo criado anteriormente.
Precisamos indicar quais são as variáveis que irão modificar de acordo com o "Contexto".
No fluxo original existem duas variáveis de fluxo que irão variar de acordo com o contexto. Ambas são utilizadas como variáveis pela Weather API.
location
key_
Precisamos configurar para que ambas sejam definidas por contexto. Para isso acesse a definição dessas variáveis em "Contexto" > "Variáveis".
Caso você acesse por "Configurações", observe que estarão em "Variáveis", na aba "Contexto".
Não é possível mover uma variável de fluxo para a de contexto
Precisamos indicar quais são as contas que irão modificar de acordo com o "Contexto".
No fluxo original existe apenas uma conta irá variar de acordo com o contexto. Trata-se da conta de acesso ao Banco de Dados Postgres.
Acesse o módulo do Banco de Dados e selecione a opção: “Utilizar contexto nesse componente”.
Clique em "Próximo". Você pode testar novamente o módulo e depois clique em "Salvar".
Cada contexto irá acessar a sua própria conta. Para isso é necessário definir contas individuais.
Acesso as contas em Configurações-> Contas conectadas. Selecione em "Gerenciar conta conectada" a opção "Banco de Dados" e em Banco de Dados: POSTGRESQL. Crie as contas de acesso ao Banco de Dados.
Cada contexto corresponde a um conjunto de variáveis e contas que será acessado quando o contexto for identificado. Neste passo criamos os contexto e atribuímos uma chave que permite localizá-lo.
No painel principal de edição de Fluxo, clique em "Contexto". Inicialmente apenas o contexto "Default" está presente. Vamos criar os contextos adicionais para o nosso exemplo.
Clique em “Adicionar contexto”. Especifique um nome para o primeiro contexto, como por exemplo “User 01” e atribua um valor para a chave. Esse é o valor que será pesquisado pelo "Context Finder" para identificar o contexto. Entre com valor 0001 e clique "Salvar".
Repita a operação para criar o contexto User 02 com a chave 0002, o contexto User 03 com a chave 0003.
Defina os valores das variáveis e atribua as contas para cada contexto.
Com os contextos criados, você pode editar as sua variáveis e definir as contas que cada contexto deve utilizar. Clique no lápis do contexto User 01 para editar seus valores. Observe que na aba "Variáveis" você tem acesso à definição das variáveis location e key_ para esse contexto. Clique no lápis ao lado de cada uma das variáveis e defina os seus valores.
Na aba "Contas Conectadas" você vê todos os módulos que requerem contas de contexto. Neste exemplo existe apenas o módulo do Banco de Dados Postgres que requer a definição de uma conta. Clique no seletor de contas e especifique uma das contas de Bancos de Dados que você criou anteriormente, neste exemplo foi selecionado a conta User 01 DB. Salve e feche para retornar à edição de contexto.
Repita a edição de variáveis e contas para os demais contextos. Neste exemplo utilizamos as informações da tabela abaixo para a configuração. Você precisará utilizar suas próprias chaves de acesso para configurar a variável key_ de acesso à Weather API.
Contexto
chave
location
key_
conta
User 01
0001
Sao Paulo
1f4efae6226c4e04a81140559220607
User 01 DB
User 02
0001
New York
f2fc5cb46fb74fe9b9d142517220607
User 02 DB
User 03
0003
Tokyo
8d91cdcb8c373805981143223220607
User 03 DB
Você pode verificar o correto funcionamento do fluxo através dos logs disponíveis na plataforma.
Ative o fluxo e clique em "Execução manual". Aguarde o término da execução e verifique os logs. Observe que o "Context Finder" localiza as informações de contexto a cada vez que fluxo passa pelo loop.
Próximos Passos:
Crie um fluxo que recebe a chave de contexto a partir de uma informação externa.
O é acionado a cada 15 min.
O segundo parâmetro é uma chave de autenticação para acesso à Weather API. O acesso à API é público porém requer um registro prévio no onde é fornecida a key para ser utilizada como autenticação.
Insira os módulos ferramentais de conforme a imagem abaixo. Faremos a leitura dos dados meteorológicos e respectiva escrita no banco de dados para cada contexto.