# Exemplo: Multicontexto com Gatilho Temporal

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

***

### Definição do Fluxo <a href="#definicao-do-fluxo" id="definicao-do-fluxo"></a>

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** do **Skyone Studio**.

<figure><img src="/files/1aRXrK4DF4t6B4hkGHmw" alt=""><figcaption><p>Fluxo monocontexto original e multicontexto adaptado</p></figcaption></figure>

***

**Passos**

1. [**\[ Passo 01 \]** Crie o fluxo monocontexto original](#passo-01-crie-o-fluxo-monocontexto-original)
2. [**\[ Passo 02 \]** Crie as chaves de contexto](#passo-02-crie-as-chaves-de-contexto)
3. [**\[ Passo 03 \]** Crie o loop do fluxo](#passo-03-crie-o-loop-do-fluxo)
4. [**\[ Passo 04 \]** Insira o context finder](#passo-04-insira-o-context-finder)
5. [**\[ Passo 05 \]** Defina as variáveis de fluxo que mudam com o Contexto](#passo-05-defina-as-variaveis-de-fluxo-que-mudam-com-o-contexto)
6. [**\[ Passo 06 \]** Defina as contas que mudam com o Contexto](#passo-06-defina-as-contas-que-mudam-com-o-contexto)
7. [**\[ Passo 07 \]** Crie as contas de Contexto para o Banco de Dados](#passo-07-crie-as-contas-de-contexto-para-o-banco-de-dados)
8. [**\[ Passo 08 \]** Crie os contextos](#passo-08-crie-os-contextos)
9. [**\[ Passo 09 \]** Defina as variáveis e as contas dentro de cada Contexto](#passo-09-defina-as-variaveis-e-as-contas-dentro-de-cada-contexto)
10. [**\[ Passo 10 \]** Ative e rode o fluxo](#passo-10-ative-e-rode-o-fluxo)

***

**Passo a Passo**

#### <mark style="color:blue;">**Passo 01: Crie o fluxo monocontexto original**</mark>

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 multicontext&#x6F;**.**

{% hint style="warning" %}
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.
{% endhint %}

O fluxo original que vamos trabalhar se parece com o da figura abaixo

<figure><img src="/files/zEcDPvQWTms3C2ShNHf9" alt=""><figcaption><p>Store Weather Data - Monocontexto</p></figcaption></figure>

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.

O [**gatilho temporal**](/skyone-studio/integracoes/fluxos/gatilhos/gatilhos-temporais-adicao-e-configuracao.md) é acionado a cada 15 min.

<figure><img src="/files/r3I9r5V7qwg43Kw3DwXi" alt=""><figcaption><p>Gatilho Temporal</p></figcaption></figure>

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.

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 [site](https://www.weatherapi.com/) onde é fornecida a **key** para ser utilizada como autenticação.

<figure><img src="/files/9TtgBAVZC3ulY7UOPkRE" alt=""><figcaption><p>Weather API: Get Current Weather Data</p></figcaption></figure>

Os dados retornados pela *Weather API* são armazenados no Banco de Dados Postgres.

<figure><img src="/files/2RboS7gCvNpkgda5cVBl" alt=""><figcaption><p>Banco de Dados Postgres: Insert Weather Information</p></figcaption></figure>

#### <mark style="color:blue;">**Passo 02: Crie as chaves de contexto**</mark>

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"]`

<figure><img src="/files/qfHGWmEIlfZPH9NS4Eam" alt=""><figcaption><p>Definições de contexto</p></figcaption></figure>

#### <mark style="color:blue;">**Passo 03: Crie o loop do fluxo**</mark>

Vamos executar o mesmo procedimento para cada contexto. Para isso criaremos um loop definindo qual o trecho do fluxo será executado repetidas vezes.

Insira os módulos ferramentais de [**Loop For**](/skyone-studio/integracoes/fluxos/modulos-ferramentais/modulo-loop-for.md) conforme a imagem abaixo. Faremos a leitura dos dados meteorológicos e respectiva escrita no banco de dados para cada contexto.

<figure><img src="/files/bVNZGml0YHCNPVMLfr28" alt=""><figcaption></figcaption></figure>

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.

#### <mark style="color:blue;">**Passo 04: Insira o "Context Finder"**</mark>

Cada vez que o **Skyone Studio** percorrer o loop, um contexto diferente deverá ser utilizado. Para isso colocaremos o "**Context Finder"** dentro do loo&#x70;**.**

Insira o "**Context Finder"** conforme mostra a imagem seguir:

<figure><img src="/files/PLWFqybvPBGG5XDtYDq1" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/qcFPDRa4qJv3jRIpHsaB" alt=""><figcaption><p>Elemento do Loop For como chave de contexto</p></figcaption></figure>

#### <mark style="color:blue;">**Passo 05: Defina as variáveis de fluxo que mudam com o Contexto**</mark>

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".**

<figure><img src="/files/2tjgCNlKuqRna1Ym6GnH" alt=""><figcaption></figcaption></figure>

Caso você acesse por "**Configurações**", observe que estarão em "**Variáveis**", na aba "**Contexto**".

{% hint style="warning" %}
Não é possível mover uma variável de fluxo para a de contexto
{% endhint %}

<figure><img src="/files/53LvcF2cuBNcMnbDExdJ" alt=""><figcaption></figcaption></figure>

#### <mark style="color:blue;">**Passo 06: Defina as contas que mudam com o Contexto**</mark>

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**”.

<figure><img src="/files/Jq9lOWE9VLGbOXomfR6X" alt=""><figcaption></figcaption></figure>

Clique em "**Próximo"**. Você pode testar novamente o módulo e depois clique em "**Salvar"**.

{% hint style="info" %}
Observe que o **Skyone Studio** assume a conta que já estava configurada anteriormente como sendo parte do "**Contexto Default"**.
{% endhint %}

#### <mark style="color:blue;">**Passo 07: Crie as contas de Contexto para o Banco de Dados**</mark>

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.

<figure><img src="/files/HWBxpiXaaTUteT4pzSPO" alt=""><figcaption><p>Criação de Contas Conectadas para o Banco de Dados</p></figcaption></figure>

#### <mark style="color:blue;">**Passo 08: Crie os Contextos**</mark>

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"**.

<figure><img src="/files/gxeZDD8E7vcjcWVOIonx" alt=""><figcaption></figcaption></figure>

Repita a operação para criar o contexto **User 02** com a chave **0002**, o contexto **User 03** com a chave **0003**.

<figure><img src="/files/wxgfe4am6Bnl4MHJ8kYX" alt=""><figcaption></figcaption></figure>

#### <mark style="color:blue;">**Passo 09: Defina as variáveis e as contas dentro de cada contexto**</mark>

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.

<figure><img src="/files/oQRGX1QCgsUDjwfYpxqn" alt=""><figcaption><p>Edição de variáveis de Contexto</p></figcaption></figure>

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.

<figure><img src="/files/dSmV1XbegODI9xe6kxvl" alt=""><figcaption><p>Contas de Banco de Dados em Contexto</p></figcaption></figure>

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 |

#### <mark style="color:blue;">**Passo 10: Ative e rode o fluxo**</mark>

Você pode verificar o correto funcionamento do fluxo através dos logs disponíveis no **Skyone Studio**.

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.

<figure><img src="/files/PwZFXWztf99DNstWSMna" alt=""><figcaption></figcaption></figure>

***

**Próximos Passos:**

Crie um fluxo que recebe a chave de contexto a partir de uma informação externa.

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.skyone.cloud/skyone-studio/integracoes/fluxos/gestao-dos-fluxos/flow-canva-configuracao-e-edicao-do-fluxo/fluxos-multicontexto/exemplo-multicontexto-com-gatilho-temporal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
