---
title: "Conectores de Plataforma para el BPM Engine"
canonical: "https://onesaitplatform-es.refined.site/space/ruta/4053303319/Conectores%20de%20Plataforma%20para%20el%20BPM%20Engine"
format: markdown
---
> Macro (toc)

> ℹ️ Disponible desde Release 6.0.0

# Introducción

En esta release se ha creado un conector para el BPM Engine de Plataforma, que permitirá interactuar con el resto de elementos de plataforma, permitiendo:

- Hacer consultas sobre Entidades
- Realizar inserciones sobre Entidades
- Invocar APIs publicadas en el API Manager
- Invocar Dataflows

# ¿Cómo funciona?

El conector se basa en los Templates de Camunda, que nos permite usarlos en un diagrama BPMN de Camunda. A continuación se explica el funcionamiento de las plantillas.

A la hora de crear un diagrama de Camunda, al seleccionar un elemento aparecerá una opción en el menú lateral **Template**.

![image-20240223-103358.png](media://69f85a50-a571-4c44-8464-2bda8faa7647)

Al seleccionar el botón **+ Select** aparecerá un listado con los templates disponibles para ese tipo de elemento, en este listado aparecerán los distintos conectores con plataforma ,que nos permiten:

- Hacer consultas sobre Entidades
- Realizar inserciones sobre Entidades
- Invocar APIs publicadas en el API Manager
- Invocar Dataflows

![image-20240223-103618.png](media://9ee704de-799c-4464-a300-8243438ceac7)

Una vez seleccionado el template correspondiente, se cargarán automáticamente las propiedades que necesita ese elemento para conectar con Plataforma y que el usuario tendrá que rellenar para el correcto funcionamiento:

![image-20240223-103814.png](media://42012a77-2ed2-4e55-88a1-3627d9d15e91)

# ¿Cómo consultar datos de una Entidad?

> ℹ️ Previamente se habrá tenido que crear la Entidad que se quiere consultar y haberla asociado a un Digital Client de la Plataforma para poder obtener un token con el cual acceder a los datos.

Para consultar los datos de una Entidad tenemos que seleccionar la plantilla **Onesait Platform Query**

![image-20240228-142129.png](media://36a84658-4211-4737-9c0b-21e3cc106e51)

Vamos a ver el funcionamiento de esta plantilla con el siguiente ejemplo:

![image-20240228-142248.png](media://b8333d46-6eee-497b-9cd0-320c989caa98)

- **buildQuery: ***Service Task *de tipo *Java class *que construye de manera dinámica la clausula *where* de la consulta que vamos a lanzar contra la entidad y la almacena en la variable **where**.

![image-20240228-142553.png](media://dfa154f5-179f-4a84-9cc4-c2eede315109)

- **getCustomers**: *Service Task* que implementa el template *Onesait Platform Query* y realiza la consulta contra la entidad deseada. Hay que observar varias cosas en la configuración:
  - Cómo se recoje la variable *where* en el campo * Query* de manera parametrizada, lo que permite lanzar queries dinámicas. En el caso de querer una query estática basta con meter la query sin mas.
  - El campo *Platform enviornment* es opcional, en el caso de no especificarlo se utilizará el endpoint del entorno en el que se haya desplegado el proceso.
  - El resultado de la consulta se almacena en la variable **platformInstances** y generalmente será siempre un JSON array.

![image-20240228-142826.png](media://3a86a90f-a44d-4432-b93f-2dd2bc6f7a90)

- **customerAge**: evalúa la variable *platformInstances* y verifica el campo *age* con la siguiente expresión

![image-20240228-143259.png](media://c7e5b8d5-9b1b-4f83-8a17-24e1fac272f0)

```
${platformInstances.elements().get(0).prop("customer").prop("age").numberValue() >= 18}
```

- **over/under 18:** *User Task* que se queda esperando una acción del usuario.

### Visualizar la ejecución del proceso

Una vez desplegado el proceso en el BPM Engine, podemos lanzarlo y veremos lo siguiente:

![image-20240228-143657.png](media://c4c051ae-eed4-4b02-947b-5adf9c08e886)

![image-20240228-144035.png](media://b8c1aecc-6c91-44d9-9636-3a554784bfbd)

- Los datos de la consulta a la Entidad aparecen en la variable **platformInstances** en formato JSON
- La cláusula *where *creada dinámicamente almacenada en la variable **where**
- Al inspeccionar la variable *platformInstances* podemos comprobar que efectivamente se ha traido el dato que concuerda con la clausula *where*
- Se ha evaluado el JSON y el proceso está parado en **over 18, **lo que concuerda con los datos obtenidos de la entidad.

A continuación dejamos el BPMN del ejemplo:

# ¿Cómo insertar datos en una Entidad?

> ℹ️ Previamente se habrá tenido que crear la Entidad que se quiere consultar y haberla asociado a un Digital Client de la Plataforma para poder obtener un token con el cual acceder a los datos.

Para insertar datos de una Entidad tenemos que seleccionar la plantilla **Onesait Platform Insert**

![image-20240228-144543.png](media://42f7609a-3616-4f34-85af-56e688dc955b)

Vamos a ver el funcionamiento de esta plantilla con el siguiente ejemplo:

![image-20240229-083026.png](media://82c68096-9395-4327-b504-99d29111f934)

- **getData: ***Service Task *de tipo *Java class *que construye de manera dinámica los datos que se quieren insertar en la entidad en formato JSON y los almacena en la variable **data**.

![image-20240229-083148.png](media://676a54bb-fbd3-4113-b14d-c74ae003cc87)

- **insertTask**: *Service Task* que implementa el template *Onesait Platform Insert *y realiza la insercción de los datos en la entidad deseada. Hay que observar varias cosas en la configuración:
  - Cómo se recoje la variable *data *en el campo * Data *de manera parametrizada, lo que permite lanzar insercciones dinámicas. En el caso de querer una inserción de datos estáticos basta con meter el JSON sin mas en este campo.
  - El campo *Platform enviornment* es opcional, en el caso de no especificarlo se utilizará el endpoint del entorno en el que se haya desplegado el proceso.
  - El resultado de la insercción se almacena en la variable **platformIds, **donde tendremos los IDs de las instancias insertadas.

![image-20240229-083252.png](media://0eee63a5-9bbf-426e-8b2a-f97e381e931c)

- **doSomething:** *User Task* que se queda esperando una acción del usuario.

## Visualizar la ejecución del proceso

Una vez desplegado el proceso en el BPM Engine, podemos lanzarlo y veremos lo siguiente:

![image-20240229-083606.png](media://06e983db-c042-4894-9caa-0dc5ca7e9e74)

- Los datos de la inserción en la Entidad aparecen en la variable **platformIds** en formato JSON
- los datos creados dinámicamente almacenada en la variable **data**

A continuación dejamos el BPMN del ejemplo:

# ¿Cómo lanzar un Dataflow?

> ℹ️ Previamente se habrá tenido que crear el dataflow que se quiere lanzar

Para lanzar un dataflow tenemos que seleccionar la plantilla **Onesait Platform Dataflow**

![image-20240229-093613.png](media://4b90c123-63fd-4330-8448-08d30a5c3344)

Vamos a ver el funcionamiento de esta plantilla con el siguiente ejemplo:

![image-20240229-093636.png](media://97384c43-4830-4efd-954d-bd093380e8d2)

- **launchDataflow**: *Service Task* que implementa el template *Onesait Platform Dataflow *y lanza el Dataflow deseado. Hay que observar varias cosas en la configuración:
  - El campo *Platform enviornment* es opcional, en el caso de no especificarlo se utilizará el endpoint del entorno en el que se haya desplegado el proceso.
  - El campo **parameters** es opcional, en el caso de que el dataflow que se quiera lanzar requiera de algún parámetro se le podrá indicar al BPM en este campo en formato JSON. También puede parametrizarse con la nomenclatura *${parameters}* si queremos que los datos se monten dinámicamente.
  - El resultado de la ejecución del dataflow se almacena en la variable **dataflowResponse**.

![image-20240229-093745.png](media://20f25220-f104-4b6f-a00b-327de2757996)

- **doSomething:** *User Task* que se queda esperando una acción del usuario.

## Visualizar la ejecución del proceso

Una vez desplegado el proceso en el BPM Engine, podemos lanzarlo y veremos lo siguiente:

![image-20240229-094021.png](media://3cd14731-f1ea-4e37-9505-0af492d0374b)


![image-20240229-094145.png](media://98475b47-6aae-48c3-a8a2-1c2ed53a9e79)

- El resultado de la ejecución del dataflow se almacena en la variable **dataflowResponse **en formato JSON
- Si inspeccionamos la varibale *dataflowResponse* vemos que el dataflow se ha arrancado correctamente

A continuación dejamos el BPMN del ejemplo:

# ¿Cómo invocar un API de Plataforma?

> ℹ️ Previamente se habrá tenido que crear el API que se quiere lanzar

Para lanzar un API tenemos que seleccionar la plantilla **Onesait Platform API**

![image-20240229-165902.png](media://2cf83396-4324-4667-8015-50191a715dbb)

Vamos a ver el funcionamiento de esta plantilla con el siguiente ejemplo:

![image-20240229-165926.png](media://177cf5bf-db14-4eca-b35b-18e408beaea5)

- **launchAPI**: *Service Task* que implementa el template *Onesait Platform API *y lanza el APIdeseado. Hay que observar varias cosas en la configuración:
  - El campo *Platform enviornment* es opcional, en el caso de no especificarlo se utilizará el endpoint del entorno en el que se haya desplegado el proceso.
  - El campo **API Path** tiene que seguir la siguiente nomenclatura **/<version>/<api_identification>/<operation_path> **en el ejemplo vemos como parte del path está parametrizado con la expresión **${name}**
  - El campo **Body **es opcional, en el caso de que se quiera lanzar una operación con un body se le podrá indicar al BPM en este campo en formato JSON. También puede parametrizarse con la nomenclatura *${body}* si queremos que los datos se monten dinámicamente.
  - El resultado de la ejecución del dataflow se almacena en la variable **apiResponse**.

![image-20240229-170025.png](media://2d15300c-63b0-457d-a2a9-4af42db9a570)

- **doSomething:** *User Task* que se queda esperando una acción del usuario.

## Visualizar la ejecución del proceso

Una vez desplegado el proceso en el BPM Engine, podemos lanzarlo y veremos lo siguiente:


![image-20240229-170522.png](media://caa4cfa6-972b-4e6b-abc0-89b987627686)

- El resultado de la ejecución del dataflow se almacena en la variable **apiResponse **en formato JSON

A continuación dejamos el BPMN del ejemplo: