# Fluxos Multicontexto

Os **"Fluxos Multicontextos"** permitem utilizar o mesmo fluxos para diversos contextos. Cada contexto possui os seu valores de variáveis de fluxo e suas próprias contas. Através dos fluxos multicontextos você pode ativar o mesmo fluxo para diversos parceiros, clientes ou usuários sendo possível especificar as contas de cada um. É uma forma simples de utilizar a mesma integração para entidades diferentes sob o controle de uma única conta.

***

### Definições <a href="#definicoes" id="definicoes"></a>

É mais simples explicar o **"Fluxo Multicontexto"** exemplificando um cenário onde precisamos executar o mesmo fluxo para duas contas diferente. Imagine que uma integração roda periodicamente e atualiza o banco de dados de um determinado cliente. Imagine agora que outro cliente gostaria de utilizar a mesma integração, mas precisamos guardar as informações no banco de dados deste outro cliente.

Através do **"Fluxo Multicontexto"** podemos utilizar o mesmo fluxo para executar a função para ambas empresas. É claro que precisaremos indicar ao fluxo:

* **Contexto**: Neste caso, teremos um contexto para cada cliente.
* **Chave do Contexto**: É a variável que permite identificar o contexto. Pode ser uma informação de identificador de cliente. Através dessa chave identificamos todas as variáveis e contas do contexto.
* **Variáveis de Contexto**: Podemos criar variáveis de fluxo que são configuradas por contexto. Ou seja, os valores dessas variáveis de fluxo são especificadas para cada cliente individualmente.
* **Contas de Contexto**: Podemos criar contas de acesso (Banco de Dados, API REST, etc) para cada contexto. Dessa forma, com o fluxo irá utilizar as contas específicas de um cliente quando estiver rodando no contexto desse cliente.

Um **"Fluxo Multicontexto"** tem pelo menos um **Localizador de Contexto** ou **Context Finder**. Durante a execução do fluxo invocamos o "**Context Finder"**&#x70;assando uma chave de identificação de contexto. O "**Context Finder"** tem por objetivo localizar o contexto a partir da chave fornecida. Uma vez localizado, o "**Context Finder"** devolve todos os valores de parâmetros e contas específicos daquele contexto. Os módulo subsequentes podem utilizar as variáveis e contas específicas de cada contexto.

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

***

### **Configurar um fluxo multicontexto**

A construção de um fluxo multicontexto deve seguir exatamente os mesmos passos de um fluxo convencional. Depois de testado, o fluxo convencional pode ser convertido em fluxo multicontexto.

