El alcance funcional de los árboles tipo COMMON se detalla a continuación.
Funcionamiento externo
Respecto a su funcionamiento externo, los árboles de tipo COMMON sólo permiten 1 transacción por cada sesión, es decir, la sesión iniciada al ejecutarse el árbol desde el exterior es finalizada al término de la transacción.
Esto se muestra en la siguiente figura.
															Capacidades internas
Respecto a sus capacidades internas, los nodos que disponibiliza son los siguientes:
| Nombre | Tipo | Descripción | |
|---|---|---|---|
| Básicos | |||
![]()  | 
Inicio | Inicio | Define inicio de lógica | 
![]()  | 
OK | Final | Termina flujo y entrega respuesta al ente externo | 
![]()  | 
NOK | Final | Termina flujo y entrega respuesta al ente externo | 
![]()  | 
Bifurcación | Intermedio | Bifurca el flujo basado en criterio configurado | 
| Integracion | |||
![]()  | 
Invoca Árbol Sync | Intermedio | Invoca sincronamente a otro arbol | 
![]()  | 
Invoca Árbol Async | Intermedio | Invoca asincronamente a otro arbol | 
![]()  | 
Conexión Externa | Intermedio | Integración REST o SOAP con plataformas externas | 
| Scripting | |||
![]()  | 
Javascript | Intermedio | Ejecuta script previamente creado | 
| Buckets | |||
![]()  | 
Almacenamiento | Intermedio | Almacena elemento en bucket | 
![]()  | 
Consulta | Intermedio | Consulta elemento de buckets | 
![]()  | 
Actualización | Intermedio | Modifica un elemento de bucket | 
![]()  | 
Eliminación | Intermedio | Elimina un elemento de bucket | 
A continuación se muestra un ejemplo de un árbol de tipo COMMON, en el que se muestra el nodo inicio y 3 nodos finales (2 NOK y 2 OK), Adicionalmente, se utilizan algunos nodos intermedios.
															Ejemplo Árbol inicial
Cada nueva suscripción en la plataforma Reevolute Builder viene configurada con un árbol inicial que permite realizar pruebas y entender el funcionamiento general de la plataforma.
Este árbol sólo utiliza 5 de los 12 nodos disponibles en los árboles COMMON, estos son los siguientes:
| Nombre | Tipo | Descripción | |
|---|---|---|---|
![]()  | 
Inicio | Inicio | Define inicio de lógica | 
![]()  | 
OK | Final | Termina flujo y entrega respuesta al ente externo | 
![]()  | 
NOK | Final | Termina flujo y entrega respuesta al ente externo | 
![]()  | 
Bifurcación | Intermedio | Bifurca el flujo basado en criterio configurado | 
![]()  | 
Conexión Externa | Intermedio | Integración REST o SOAP con plataformas externas | 
Para el uso del nodo «Conexión Externa» se aprovecha un servicio de prueba externo llamado «Users» (REST) que expone varias operaciones de consulta y modificación de información. Este servicio externo de prueba está configurado internamente con las siguientes operaciones y casos de uso:
| Servicio externo "Users" | ||
|---|---|---|
| Operaciones | Casos de Uso | Descripción | 
| list users | all | Lista todos los usuarios | 
| sleep | Lista todos los usuarios retrasando la respuesta en N-milisegundos | |
| filter by name | Lista todos los usuarios que poseen un cierto nombre | |
| get user | user content | Muestra la información de un usuario | 
| update user | patch | Modifica parte de la información de un usuario | 
| modify user | put | Modifica toda de la información de un usuario | 
En el siguiente link se puede revisar con mayor detalle la configuración de las «Operaciones y Casos de Uso» realizadas para disponibilizar este servicio externo a nivel de los árboles.
Árbol Inicial "myFirstTree"
A continuación se puede apreciar el árbol inicial que utilizan los nodos mencionados.
| Input Árbol | Servicio externo "Users" | |||
|---|---|---|---|---|
| op | Operaciones | Casos de Uso | Descripción | |
| list_all | - | list users | all | Lista todos los usuarios | 
| list | name="nombre" | list users | filter by name | Lista todos los usuarios que poseen un cierto nombre | 
| list_sleep | sleep_time="milisegundos" | list users | sleep | Lista todos los usuarios retrasando la respuesta en N-milisegundos | 
| get | user_id="id usuario" | get user | user content | Muestra la información de un usuario | 
| update_name | user_id="id usuario"  name="nombre"  | 
update user | patch | Modifica parte de la información de un usuario | 
| modify | user_id="id usuario"  name="nombre" age="edad" address="direccion"  | 
modify user | put | Modifica toda de la información de un usuario | 
A continuación se muestran ejemplos de request y responses ejecución de los diferentes escenarios del árbol inicial. Para replicar estas ejecuciones se deberá utilizar las siguientes variables asociadas al tenant:
				
					$TENANT_ID: Identificador del Tenant
