Saltar al contenido

Árboles COMMON

    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.

    Operaciones y Casos de Uso

    Á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):