> 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-docs-es/hablla/configuraciones/repositorio-rpo.md).

# Repositorio (RPO)

Próximamente

El **Repositorio (RPO)** es un recurso de Hablla destinado al almacenamiento y la gestión de **Clases y Scripts en JavaScript** que pueden utilizarse en las automatizaciones de tu workspace.

Su objetivo principal es permitir que lógicas más complejas sean **centralizadas y reutilizadas**, evitando que una misma implementación tenga que construirse y mantenerse individualmente en diferentes flujos.

{% hint style="warning" %}
El **Repositorio (RPO) es un recurso avanzado**, destinado principalmente a usuarios que tienen conocimientos en **JavaScript, APIs, integraciones entre sistemas y desarrollo**.

Si no tienes conocimientos técnicos en esas áreas, recomendamos que la creación o modificación de Clases y Scripts sea realizada por una persona calificada.
{% endhint %}

### ¿Cuándo utilizar el RPO?

El RPO es especialmente útil cuando una misma lógica necesita utilizarse en diferentes puntos de tu operación.

Un ejemplo común son las **integraciones con sistemas externos**.

Imagínate que diferentes flujos necesitan consultar o enviar información a un mismo sistema. Es posible construir toda la lógica necesaria individualmente dentro de cada flujo. Sin embargo, conforme aumenta la cantidad de automatizaciones, este enfoque también aumenta la complejidad de mantenimiento.

Sin una lógica centralizada, podríamos tener un escenario como:

```mermaid
flowchart LR
    A["Flujo A"] --> D["Integración"]
    B["Flujo B"] --> E["Integración"]
    C["Flujo C"] --> F["Integración"]
```

En ese escenario, si alguna regla de la integración se modifica, puede ser necesario actualizar individualmente cada uno de los flujos que tienen esa implementación.

Usando el RPO, determinadas lógicas pueden centralizarse y luego reutilizarse por las automatizaciones que las necesiten:

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

    RPO1 --> INT["Integración"]
    RPO2 --> INT
    RPO3 --> INT
