--- title: "Conceptos clave" url: https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/ description: "Catalyst Circuits te ayuda a orquestar y automatizar flujos de trabajo y lógica, y a diseñar sus esquemas mediante una interfaz fácil de arrastrar y soltar." last_updated: 2026-08-17T12:16:04Z service: Serverless type: general --- # Conceptos clave Antes de aprender sobre la implementación de circuitos de Catalyst, es importante comprender algunos conceptos fundamentales en detalle. ### Componentes de un circuito El diseño del flujo de trabajo de un circuito de Catalyst contiene varios componentes que te ayudan a orquestar la lógica y el flujo de datos en él. #### Estados del circuito Un estado es una condición particular en la que se encuentra el circuito en un momento dado. Define una tarea o proceso específico que se ejecuta en esa etapa del circuito. Los estados del circuito se pueden agrupar ampliamente en dos categorías: * **Controles de flujo:** Los estados de control de flujo orquestan el flujo de la lógica y los datos en el circuito. Los siguientes estados de control de flujo están disponibles en los circuitos de Catalyst: * Pass * Branch * Parallel * Wait * Batch * Success * Failure * **Funcionales:** Los estados funcionales definen las operaciones reales que necesitan ser ejecutadas en el circuito. Los siguientes estados de control funcional están disponibles en los circuitos de Catalyst: * Function * Circuit Discutiremos cada uno de estos estados en detalle en la [siguiente sección](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#circuit-states-1). Un circuito transita de un estado al siguiente durante su ejecución de manera paso a paso. El flujo de lógica y datos ocurre entre cada estado en el circuito. Las siguientes propiedades existen en la configuración de cada estado: * **Estado anterior:** El estado que se transitó antes del estado actual * **Estado siguiente:** El estado que se transitará después del estado actual El inicio de un circuito está marcado por una clave llamada **Start**, y el final del circuito está marcado por una clave llamada **End**, en el [diagrama de flujo esquemático del circuito](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#circuit-states-1). En el código JSON del circuito, si un estado no menciona la clave `next`, es el último estado, y si un estado no se menciona como `next` en ningún otro estado, es el primer estado del circuito. Puedes consultar [esta sección](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#json-code) para un fragmento de código JSON de ejemplo. #### Entrada, salida y resultado Un circuito de Catalyst, en general, acepta una entrada cuando se inicia y proporciona una salida después de ejecutarse. Estos se llaman la entrada del circuito y la salida del circuito. * **Entrada del circuito:** Cuando inicias la [ejecución de un circuito](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#execute-a-circuit), necesitarás proporcionar una entrada al circuito como pares clave-valor en formato JSON. Dado que las funciones Basic I/O, que son los elementos funcionales de un circuito, procesan la entrada en formato JSON, la entrada del circuito admite lo mismo. Esta entrada proporcionada durante la iniciación se pasa al primer estado del circuito. * **Salida del circuito:** El JSON de entrada luego se procesa y se transita a través de los estados del circuito, según el diseño y la arquitectura de su flujo de trabajo. Después de que se ha transitado el último estado, Catalyst genera la salida final del circuito obtenida después de que su ejecución se completa. Puedes ver los registros e historial de ejecución detallados de cada ejecución desde la consola. Puedes manipular el JSON de entrada y proporcionar una entrada personalizada a cada estado para su procesamiento, o seleccionar una porción de la salida del procesamiento de cada estado para pasarla al siguiente estado según tus necesidades. También puedes incluir dinámicamente los resultados de un estado procesado al JSON de entrada y pasarlo. Esto se realiza mediante las siguientes propiedades de un estado del circuito: * **Ruta de entrada:** La ruta de entrada te permite seleccionar una porción de la entrada del estado y pasarla a la tarea del estado para su procesamiento. Por ejemplo, sea el JSON de entrada de un estado: ```json { name: Amelia Burrows gender: F age: 33 } ``` Si solo quieres enviar las variables `name` y `gender` como la entrada a un estado, digamos una función, puedes configurar la ruta de entrada de la función como `$.name,gender`. Esto se refiere a los objetos JSON `name` y `gender` como la ruta de entrada. Catalyst importa la biblioteca externa `JsonPath` para definir la ruta de entrada, la ruta de salida y la ruta de resultado de un estado en un circuito. Por lo tanto, puedes usar todas las expresiones soportadas por `JsonPath` en tus definiciones de rutas. Consulta esta [documentación de GitHub sobre la sintaxis de `JsonPath`](https://github.com/json-path/JsonPath). * **Ruta de salida:** La ruta de salida te permite seleccionar una porción de la salida del estado y pasarla al siguiente estado para su procesamiento. Por ejemplo, sea el JSON de salida de un estado: ```json [ 26, "John Kemper", { "streetAddress": "Sunshine Avenue", "city": "Austin", "postalCode": "630-0231" } ] ``` Puedes seleccionar solo los valores de los objetos `age` y `name` (26, John Kemper) de la salida para pasar al siguiente estado, configurando la ruta de salida del estado como `$.age,name`. * **Ruta de resultado:** La ruta de resultado te permite combinar partes de la entrada del estado y el resultado de la ejecución del estado, como la salida del estado. En otras palabras, puedes agregar el resultado del estado al JSON de entrada proporcionado al estado y modificar el JSON. Luego puedes pasar este JSON modificado como la salida del estado al siguiente estado para su procesamiento. Por ejemplo, sea una función en un circuito que procesa un JSON de entrada que contiene dos objetos llamados `presentDays` y `totalWorkingDays`. La salida del procesamiento de la función genera un nuevo valor que se asigna a una variable llamada `attendancePercentage` en su salida. Si quieres incluir el valor obtenido para `attendancePercentage` al JSON original, puedes proporcionar la ruta de resultado como `$.attendancePercentage`. El JSON se modificará entonces como: ```json [ 180, 200, 90 ] ``` Donde el valor para `presentDays` es 180, `totalWorkingDays` es 200 y `attendancePercentage` es 90. Ahora puedes pasar esta salida al siguiente estado para su procesamiento. > **Nota:** No todos los estados admiten estas tres propiedades. La siguiente sección proporciona detalles sobre las propiedades y la configuración específicas disponibles para cada estado. ### Estados del circuito Como se discutió anteriormente, los estados del circuito se pueden agrupar como estados de control de flujo o estados funcionales. Aprendamos sobre cada estado en detalle y las configuraciones disponibles para ellos. Esta es la vista _Builder View_ de un circuito. Esta sección muestra imágenes de las configuraciones disponibles para cada estado como referencia. Para conocer los pasos involucrados en la creación de un circuito y la adición de estados en él, consulta la [sección de Implementación](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/).  #### Function El estado de función es un elemento funcional que representa una función Basic I/O. Los estados de función son los elementos centrales de un circuito, donde se procesa una gran parte de la lógica. Todos los demás estados de control de flujo te ayudan a manipular y personalizar el procesamiento de las funciones en un circuito. Puedes ingresar nombres para todos los estados en un circuito, seleccionar su tipo y seleccionar sus estados siguientes mientras [configuras el circuito](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#configure-a-circuit) en la consola. Puedes eliminar un estado particular haciendo clic en **Delete State** debajo de la ventana de configuración. Cuando seleccionas un estado de función, puedes vincularlo con una función Basic I/O configurada en tu proyecto de Catalyst seleccionándola de la lista desplegable.  **Manejo de errores:** El estado de función admite el manejo de errores para gestionar errores que ocurren frecuentemente durante la ejecución de la función. Puedes configurar las acciones a tomar durante errores de **On TimeOut**, **On Authorization Failure** o **On Execution Failure**. Haz clic en la casilla de verificación de un error para habilitarlo. Los tres manejadores de errores admiten dos acciones predeterminadas: Retry y Fallback. Haz clic en **Retry** o **Fallback** para habilitarlos.  La opción de reintento asegura que la ejecución de la función se reintente si ocurre ese error particular. Puedes configurar las siguientes propiedades en el reintento: * **Delay:** Define la duración del tiempo de espera antes de intentar el primer reintento * **Attempt:** Define el número de intentos de reintento a realizar * **Step Delay:** Define la duración del tiempo de espera entre cada intento La opción de fallback se usa para establecer la acción a realizar cuando todos los reintentos fallan. Esto te permite elegir otro estado en el circuito al cual retroceder cuando los reintentos fallan. Selecciona un estado de la lista desplegable al cual retroceder. Ingresa la ruta del rastreo de error en _Result_ en la sintaxis de [`JsonPath`](https://github.com/json-path/JsonPath) al ingresar este valor. Si los intentos de reintento fallan, el circuito se establece al estado configurado aquí, y se genera el rastreo de error. Haz clic en **Save** para guardar el manejador. Los manejadores de errores de los tres errores predeterminados (On TimeOut, On Authorization Failure, On Execution Failure) tienen las mismas acciones y configuración. Además de estos manejadores de errores predeterminados, puedes definir errores personalizados y manejar las acciones que ocurren al recibir ese error. Puedes codificar la función para procesar el manejador de errores personalizado para un error específico que se encuentre. Haz clic en **Add Custom Error** en _Error Handling_ en la configuración del estado. Ingresa un nombre para el error personalizado en el encabezado de la ventana emergente. Puedes seleccionar **Error Code** o **Error Message** como el tipo de excepción. Proporciona un valor de excepción en ambos casos. Este será el mensaje de error o código que se muestra cuando ocurre el error.  Puedes habilitar y configurar tanto Retry como Fallback para un error personalizado, como los manejadores de errores predeterminados. Haz clic en **Save** después de configurarlo. Puedes eliminar un error personalizado haciendo clic en el **ícono de eliminar**.  Catalyst considera todos los códigos de estado HTTP de la serie 200 (200-299) como una ejecución exitosa para una función Basic I/O. Si la función devuelve un código de estado en su respuesta distinto de la serie 200, por ejemplo 502, Circuits verificará la configuración de manejo de errores de la función en busca de una coincidencia con un manejador de errores personalizado. Si se encuentra una coincidencia, se ejecutará la lógica configurada para él. Si el código de error no se ha manejado, la ejecución del circuito se considerará como un fallo. Si configuras un mensaje de error, puedes manejarlo como necesites en la lógica de la función. **Entrada/Salida:** Puedes configurar las rutas de entrada, salida y resultado de un estado de función, como se discutió [en esta sección](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#components-of-a-circuit). También puedes pasar y configurar parámetros individuales para ser pasados a una función desde esta sección. Puedes seleccionar un conjunto específico de parámetros del JSON de entrada del circuito para ser pasados a la función usando la ruta de entrada. Por ejemplo, sea el JSON de entrada pasado a un circuito: ```json "personalDetails":{ "name":"Patricia Boyle", "age" : 26, "address":"13, Orchid Lane, NY" }, "company":"Zylker Corporation", "empDetails":{ "department":"Sales", "designation":"Sales Manager" } ``` Si necesitas pasar toda la entrada a una función configurada en el circuito como su [payload](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#execution-history-of-a-circuit), puedes [pasarla al circuito](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#configure-a-circuit) de la manera predeterminada, al iniciar el circuito. Los pares clave-valor en esta entrada se pasarán como los parámetros de la función automáticamente. Si solo necesitas que se pase un cierto conjunto de parámetros a la función, puedes configurar la clave del conjunto de parámetros en la ruta de entrada. Por ejemplo, para pasar solo los parámetros `company` y `empDetails`, puedes proporcionar la ruta de entrada a la función como: $.company,empDetails usando la sintaxis de [`JsonPath`](https://github.com/json-path/JsonPath).  También puedes elegir parámetros individuales para ser pasados a la función usando la opción _Parameters_. Esta opción también te permite pasar valores adicionales a la función que no están presentes en el JSON de entrada del circuito. Haz clic en **Add Parameters** para agregar un parámetro y un valor.  Por ejemplo, puedes elegir pasar solo el nombre y la designación a la función como parámetros configurando `name` y `designation` como las claves de los parámetros e ingresando sus rutas en la sintaxis de [`JsonPath`](https://github.com/json-path/JsonPath) como valores de los parámetros. Puedes eliminar un parámetro haciendo clic en **Remove**. La [respuesta de una función Basic I/O de Catalyst](https://docs.catalyst.zoho.com/es/serverless/help/functions/basic-io/) entrega la salida de la función usando la clave `output`. Cuando configuras una función en un circuito, no necesitas proporcionar la clave `output` explícitamente en la ruta de salida o la ruta de resultado de la función. Catalyst lo maneja de manera predeterminada y entrega el valor de salida automáticamente. Si el circuito está configurado para pasar la salida de la función al siguiente estado, Catalyst pasa automáticamente la salida como el payload sin configuraciones adicionales. Por ejemplo, esta salida JSON de una función, ```json [ 180, 90 ] ``` se pasa como la entrada JSON al siguiente estado en el circuito como el payload durante la ejecución del circuito. El [registro de ejecución](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#execution-history-of-a-circuit) del circuito proporciona enlaces a la función que se ejecutó y a [Catalyst Logs](https://docs.catalyst.zoho.com/es/devops/help/logs/introduction/) que contiene el registro de esa función específica, para un estado de función. #### Circuit El estado de circuito es una representación de un circuito anidado. Puedes procesar otro circuito dentro del circuito principal. Cuando se activa un estado de circuito, el circuito hijo se ejecuta como está configurado en Catalyst Circuits. También puedes tener circuitos anidados dentro de un circuito hijo. Esto te permite configurar circuitos simples e independientes para diferentes propósitos y anidarlos entre sí, en lugar de configurar un circuito complejo para un patrón de flujo de trabajo complicado. Puedes seleccionar el circuito hijo usando su [nombre de referencia](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#create-a-circuit) del cuadro desplegable _Circuit Name_ en un estado de circuito. También podrás seleccionar el propio circuito padre para un estado de circuito. Esto ejecuta el mismo circuito en un bucle, cuya lógica puedes configurar.  El estado de circuito también admite manejadores de errores predeterminados y manejadores de errores personalizados, como el estado de función. Sin embargo, a diferencia del estado de función, el estado de circuito solo tiene una acción para su manejador de errores predeterminado o personalizado: Retry. Consulta la [sección de Function](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#function) para información sobre reintentos y manejadores de errores personalizados.  Puedes escribir tu propia lógica para las acciones a realizar si todas las operaciones de reintento fallan. Por ejemplo, puedes codificar que el circuito se vuelva a ejecutar, o terminarlo y enviar una notificación sobre el problema. Puedes manipular los datos JSON que se pasan a través del estado de circuito configurando su ruta de entrada, ruta de salida o la ruta de resultado, como se describió en la [sección anterior](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#components-of-a-circuit) y en el [estado de Function](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#function).  El [registro de ejecución](https://docs.catalyst.zoho.com/es/serverless/help/circuits/implementation/#execution-history-of-a-circuit) del circuito también proporciona un enlace al registro del circuito anidado para fácil referencia. #### Pass El estado pass es un estado de control de flujo que permite que los datos de un circuito pasen de un estado a otro. De manera predeterminada, simplemente pasa los datos JSON de entrada de su estado anterior a su estado siguiente.  Puedes manipular los datos JSON que se pasan a través de un estado pass configurando su ruta de entrada, ruta de salida o la ruta de resultado, como se describió en la [sección anterior](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#components-of-a-circuit). Por ejemplo, puedes seleccionar solo una porción de los datos JSON para pasarla a su siguiente estado configurando su ruta de entrada. El estado pass también tiene una nueva propiedad llamada **result** además de las rutas de entrada, salida y resultado. Esta no está disponible para ningún otro estado.  La propiedad result te permite agregar un nuevo objeto al JSON y pasar el JSON modificado al siguiente estado. Por ejemplo, en un JSON de entrada que contiene los objetos `name`, `age` y `gender`, puedes agregar un nuevo parámetro llamado `location` como `$.location` en la ruta de resultado del estado pass. Puedes ingresar el valor para location en el cuadro de result. El JSON modificado entonces contendrá los objetos `name`, `age`, `gender` y `location`. #### Branch El estado branch te permite establecer condiciones en el flujo de trabajo del circuito y ejecutar tareas basadas en esas condiciones. Puedes crear ramificaciones en el flujo del circuito si los datos de entrada cumplen un conjunto específico de criterios, y ejecutar diferentes estados en cada rama. Por ejemplo, supón que la salida del estado anterior a una ramificación en un circuito genera los valores para un objeto JSON `status` como `complete` o `incomplete`. Si el `status` es `complete`, necesitas que el circuito transite a un [estado de éxito](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#success). Si el `status` es `incomplete`, necesitas que el circuito transite a un [estado de fallo](https://docs.catalyst.zoho.com/es/serverless/help/circuits/key-concepts/#failure). Para lograr este resultado, puedes agregar una condición como `$.status == 'complete'` y configurar el 'Go To' a un estado de éxito. De manera similar, puedes agregar otra condición como `$.status=='incomplete'` y establecerla a un estado de fallo.  Puedes agregar una condición haciendo clic en **Add Condition**, luego puedes ingresar la condición y seleccionar el siguiente estado de esa rama. Configura ese estado como el tipo que necesites. Puedes eliminar una condición haciendo clic en **Remove**. Los siguientes operadores son soportados por Catalyst para las sentencias condicionales en el estado branch:
| Operadores | Descripción |
|---|---|
| == | El lado izquierdo es igual al derecho (nota que 1 no es igual a '1') |
| != | El lado izquierdo no es igual al derecho |
| < | El lado izquierdo es menor que el derecho |
| <= | El lado izquierdo es menor o igual al derecho |
| > | El lado izquierdo es mayor que el derecho |
| >= | El lado izquierdo es mayor o igual al derecho |
| =~ | El lado izquierdo coincide con la expresión regular [?(@.name =~ /foo.*?/i)] |
| in | El lado izquierdo existe en el derecho [?(@.size in ['S', 'M']) |
| nin | El lado izquierdo no existe en el derecho |
| size | El tamaño del lado izquierdo (arreglo o cadena) debe coincidir con el derecho |
| empty | El lado izquierdo (arreglo o cadena) debe estar vacío |
| Función | Descripción | Salida |
|---|---|---|
| min() | Proporciona el valor mínimo de un arreglo de números | Double |
| max() | Proporciona el valor máximo de un arreglo de números | Double |
| avg() | Proporciona el valor promedio de un arreglo de números | Double |
| stddev() | Proporciona el valor de desviación estándar de un arreglo de números | Double |
| length() | Proporciona la longitud de un arreglo | Integer |
| sum() | Proporciona el valor de la suma de un arreglo de números | Double |
https://project_domain_name.environment_type.zohocatalyst.com/baas/v1/project/_project_ID_/circuit/circuit_ID/execute
Esta URL debe invocarse con el método HTTP `POST`. El `project\_domain\_name` es el [nombre de dominio](https://docs.catalyst.zoho.com/es/getting-started/set-up-a-catalyst-project/environment-settings/) de tu proyecto. El `environment\_type` es `development`, si estás trabajando en el [entorno de desarrollo](https://docs.catalyst.zoho.com/es/deployment-and-billing/environments/introduction/). De lo contrario, el `environment\_type` no está presente en la URL.