1. [**\[ Passo 01 \]** Construa o fluxo convencional monocontexto](#passo-01-construa-o-fluxo-convencional-monocontexto)
2. [**\[ Passo 02 \]** Introduza o **Context Finder** no fluxo](#passo-02-introduza-o-context-finder-no-fluxo)
3. [**\[ Passo 03 \]** Selecione as **variáveis** que devem alterar de acordo com o contexto](#passo-03-selecione-as-variaveis-de-fluxo-que-devem-alterar-de-acordo-com-o-contexto)
4. [**\[ Passo 04 \]** Selecione as **contas** que devem alterar de acordo com o contexto](#passo-04-crie-os-contextos-e-as-suas-chaves)
5. [**\[ Passo 05 \]** Configure as contas de cada contexto](#passo-05-crie-os-contextos-e-as-suas-chaves)
6. [**\[ Passo 06 \]** Crie os contextos e suas chaves](#passo-06-crie-os-contextos-e-as-suas-chaves)
7. [**\[ Passo 07 \]** Configure os as variáveis de fluxo de cada contexto e atribua as contas](#passo-07-configure-os-as-variaveis-de-fluxo-de-cada-contexto-e-atribua-as-contas)
8. [**\[ Passo 08 \]** Logs de execução de fluxo multicontexto](#passo-08-execute-o-fluxo-multicontexto)

***

#### **Passo a Passo**

#### <mark style="color:blue;">Passo 01: Construa o fluxo convencional monocontexto</mark>

Construa o seu fluxo da forma convencional utilizando as variáveis de fluxo e as contas como se esse fluxo fosse atender a apenas um contexto.

<figure><img src="/files/1W1MofdRt0cCXxV5NxBY" alt=""><figcaption><p>Fluxo convencional monocontexto</p></figcaption></figure>

{% hint style="info" %}
Você pode definir um contexto padrão. Como sugestão, crie o fluxo convencional com as variáveis e as contas que serão utilizadas pelo contexto padrão.
{% endhint %}

#### <mark style="color:blue;">Passo 02:</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**Introduza o Context Finder no fluxo**</mark>

O Context Finder recebe uma chave e com ela encontra o conjunto de variáveis de fluxo e contas conectadas que deve ser utilizada na execução do fluxo.

Tipicamente o "**Context Finder"** fica no início da execução do fluxo, mas pode ficar localizado em qualquer posição dentro do mesmo. O importante é ele fique **antes** dos módulos que utilizam as variáveis de fluxo e contas conectadas que dependam do contexto.

Também é importante garantir que a informação da **chave** de contexto já esteja disponível para que ela possa ser passada ao "**Context Finder"**. Usualmente essa chave pode vir de um "[**Gatilho Webhook**](/skyone-studio/integracoes/fluxos/gatilhos/gatilhos-webhook-adicao-e-configuracao.md)**"** ou de uma chamada a uma API do **API Gateway**, mas pode vir de qualquer módulo, inclusive de uma variável de fluxo.

<figure><img src="/files/vEXCUgki0yvL1PyZDDUJ" alt=""><figcaption><p>Módulo Context Finder</p></figcaption></figure>

O módulo "**Context Finder"** necessita que operador forneça apenas a chave (**key**) que será utilizada para localizar o contexto. Especifique a variável que será utilizada como chave no campo **Identificador de contexto**.

<figure><img src="/files/LDp0o9Nf0hz6SfNQvgKO" alt=""><figcaption><p>Módulo Context Finder - Key</p></figcaption></figure>

#### <mark style="color:blue;">Passo 03:</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**Selecione as variáveis de fluxo que devem alterar de acordo com o contexto**</mark>

Você precisa indicar as variáveis que modificam de acordo com o contexto.

Para indicar que uma variável de fluxo também é de contexto, basta editar a variável em **Contextos → Variáveis** **→** **Adicionar variáveis**.

<figure><img src="/files/3YfVAbjuiHEi6ozJvQHs" alt=""><figcaption><p>Tela de configuração de uma nova variável</p></figcaption></figure>

Observe que todas as variáveis de fluxo criados em "**Contexto"** são movidas para uma nova aba exclusiva para esse tipo de variável, caso você visualize em "**Configurações"**.

<figure><img src="/files/CAJqTmyczsYAviDAZsRH" alt=""><figcaption><p>Configurações > Variáveis > Aba Contexto</p></figcaption></figure>

#### <mark style="color:blue;">Passo 04:</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**Selecione as contas que devem alterar de acordo com o contexto**</mark>

Você precisa indicar  as variáveis que modificam de acordo com o contexto. Todas as contas dos módulos que são executados depois do Context Finder podem ser especificadas.

{% hint style="warning" %}
Certifique-se que você introduziu o "**Context Finder"** no seu fluxo, caso contrário não conseguirá especificar as contas dependentes de contexto.
{% endhint %}

Revisite o fluxo que você criou e abra a configuração dos módulos que requerem contas conectadas, tais como os módulos de Bancos de Dados ou de API REST **que precisam de contas específicas por contexto**.

Observe que agora esses módulos permite que você especifique uma conta associada a um contexto. Selecione a opção para utilizar conta de contexto.

<figure><img src="/files/9c8c7QDQcnWXanI80nIm" alt=""><figcaption><p>Opção de utilizar contexto nesse componente</p></figcaption></figure>

Logo após a seleção, irá aparecer na tela a opção "**Configurar conta conectada de contexto"**:

<figure><img src="/files/gVq9LqJMhZQUEYCTc6sN" alt=""><figcaption><p>Configurar conta conectada de contexto</p></figcaption></figure>

{% hint style="info" %}
O **Skyone Studio** utiliza a conta original que você criou no **PASSO 01** e atribui essa conta ao contexto Padrão (**Default**).
{% endhint %}

Observe que nesse momento você pode criar outras contas de contexto, mas faremos isso em outro momento. Você pode clicar em "**Próximo"** para avançar à página de teste do módulo .

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

Observe que agora é possível selecionar a conta de contexto para executar o teste. Como não configuramos nenhum contexto até o momento, apenas a conta **Default** está disponível.

#### <mark style="color:blue;">Passo 05: Configure as contas de cada contexto</mark>

As contas de acesso continuam sendo configuradas da mesma forma. Você deverá configurar uma conta para cada contexto. Essas contas serão posteriormente referenciadas na edição do contexto.

{% hint style="info" %}
Todos os tipos de contas disponíveis no **Skyone Studio** podem ser acessadas pelos contextos.
{% endhint %}

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

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

Existe uma área específica de configuração dos contextos. Cada contexto corresponde a uma entidade diferente que possui as suas contas e suas variáveis específicas. Por exemplo, cada contexto pode corresponder a um cliente diferente com suas contas de acesso à bancos de dados e variáveis específicas de fluxo. Nesse passo, você deve criar os contextos e definir uma chave permite identificar cada contexto, como por exemplo, um identificador de cliente.

Selecione a opção "**Contexto"** na tela principal de edição do fluxo.

No modo de edição do Contexto você pode criar, editar e remover contextos. Na primeira vez que você acessa, apenas o contexto padrão (**Default**) está disponível. Você pode clicar em "**Adicionar contexto"** para adicionar um novo contexto.

<figure><img src="/files/KYjhtJ74VvZVNjCTrwWW" alt=""><figcaption><p>Edição de contextos</p></figcaption></figure>

Na criação de um novo contexto você pode definir um nome e uma chave (**key**) para o seu contexto. O nome é apenas uma referência para o operador localizar o contexto. A chave é a informação que será utilizada para localizar esse contexto. Funciona como um indexador e deve ser única para esse fluxo.

<figure><img src="/files/lx2nsC0Lxp8dXRiRiLfz" alt=""><figcaption><p>Criação de Contexto - Definição de Nome e Chave</p></figcaption></figure>

Ao salvar esse contexto, você poderá vê-lo na lista de contextos disponíveis.

#### <mark style="color:blue;">Passo 07:</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**Configure os as variáveis de fluxo de cada contexto e atribua as contas**</mark>

Nesse passo você configura as variáveis de fluxo e contas de cada contexto.

Clique sobre o lápis de edição do contexto que você quer editar.

<figure><img src="/files/Haq4lu3zVaF2kB2w80Ad" alt=""><figcaption><p>Edição de contexto</p></figcaption></figure>

Observe que agora você poderá editar as variáveis e contas conectadas do contexto selecionado. Todas as variáveis de fluxo que foram convertidas para **Context Parameter** para variáveis de contexto no **PASSO 02** aparecerão automaticamente para que você possa definir seus valores.

<figure><img src="/files/9KM7xlzn7rRETTwJH1Ak" alt=""><figcaption><p>Edição de parâmetros e contas de um contexto</p></figcaption></figure>

Da mesma forma as Contas Conectadas também podem ser definidas nesse passo. Clique em "**Contas Conectadas".**

<figure><img src="/files/w6omMBJfInSKigqeSbJb" alt=""><figcaption><p>Edição de Contexto - Contas Conectadas</p></figcaption></figure>

Você poderá definir qual conta será utilizada para cada um dos componentes que necessitam de contas conectadas por contexto. Você terá que executar essa função para cada um dos contextos que você criar.

#### <mark style="color:blue;">Passo 08:</mark> <mark style="color:blue;"></mark><mark style="color:blue;">**Execute o fluxo multicontexto**</mark>

Execute o fluxo da mesma maneira que você executa um fluxo convencional. Apenas garanta que a informação da chave seja fornecida corretamente ao "**Context Finder"**.

Os logs dos fluxos multicontexto possuem informações adicionais sobre a localização dos contextos e os valores obtidos em cada 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.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.