```

De esta forma, parte de la lógica puede mantenerse en un único lugar y reutilizarse en diferentes procesos.

Algunos escenarios en los que el RPO puede utilizarse incluyen:

* Integraciones con sistemas externos;
* Consultas y envío de información a través de APIs;
* Tratamiento y transformación de datos;
* Reutilización de reglas o lógicas entre diferentes flujos;
* Centralización de funcionalidades utilizadas por diferentes automatizaciones.

### Clases y Scripts

Dentro de **Repositorio (RPO)**, encontrarás dos áreas principales: **Mis Clases** y **Mis Scripts**.

#### Clases

Las **Clases** permiten organizar funcionalidades que podrán reutilizarse en diferentes automatizaciones.

Una Clase puede concentrar diferentes acciones relacionadas con un mismo propósito. En una integración con un sistema externo, por ejemplo, una sola Clase podría concentrar funcionalidades responsables de consultar, crear o actualizar información.

De esta forma, diferentes flujos pueden utilizar estas funcionalidades sin necesidad de reproducir toda la implementación individualmente.

#### Mis Scripts

La sección **Mis Scripts** permite almacenar códigos JavaScript destinados a la ejecución de lógicas o acciones específicas dentro de las automatizaciones.

Mientras que las Clases son especialmente útiles para organizar y reutilizar conjuntos de funcionalidades, los Scripts pueden utilizarse para almacenar implementaciones más orientadas a una acción determinada.

<table><thead><tr><th width="201.862060546875">Recurso</th><th>Cuándo utilizar</th></tr></thead><tbody><tr><td><strong>Clases</strong></td><td>Cuando una lógica o conjunto de funcionalidades necesita organizarse y reutilizarse en diferentes automatizaciones.</td></tr><tr><td><strong>Scripts</strong></td><td>Cuando es necesario almacenar un código JavaScript destinado a una acción o lógica específica.</td></tr></tbody></table>

{% hint style="danger" %}
**Ten cuidado al modificar códigos existentes en el RPO.**

Las Clases y Scripts pueden ser utilizadas por diferentes automatizaciones de tu workspace. Por ese motivo, una modificación incorrecta en un código compartido puede afectar **diversos flujos y procesos de tu operación simultáneamente**.

Si no conoces la finalidad de una Clase o Script existente, no recomendamos realizar modificaciones o pruebas directamente en ese código.
{% endhint %}

## Cómo acceder al Repositorio (RPO)

### 1. Accede a la configuración del Workspace

Dentro de **Studio Hablla**, haz clic en el ícono de **engranaje**, ubicado en la esquina superior derecha de la pantalla.

### 2. Accede al Repositorio (RPO)

En el menú lateral izquierdo de la configuración, localiza y haz clic en la opción **Repositorio (RPO)**.

<figure><img src="https://4006966930-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>

Al acceder al repositorio, encontrarás las dos áreas disponibles:

* **Mis Clases:** presenta las Clases registradas en tu workspace;
* **Mis Scripts:** presenta los Scripts JavaScript almacenados en el workspace.

## Creando una Clase en el RPO (Avanzado)

{% hint style="warning" %}
La creación y edición de Clases requiere conocimientos en **JavaScript y desarrollo de software**. Esta documentación presenta el funcionamiento del recurso y las reglas necesarias para usar las Clases en el RPO, pero no tiene como objetivo enseñar programación o desarrollo en JavaScript.
{% endhint %}

### 1. Crea una nueva Clase

En el área de **Mis Clases** del Repositorio (RPO), crea una nueva Clase haciendo clic en el botón <kbd>**+ Nueva clase**</kbd> e ingresa un nombre para identificarla.

Al terminar de escribir el nombre de la Clase, el sistema añadirá automáticamente el prefijo "<kbd>**W\_**</kbd>" al nombre ingresado y transformará la primera letra en mayúscula.

Por ejemplo, si ingresas: "**`prueba`**" Hablla definirá el nombre de la Clase como: "**`W_Prueba`**"

### 2. Utiliza el nombre generado por Hablla en el código

El nombre mostrado por Hablla después de definir el nombre de la Clase deberá considerarse en tu implementación JavaScript.

Por ejemplo, si inicialmente ingresaste: "**`prueba`**" y Hablla registró la Clase como: "**`W_Prueba`**"

La declaración de la Clase en el código deberá utilizar ese mismo nombre:

```javascript
class W_Prueba {
    // ...
}
```

Por lo tanto:

<table><thead><tr><th width="264.7586669921875">Etapa</th><th>Nombre</th></tr></thead><tbody><tr><td><strong>Nombre ingresado en la creación</strong></td><td><code>prueba</code></td></tr><tr><td><strong>Nombre generado por Hablla</strong></td><td><code>W_Prueba</code></td></tr><tr><td><strong>Nombre declarado en el código</strong></td><td><code>W_Prueba</code></td></tr></tbody></table>

#### Video demostrativo de cómo crear una clase.

<figure><img src="https://4006966930-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" %}
El **el nombre declarado en el código debe corresponder al nombre final presentado por Hablla**.

El prefijo `W_` y la transformación de la primera letra en mayúscula se realizan automáticamente por la plataforma al definir el nombre, pero debe estar presente en la declaración de la Clase dentro del código.
{% endhint %}

### 3. Publica la Clase

Después de finalizar la creación y revisar el código de tu Clase, es necesario **publicarla** para que quede disponible para su uso en el workspace.

Para ello, haz clic en el botón "<kbd>**Publicar mis clases**</kbd>", ubicado en la esquina superior derecha de la sección Mis Clases.

Al hacer clic en ese botón, confirma la acción escribiendo la palabra de confirmación para continuar y, por último, haz clic en "<kbd>**Confirmar**</kbd>" para aplicar los cambios realizados.

> **⚠️ Importante**
>
> Siempre que realices un cambio en el código de una Clase, será necesario **volver a publicarla** para que la nueva versión quede disponible para su uso.

### Las Clases pueden utilizar otras Clases

Una Clase almacenada en el RPO también puede utilizar funcionalidades proporcionadas por otra Clase existente en el mismo entorno. Esto permite dividir responsabilidades y reutilizar funcionalidades sin tener que repetir la misma implementación.

Por ejemplo, una Clase responsable de cobros podría utilizar otra Clase encargada exclusivamente de la autenticación con el sistema externo:

```mermaid
flowchart LR
    A["Flujo"] --> B["Clase de Cobros"]
    B --> C["Clase de Autenticación"]
    C --> D["Sistema Externo"]
```

Esta estructura facilita la reutilización de funcionalidades, pero también crea una **dependencia entre las Clases**.

{% hint style="danger" %}
**Antes de editar o eliminar una Clase, verifica si es utilizada por otras Clases y/o flujos de automatizaciones del workspace.**

Una Clase puede funcionar como dependencia de otras implementaciones. Por lo tanto, un cambio puede afectar a otros códigos y flujos incluso aunque la Clase no parezca estar siendo utilizada directamente.
{% endhint %}

## Buenas prácticas al utilizar el RPO

Al tratarse de un recurso avanzado y capaz de impactar diferentes automatizaciones, recomendamos algunos cuidados durante su uso:

* Utiliza el RPO solo si tienes suficientes conocimientos técnicos para comprender el código que se está implementando o modificando;
* Antes de modificar una Clase o Script existente, verifica dónde se está utilizando ese recurso;
* Evita realizar pruebas directamente en códigos utilizados por automatizaciones en producción;
* Usa nombres que faciliten la identificación de la finalidad de las Clases y Scripts;
* Considera las dependencias entre Clases antes de realizar modificaciones o eliminaciones;
* Siempre que sea posible, valida los cambios antes de utilizarlos en procesos críticos de la operación.

{% hint style="info" %}
Si tu operación necesita una implementación en el RPO y tu equipo no tiene conocimientos técnicos para desarrollarla, recomendamos que la configuración sea realizada por un **profesional con experiencia en JavaScript, APIs e integraciones 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-docs-es/hablla/configuraciones/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.
