# Session Management

O **Session Management** implementa o gerenciamento de sessão tradicional e a sua função principal para construção de *pipelines* é bastante utilizada no armazenamento de dados semelhantes às variáveis em desenvolvimento tradicional.

## Parâmetros

Dê uma olhada nas opções de configuração do componente. Parâmetros suportados por [expressões *Double Braces*](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/double-braces/overview) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Operation</strong></td><td>Operação a ser executada (<em>Get Data, Put Data, Delete Data</em>).</td><td><em>Get Data</em></td><td><em>String</em></td></tr><tr><td><strong>Session Type</strong></td><td>Sessão para inserir o objeto especificado em <em>Fields</em> (Local ou Global).</td><td>Local</td><td><em>String</em></td></tr><tr><td><strong>Fields</strong></td><td>Objeto a ser especificado - ex. <em>body, data, id.</em></td><td>body, data, id</td><td><em>String</em></td></tr><tr><td><strong>Scoped</strong></td><td>Quando esta opção está habilitada, a sessão é isolada de outro subprocesso. Nesse caso, os subprocessos veem sua própria versão dos dados da sessão.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

## **Operation**

Esse componente pode ser configurado nas seguintes operações:

* **Get Data:** busca na sessão os objetos especificados no parâmetro **Fields**, que serão inseridos em seguida no corpo da solicitação.&#x20;
* **Put Data:** insere na sessão (Local ou Global) os objetos especificados no parâmetro **Fields***.*
* **Delete Data:** apaga da sessão os objetos especificados no parâmetro **Fields**.

## **Session Type**

### Local <a href="#local" id="local"></a>

Lida com uma sessão onde os valores armazenados estão disponíveis apenas no *pipeline* em execução corrente.               &#x20;

**Exemplo:** As *tags "body*" e *"data"* da etapa **Fields** são armazenadas na sessão **Local**.

### Global <a href="#global" id="global"></a>

Lida com uma sessão baseada no *token* JWT do usuário autenticado, permitindo que *pipelines* e execuções distintas tenham acesso seguro aos dados armazenados na sessão global do usuário.

Somente será permitido armazenar e acessar dados em sessão **Global** quando o *pipeline* possuir o [**REST Trigger**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/rest) ou o [**HTTP Trigger**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/triggers/web-protocols/http) e tiver o *token* JWT como critério de segurança.

Para executar um *pipeline* com esse critério de segurança, é necessário que você crie um *pipeline* de *login* e utilize o componente [**JWT**](https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/security/jwt) para obter um *token* JW&#x54;*.*

&#x20;        \
**Exemplo**

* **Step Name:** Session-Management
* **Operation:** Get Data
* **Session Type:** Global
* **Fields:** object

## Fluxo de Mensagens <a href="#fluxo-de-mensagens" id="fluxo-de-mensagens"></a>

### Entrada <a href="#entrada" id="entrada"></a>

O componente aceita qualquer mensagem de entrada e pode fazer uso dela declarando os valores do JSON no campo **Fields**.

### Saída <a href="#sada" id="sada"></a>

O componente não altera nenhuma informação da mensagem de entrada. Portanto, ela é retornada para o componente seguinte ou é utilizada como resposta final se este componente for o último passo do *pipeline*.&#x20;

Ao manter a operação *Get Data* selecionada, os itens especificados no campo **Fields** serão adicionados à mensagem de saída (caso existam na sessão).
