> For the complete documentation index, see [llms.txt](https://docs.hablla.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hablla.com/hablla/configuracoes/repositorio-rpo.md).

# Repositório (RPO)

Em breve

O **Repositório (RPO)** é um recurso da Hablla destinado ao armazenamento e gerenciamento de **Classes e Scripts em JavaScript** que podem ser utilizados nas automações do seu workspace.

Seu principal objetivo é permitir que lógicas mais complexas sejam **centralizadas e reutilizadas**, evitando que uma mesma implementação precise ser construída e mantida individualmente em diferentes fluxos.

{% hint style="warning" %}
O **Repositório (RPO) é um recurso avançado**, destinado principalmente a usuários que possuem conhecimentos em **JavaScript, APIs, integrações entre sistemas e desenvolvimento**.

Caso você não possua conhecimento técnico nessas áreas, recomendamos que a criação ou alteração de Classes e Scripts seja realizada por uma pessoa qualificada.
{% endhint %}

### Quando utilizar o RPO?

O RPO é especialmente útil quando uma mesma lógica precisa ser utilizada em diferentes pontos da sua operação.

Um exemplo comum são as **integrações com sistemas externos**.

Imagine que diferentes fluxos precisam consultar ou enviar informações para um mesmo sistema. É possível construir toda a lógica necessária individualmente dentro de cada fluxo. Porém, conforme a quantidade de automações aumenta, essa abordagem também aumenta a complexidade de manutenção.

Sem uma lógica centralizada, poderíamos ter um cenário como:

```mermaid
flowchart LR
    A["Fluxo A"] --> D["Integração"]
    B["Fluxo B"] --> E["Integração"]
    C["Fluxo C"] --> F["Integração"]
```

Nesse cenário, caso alguma regra da integração seja alterada, poderá ser necessário atualizar individualmente cada um dos fluxos que possuem aquela implementação.

Utilizando o RPO, determinadas lógicas podem ser centralizadas e posteriormente reutilizadas pelas automações que precisarem delas:

```mermaid
flowchart LR
    A["Fluxo A"] --> RPO1["RPO"]
    B["Fluxo B"] --> RPO2["RPO"]
    C["Fluxo C"] --> RPO3["RPO"]

    RPO1 --> INT["Integração"]
    RPO2 --> INT
    RPO3 --> INT
```

Dessa forma, parte da lógica pode ser mantida em um único local e reutilizada em diferentes processos.

Alguns cenários em que o RPO pode ser utilizado incluem:

* Integrações com sistemas externos;
* Consultas e envio de informações através de APIs;
* Tratamento e transformação de dados;
* Reutilização de regras ou lógicas entre diferentes fluxos;
* Centralização de funcionalidades utilizadas por diferentes automações.

### Classes e Scripts

Dentro do **Repositório (RPO)**, você encontrará duas áreas principais: **Minhas Classes** e **Meus Scripts**.

#### Classes

As **Classes** permitem organizar funcionalidades que poderão ser reutilizadas em diferentes automações.

Uma Classe pode concentrar diferentes ações relacionadas a uma mesma finalidade. Em uma integração com um sistema externo, por exemplo, uma única Classe poderia concentrar funcionalidades responsáveis por consultar, criar ou atualizar informações.

Dessa forma, diferentes fluxos podem utilizar essas funcionalidades sem a necessidade de reproduzir toda a implementação individualmente.

#### Meus Scripts

A seção **Meus Scripts** permite armazenar códigos JavaScript destinados à execução de lógicas ou ações específicas dentro das automações.

Enquanto as Classes são especialmente úteis para organizar e reutilizar conjuntos de funcionalidades, os Scripts podem ser utilizados para armazenar implementações mais direcionadas a uma determinada ação.

<table><thead><tr><th width="201.862060546875">Recurso</th><th>Quando utilizar</th></tr></thead><tbody><tr><td><strong>Classes</strong></td><td>Quando uma lógica ou conjunto de funcionalidades precisa ser organizado e reutilizado em diferentes automações.</td></tr><tr><td><strong>Scripts</strong></td><td>Quando é necessário armazenar um código JavaScript destinado a uma ação ou lógica específica.</td></tr></tbody></table>

{% hint style="danger" %}
**Tenha cuidado ao alterar códigos existentes no RPO.**

Classes e Scripts podem ser utilizados por diferentes automações do seu workspace. Por esse motivo, uma alteração incorreta em um código compartilhado pode afetar **diversos fluxos e processos da sua operação simultaneamente**.

Se você não conhece a finalidade de uma Classe ou Script existente, não recomendamos realizar alterações ou testes diretamente nesse código.
{% endhint %}

## Como acessar o Repositório (RPO)

### 1. Acesse as configurações do Workspace

Dentro do **Studio Hablla**, clique no ícone de **engrenagem**, localizado no canto superior direito da tela.

### 2. Acesse o Repositório (RPO)

No menu lateral esquerdo das configurações, localize e clique na opção **Repositório (RPO)**.

<figure><img src="https://1879311494-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrmxWrIrMauHcIrsuqfGq%2Fuploads%2F9FTgUYTnBlaNcKf6P4hg%2Frepositorio.png?alt=media&amp;token=e9034e71-d84c-401a-b5ed-444db1bffb65" alt=""><figcaption></figcaption></figure>

Ao acessar o repositório, você encontrará as duas áreas disponíveis:

* **Minhas Classes:** apresenta as Classes cadastradas no seu workspace;
* **Meus Scripts:** apresenta os Scripts JavaScript armazenados no workspace.

## Criando uma Classe no RPO (Avançado)

{% hint style="warning" %}
A criação e edição de Classes requer conhecimento em **JavaScript e desenvolvimento de software**. Esta documentação apresenta o funcionamento do recurso e as regras necessárias para utilização das Classes no RPO, mas não tem como objetivo ensinar programação ou desenvolvimento em JavaScript.
{% endhint %}

### 1. Crie uma nova Classe

Na área de **Minhas Classes** do Repositório (RPO), crie uma nova Classe clicando no botão <kbd>**+ Nova classe**</kbd> e informe um nome para identificá-la.

Ao terminar de digitar o nome da Classe, o sistema adicionará automaticamente o prefixo "<kbd>**W\_**</kbd>" ao nome informado e transformará a primeira letra em maiúsculo.

Por exemplo, se você informar: "**`teste`**" A Hablla definirá o nome da Classe como: "**`W_Teste`**"

### 2. Utilize o nome gerado pela Hablla no código

O nome apresentado pela Hablla após a definição do nome da Classe deverá ser considerado na sua implementação JavaScript.

Por exemplo, se você informou inicialmente: "**`teste`**" e a Hablla registrou a Classe como: "**`W_Teste`**"

A declaração da Classe no código deverá utilizar esse mesmo nome:

```javascript
class W_Teste {
    // ...
}
```

Portanto:

<table><thead><tr><th width="264.7586669921875">Etapa</th><th>Nome</th></tr></thead><tbody><tr><td><strong>Nome informado na criação</strong></td><td><code>teste</code></td></tr><tr><td><strong>Nome gerado pela Hablla</strong></td><td><code>W_Teste</code></td></tr><tr><td><strong>Nome declarado no código</strong></td><td><code>W_Teste</code></td></tr></tbody></table>

#### Vídeo demonstrativo de como criar uma classe.

<figure><img src="https://1879311494-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrmxWrIrMauHcIrsuqfGq%2Fuploads%2Fgt65gBaUaalYiZ0uiAGk%2F%5BDOCS%5D%20-%20Como%20criar%20uma%20Classe.gif?alt=media&amp;token=5b6d5236-69f9-4823-a908-02d3e62e0686" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
O **nome declarado no código deve corresponder ao nome final apresentado pela Hablla**.

O prefixo `W_` e a transformação da primeira letra em maiúsculo são transformados automaticamente pela plataforma ao definir o nome, mas deverá estar presente na declaração da Classe dentro do código.
{% endhint %}

### 3. Publique a Classe

Após finalizar a criação e conferir o código da sua Classe, é necessário **publicá-la** para que ela fique disponível para utilização no workspace.

Para isso, clique no botão "<kbd>**Publicar minhas classes**</kbd>", localizado no canto superior direito do da seção Minhas Classes.

Ao clicar nesse botão, confirme a ação digitando a palavra de confirmação para prosseguir e por fim clique em "<kbd>**Confirmar**</kbd>" para aplicar as alterações realizadas.

> **⚠️ Importante**
>
> Sempre que você realizar uma alteração no código de uma Classe, será necessário **publicá-la novamente** para que a nova versão fique disponível para utilização.

### Classes podem utilizar outras Classes

Uma Classe armazenada no RPO também pode utilizar funcionalidades disponibilizadas por outra Classe existente no mesmo ambiente. Isso permite dividir responsabilidades e reaproveitar funcionalidades sem precisar repetir a mesma implementação.

Por exemplo, uma Classe responsável por cobranças poderia utilizar outra Classe responsável exclusivamente pela autenticação com o sistema externo:

```mermaid
flowchart LR
    A["Fluxo"] --> B["Classe de Cobranças"]
    B --> C["Classe de Autenticação"]
    C --> D["Sistema Externo"]
```

Essa estrutura facilita a reutilização de funcionalidades, mas também cria uma **dependência entre as Classes**.

{% hint style="danger" %}
**Antes de editar ou excluir uma Classe, verifique se ela é utilizada por outras Classes e/ou fluxos de automações do workspace.**

Uma Classe pode funcionar como dependência de outras implementações. Portanto, uma alteração pode afetar outros códigos e fluxos mesmo que a Classe não pareça estar sendo utilizada diretamente.
{% endhint %}

## Boas práticas ao utilizar o RPO

Por se tratar de um recurso avançado e capaz de impactar diferentes automações, recomendamos alguns cuidados durante sua utilização:

* Utilize o RPO somente se possuir conhecimento técnico suficiente para compreender o código que está sendo implementado ou alterado;
* Antes de alterar uma Classe ou Script existente, verifique onde aquele recurso está sendo utilizado;
* Evite realizar testes diretamente em códigos utilizados por automações em produção;
* Utilize nomes que facilitem a identificação da finalidade das Classes e Scripts;
* Considere as dependências entre Classes antes de realizar alterações ou exclusões;
* Sempre que possível, valide alterações antes de utilizá-las em processos críticos da operação.

{% hint style="info" %}
Caso sua operação necessite de uma implementação no RPO e sua equipe não possua conhecimento técnico para desenvolvê-la, recomendamos que a configuração seja realizada por um **profissional com experiência em JavaScript, APIs e integrações entre sistemas**.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.hablla.com/hablla/configuracoes/repositorio-rpo.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