$TREE_ID:   Identificador del Arbol inicial
$RELEASE:   'test'
$API_KEY:   Clave asociada al tenant 
				
			
		Operación 'list_all'
REQUEST:
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"list_all"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "list users ok",
        "error_code": "0",
        "vars": {
            "error_message": "OK",
            "users": [
                {
                    "address": "New York",
                    "age": 26,
                    "id": 0,
                    "name": "Carlos",
                    "updated_at": "2023-08-18T21:50:52Z"
                },
                {
                    "address": "Toronto",
                    "age": 20,
                    "id": 1,
                    "name": "Carlos",
                    "updated_at": "2023-08-18T21:52:19Z"
                },
                {
                    "address": "London",
                    "age": 25,
                    "id": 2,
                    "name": "Jane",
                    "updated_at": "2023-08-18T20:45:47Z"
                },
                {
                    "address": "Tokyo",
                    "age": 25,
                    "id": 3,
                    "name": "Natsumi",
                    "updated_at": "2023-08-18T20:45:47Z"
                },
                {
                    "address": "Mumbai",
                    "age": 45,
                    "id": 4,
                    "name": "Linbaba",
                    "updated_at": "2023-08-18T20:45:47Z"
                }
            ]
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															Operación 'list'
REQUEST:
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"list", "name":"John"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "list users ok",
        "error_code": "0",
        "vars": {
            "error_message": "OK",
            "users": [
                {
                    "address": "New York",
                    "age": 25,
                    "id": 0,
                    "name": "John",
                    "updated_at": "2023-08-21T18:24:44Z"
                }
            ]
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															Operación 'list_sleep'
Todos los casos de uso del servicio externo «Users» están configurados con un Timeout de 10 segundos, lo que podemos utilizar con esta operación para obtener diferentes comportamientos del árbol.
REQUEST (sleep_time 5.000 mseg < timeout servicio 10 seg):
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"list_sleep", "sleep_time":"5000"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "list users ok",
        "error_code": "0",
        "vars": {
            "error_message": "undefined",
            "users": [
                {
                    "address": "New York",
                    "age": 25,
                    "id": 0,
                    "name": "John",
                    "updated_at": "2023-08-21T18:24:44Z"
                },
                {
                    "address": "Seoul",
                    "age": 35,
                    "id": 1,
                    "name": "Grace",
                    "updated_at": "2023-08-21T18:24:44Z"
                },
                {
                    "address": "London",
                    "age": 25,
                    "id": 2,
                    "name": "Jane",
                    "updated_at": "2023-08-21T18:24:44Z"
                },
                {
                    "address": "Tokyo",
                    "age": 25,
                    "id": 3,
                    "name": "Natsumi",
                    "updated_at": "2023-08-21T18:24:44Z"
                },
                {
                    "address": "Mumbai",
                    "age": 45,
                    "id": 4,
                    "name": "Linbaba",
                    "updated_at": "2023-08-21T18:24:44Z"
                }
            ]
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															REQUEST (sleep_time 15.000 mseg > timeout servicio 10 seg):
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"list_sleep", "sleep_time":"15000"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "error executing request",
        "error_code": "1",
        "vars": {
            "error_message": "undefined",
            "http_status": "undefined"
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															Operación 'get'
REQUEST:
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"get", "user_id":"1"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "get user ok",
        "error_code": "0",
        "vars": {
            "address": "Seoul",
            "age": "35",
            "error_message": "OK",
            "id": "1",
            "updated_at": "2023-08-21T18:24:44Z",
            "user_name": "Grace"
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															Operación 'update_name'
REQUEST:
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"update_name", "user_id":"1", "name":"jack"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "update user name ok",
        "error_code": "0",
        "vars": {
            "address": "Seoul",
            "age": "35",
            "id": "1",
            "updated_at": "2023-08-21T18:33:58Z",
            "user_name": "jack"
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															Operación 'modify'
REQUEST:
				
					curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer $API_KEY' \
-d '{"type":"sync","parameters":{"operation":"modify", "user_id":"1", "name":"jack", "age":"35", "address":"Colon 1942"}}' \
https://probe.api.reevolute.com/v2/tenants/$TENANT_ID/trees/$TREE_ID/releases/$RELEASE/executions
 
				
			
		RESPONSE:
				
					{
    "tree_version": "1",
    "response_type": "COMMON",
    "data": {
        "description": "update user name ok",
        "error_code": "0",
        "vars": {
            "address": "Colon 1942",
            "age": "35",
            "id": "1",
            "updated_at": "2023-08-21T18:57:20Z",
            "user_name": "jack"
        }
    }
} 
				
			
		REPORTE TRANSACCIONES (TRAZA):
															










