# Exemplo: Multicontexto com API Gateway

Este exemplo ilustra a criação de um fluxo multicontexto a partir de chamadas em um API Gateway. Os contextos são informados através de dados fornecidos na chamada.

***

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

Essa integração visa disponibilizar as informações meteorológicas que estão armazenadas em um banco de dados Postgres através de uma chamada REST configurada no API Gateway do **Skyone Studio**. Vamos utilizar como base o banco de dados gerado a partir da integração Exemplo: [Multicontexto com Gatilho Temporal](/skyone-studio/integracoes/fluxos/gestao-dos-fluxos/flow-canva-configuracao-e-edicao-do-fluxo/fluxos-multicontexto/exemplo-multicontexto-com-gatilho-temporal.md).

Inicialmente essa integração será construído para acessar apenas um banco de dados para um único usuário. Em seguida, vamos estender a mesma integração para que múltiplos usuários possam acessá-la fornecendo apenas o seu ***userid***. Essa será a informação utilizada para identificarmos o contexto e, com isso, o **Skyone Studio** pode acessar o banco de dados correto de cada usuário.

<figure><img src="/files/7ezV8dkdd4X7ylnzyeph" alt=""><figcaption></figcaption></figure>

***

**Passos**

1. [**\[ Passo 01 \]** Crie o fluxo monocontexto original](#passo-01-crie-um-fluxo-monocontexto-original)
2. [**\[ Passo 02 \]** Insira a variável que definirá o contexto](#passo-02-insira-a-variavel-que-definira-o-contexto)
3. [**\[ Passo 03 \]** Insira o Context Finder](#passo-03-insira-o-context-finder)
4. [**\[ Passo 04 \]** Atualize o módulo Postgres para utilizar as contas de acesso de acordo com o Contexto](#passo-04-atualize-o-modulo-postgres-para-utilizar-as-contas-de-acesso-de-acordo-com-o-contexto)
5. [**\[ Passo 05 \]** Configure as contas de acesso ao Banco de Dados](#passo-05-configure-as-contas-de-acesso-ao-banco-de-dados)
6. [**\[ Passo 06 \]** Crie os contextos](#passo-06-crie-os-contextos)
7. [**\[ Passo 07 \]** Associe as contas aos contextos](#passo-07-associe-as-contas-aos-contextos)
8. [**\[ Passo 08 \]** Chame o fluxo com informação de contexto](#passo-08-chame-o-fluxo-com-informacao-de-contexto)

***

**Passo a Passo**

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

Esse fluxo é ativado por uma requisição através do API Gateway. A requisição deve conter no Query String apenas a quantidade de últimas amostras que serão recuperadas do banco de dados. A resposta contém as amostras bem com alguns dados de média de temperatura e humidade que são calculados pelo próprio **Skyone Studio**.

<figure><img src="/files/62sahHO8N9zAyRiIxBQm" alt=""><figcaption></figcaption></figure>

Chamada para acionar o fluxo:

```
https://myspace.apihml.integrasky.cloud/eZB6Hf/weather/v1/mylocation?n=100
```

Essa chamada dispara a recuperação dos últimos 100 registros armazenados no banco de dados do usuário. Esses registros são retornados, bem com a média das temperatura e da humidade.

#### <mark style="color:blue;">**Passo 02: Insira a variável que definirá o contexto**</mark>

Neste caso utilizaremos uma informação que virá na própria chamada da API para definir qual será o contexto. Para isso modificaremos o Query String do Gatilho API para que esteja preparado para receber o userid. Essa será a variável utilizadas para definir o contexto. Cada userid corresponderá a uma conta específica no banco de dados.

<figure><img src="/files/oPLCaiXzuJrbh5JbGp6l" alt=""><figcaption><p>userid como parte do Query</p></figcaption></figure>

Com essa modificação vamos utilizar uma informação externa para definir o contexto que será utilizado.

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

O "**Context Finder**" utilizará a variável de definição de contexto (***userid)*** para localizar a conta do banco de dados que será utilizada para recuperar os registros meteorológicos.

O Context Finder dever ser inserido logo após o Gatilho API para que possa utilizar a informação que vem na chamada do gatilho para identificar o contexto

<figure><img src="/files/weZSrFuSaz8cnrfzJcHN" alt=""><figcaption><p>Inserção do Context Finder</p></figcaption></figure>

E vamos indicar a informação do **userid**, que está dentro do query string, como parâmetro de identificação de contexto.

<figure><img src="/files/HT4kEU62RSGqViZLZDsd" alt=""><figcaption><p>userid como chave para o Context Finder</p></figcaption></figure>

#### <mark style="color:blue;">**Passo 04: Atualize o módulo Postgres para utilizar as contas de acesso de acordo com o contexto.**</mark>

Volte na configuração do módulo Postgres e ative a opção "**Utilizar contexto neste componente**".

Por padrão, o **Skyone Studio** utilizará a conta que já estava configurada como conta ***Default***.

<figure><img src="/files/Ly9Bbe9hfL4J8LdcfhiN" alt=""><figcaption><p>Reconfiguração para utilização de contas de acordo com contexto</p></figcaption></figure>

Você deve clicar em "**Próximo**". Selecione o contexto e execute um teste da nova configuração. Como você já tinha executado esse fluxo em **monocontexto**, o **Skyone Studio** utilizará a conta original como sendo a conta padrão.

<figure><img src="/files/cDNpq96X9HeCPOnudRub" alt=""><figcaption><p>Executando uma conta padrão</p></figcaption></figure>

#### <mark style="color:blue;">**Passo 05: Configure as contas de acesso ao banco de dados.**</mark>

Cada um dos contextos deverá ter a sua conta específica associada.

Crie as contas de banco de dados em **Configurações → Contas conectadas.**

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

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

Crie um contexto para cada usuário que for acessar o sistema.

A partir da página de edição de fluxo, clique em "**Contexto"**. Adicione quantos contextos forem necessários e especifique o valor da chave associada a cada contexto.

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

#### <mark style="color:blue;">**Passo 07: Associe as contas aos contextos**</mark>

Para cada um dos contextos associe a conta respectiva do módulo Postgres.

Em **Contexto**, edite cada um dos contextos. Selecione a aba **Contas Conectadas** e selecione a conta respectiva.

#### <mark style="color:blue;">**Passo 08: Chame o fluxo com informação de contexto**</mark>

Informe o userid na chamada da API que invoca o fluxo.

Em seu software de chamada de API especifique o valor do **userid**. Utilize um dos valores especificados na criação do contexto.

```
https://myspace.apihml.integrasky.cloud/eZB6Hf/weather/v1/mylocation?n=10&userid=0002
```

Observe que agora são fornecidos dois valores para a execução do fluxo. O valor de **n** especifica a quantidade de amostras que serão recuperadas e o valore de **userid** especifica o contexto e portanto qual banco de dados será selecionado.

Observe que podemos identificar o correto funcionamento do **Context Finder** através dos logs de execução.


---

# 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-api-gateway.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.
