# Funciones -------------------------------------------------------------------------------- title: "Introducción" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.930Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/introduction/" service: "Serverless" -------------------------------------------------------------------------------- # Functions ### Introducción Functions es un componente de Catalyst Serverless que consiste en estructuras de código personalizadas que contienen la lógica de negocio intensiva de tu aplicación. Functions te permite almacenar la funcionalidad de la aplicación en un lugar centralizado y seguro, en lugar de almacenarla dentro del código principal de la aplicación. La aplicación usa APIs para invocar funciones desde los servidores de Catalyst cuando es necesario. Catalyst ofrece soporte para desarrollar funciones del lado del servidor en tres entornos de programación: 1. Java 2. Node.js 3. Python Puedes consultar la documentación del SDK de Java, la documentación del SDK de Node.js y la documentación del SDK de Python para aprender sobre estos paquetes SDK. Catalyst Functions es uno de los componentes básicos de proyecto de una aplicación de Catalyst, junto con el client. Puedes acceder sin problemas a los componentes de Catalyst con Functions y proporcionar el potente backend que la aplicación o microservicio requiere. Puedes usarlos para automatizar tareas, realizar cálculos intensivos en memoria, integrarte con servicios de terceros y más. Puedes crear cinco tipos de funciones del lado del servidor en Catalyst para diferentes propósitos. Los cinco tipos de funciones se pueden crear en los entornos de programación Java, Node.js y Python. * Basic I/O Functions: Funciones simples usadas para operaciones básicas de entrada y salida, pasando un String como parámetro de E/S * Advanced I/O Functions: Funciones HTTP avanzadas que soportan Headers, y objetos nativos de Request y Response * Event Functions: Funciones basadas en eventos que son invocadas por eventos específicos configurados usando Event Listeners * Cron Functions: Funciones basadas en Cron que se invocan una vez o periódicamente, según la programación configurada del cron job * Integration Functions: Funciones que te permiten integrarte con otros servicios de Zoho y escribir backends para ellos fácilmente Nota: * El archivo principal de la función en Java, Node.js y Python se inicializa con código predeterminado diferente para cada tipo de función, como la inclusión de diferentes módulos, cuando se crea la función. Por lo tanto, debes evitar copiar código de un tipo de función diferente. Debes asegurarte de inicializar los módulos apropiados para cada tipo de función. * Integration Functions actualmente no está disponible para usuarios de Catalyst que acceden desde los centros de datos de EU, AU, IN o CA. Catalyst proporciona varios componentes y herramientas para gestionar funciones y ver sus estadísticas de rendimiento: * **Security Rules:** Configuración de seguridad predeterminada de tus funciones Basic I/O y Advanced I/O que te permite definir sus reglas de invocación y acceso * **API Gateway:** Te permite crear APIs para tus funciones Basic I/O y Advanced I/O, y manejar el enrutamiento, la limitación de velocidad y la autenticación de las solicitudes del cliente * **Logs:** Proporciona logs de todas las ejecuciones de funciones junto con detalles de niveles de log, respuestas, estados y otra información * **Application Performance Monitoring:** Proporciona estadísticas detalladas y reportes de rendimiento de todas las ejecuciones de funciones que te permiten identificar y resolver errores * **Circuits:** Herramienta de automatización de flujos de trabajo que te permite diseñar y orquestar ejecuciones de funciones Basic I/O, y manejar el flujo de datos entre múltiples funciones Puedes trabajar con funciones usando el Catalyst CLI y un IDE externo, o trabajar con ellas directamente desde la consola web de Catalyst. Este documento explica los conceptos relacionados con las funciones y el trabajo con ellas desde la consola web de Catalyst. Para aprender sobre el trabajo con ellas en un entorno local, consulta la siguiente sección para enlaces a las páginas de ayuda relevantes del CLI. Nota: Las funciones de Catalyst en Java y Python solo se pueden crear y programar usando el Catalyst CLI y un editor externo, y desplegarse o subirse a la consola web. No puedes programarlas directamente en la consola web por el momento. ### Pasos para trabajar con Functions desde un entorno local Puedes crear, construir y desplegar una función desde el entorno local como se describe a continuación. Consulta los enlaces proporcionados en cada paso para obtener ayuda detallada sobre las acciones del CLI. 1. Inicializar la función desde el CLI: Cuando inicializas una función desde el CLI, se crean el directorio de la función y la estructura de código boilerplate para cada archivo según su stack, tipo y si elegiste instalar el SDK de Catalyst. 2. Configurar la función en tu directorio de proyecto en cualquier momento: Puedes elegir configurar la función en cualquier momento después de inicializar el proyecto desde el CLI. 3. Programar la función usando un editor externo: Si inicializas la función desde el CLI, puedes programarla usando un editor externo. También puedes subir el paquete de una función a la consola de Catalyst en cualquier momento y programarla usando el editor de Catalyst. 4. Probar la función en el CLI: Puedes probar y depurar funciones de todos los tipos, excepto las funciones Advanced I/O, lanzando un Node shell para ella desde el CLI. 5. Servir la función desde un host local: Además de lanzar un Node shell, también puedes servir una función Basic I/O o Advanced I/O desde un host local y probar su ejecución.<br /> Nota: No podrás servir funciones de los otros tipos, ya que se invocan internamente. 6. Desplegar la función en la consola de Catalyst: Luego puedes desplegar la función desde tu máquina local a la consola remota de Catalyst desde el CLI. 7. Eliminar la función desde el CLI: También puedes eliminar la función remotamente desde el CLI. Esto también la eliminará de la consola. Nota: * También puedes trabajar en una función de Catalyst de forma independiente sin inicializarla en el Catalyst CLI, y subirla directamente a la consola remota de Catalyst. En este caso, debes asegurarte de crear los archivos de configuración requeridos en el directorio de la función manualmente, e incluir el código necesario en ellos en la estructura estándar. Puedes consultar la página de ayuda de Estructura del Directorio del Proyecto para más detalles. * También puedes desplegar funciones en la consola remota de Catalyst desde tu repositorio de GitHub directamente. Para obtener más información, consulta la página de ayuda de Integración con GitHub. Consulta los tutoriales de Catalyst para practicar el trabajo con Functions. -------------------------------------------------------------------------------- title: "Stack de Functions" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.931Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/stack/" service: "Serverless" -------------------------------------------------------------------------------- # Stack de Functions Como se mencionó anteriormente, Catalyst soporta tres entornos de programación para desarrollar las funciones del lado del servidor: Java, Node.js y Python. ### Funciones Java Catalyst proporciona un rico SDK de Java que contiene clases y métodos que incluyen las definiciones de cada componente de Catalyst. Catalyst soporta las siguientes versiones de Java: * **Java 25** * **Java 21** * **Java 17** * **Java 11** * **Java 8** Cuando inicializas una función Java en el CLI, el SDK de Java se descargará e instalará en tu sistema local. Puedes aprender más sobre las clases Java y cómo escribir una función Java en detalle en la documentación del SDK de Java. También puedes descargar manualmente el paquete del SDK de Java desde la consola de Catalyst y agregarlo en el directorio de tu función. El directorio de una función Java se configura con tres componentes básicos por defecto, cuando inicializas la función: 1. El archivo principal de la función .java 2. El archivo de configuración catalyst-config.json 3. Los archivos de biblioteca JAR en una carpeta llamada lib Puedes aprender sobre estos en detalle en la **página de ayuda de Estructura del Directorio del Proyecto**. ### Funciones Node.js Catalyst proporciona un paquete SDK de Node.js eficiente que contiene métodos y otros elementos necesarios que definen el comportamiento de los componentes de Catalyst en el entorno Node.js. Catalyst soporta las siguientes versiones de Node.js: * **Node.js 24** * **Node.js 22** * **Node.js 20** * **Node.js 18** * **Node.js 16** * **Node.js 14** * **Node.js 12** (Este runtime ha alcanzado su EOL) El paquete SDK se instala como parte de la carpeta de node modules, que también contiene varios paquetes Node con archivos de biblioteca individuales, archivos de licencia y archivos de configuración, que son esenciales para la ejecución de tus funciones Node.js. Puedes aprender más sobre el paquete SDK de Node.js y cómo escribir una función Node.js en la documentación del SDK de Node.js. Cuando inicializas una función Node.js desde el CLI, o la creas desde la consola, puedes elegir incluir las dependencias de Node modules. Si creas la función sin las dependencias, el directorio de la función contendrá: 1. El archivo principal de la función .js 2. El archivo de configuración catalyst-config.json 3. package.json Si creas la función con dependencias, el directorio de la función contendrá: 1. El archivo principal de la función .js 2. El archivo de configuración catalyst-config.json 3. package.json 4. Node modules 5. package-lock.json Puedes aprender sobre estos en detalle en la página de ayuda de Estructura del Directorio del Proyecto. También puedes instalar manualmente el último paquete SDK de Node.js en cualquier momento ejecutando este comando CLI: npm install zcatalyst-sdk-node También puedes instalar una versión específica soportada de esta manera: npm install zcatalyst-sdk-node@2.1.1 ### Funciones Python Catalyst proporciona un paquete SDK de Python eficiente que contiene módulos y clases que definen el comportamiento de los componentes de Catalyst en el entorno Python. Catalyst soporta las siguientes versiones de Python: * **Python 3.13** * **Python 3.12** * **Python 3.11** * **Python 3.10** * **Python 3.9** Al inicializar una función Python, el paquete SDK de Python se instala automáticamente en el directorio de funciones de tu proyecto de Catalyst. Cuando se instala el paquete, se hace una entrada en el archivo requirements.txt presente dentro del directorio de funciones. Este archivo también contiene la lista de otras dependencias instaladas que son obligatorias para la ejecución de ciertos módulos y clases de Python. Puedes aprender más sobre el paquete SDK de Python y cómo escribir una función Python en detalle en la documentación del SDK de Python. El directorio de la función contendrá los siguientes archivos: 1. El archivo de función main.js 2. El archivo de configuración catalyst-config.json 3. requirements.txt Puedes aprender sobre estos en detalle en la página de ayuda de Estructura del Directorio del Proyecto. También puedes instalar manualmente el paquete SDK de Python en cualquier momento ejecutando este comando CLI: pip install zcatalyst-sdk -------------------------------------------------------------------------------- title: "Funciones Basic I/O" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.932Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/basic-io/" service: "Serverless" -------------------------------------------------------------------------------- # Funciones Basic I/O ### Introducción Las funciones Basic I/O se usan para realizar operaciones básicas de entrada y salida, cálculos y operaciones HTTP simples entre los diversos componentes de Catalyst. Las funciones Basic I/O procesan entradas y salidas en formato JSON. El endpoint de una función Basic I/O es directamente accesible a través de su URL de Function. La URL de la función se genera cuando se crea la función, y te permite acceder directamente a la función y probarla en diferentes condiciones. Puedes crear una función Basic I/O desde la consola de Catalyst, programarla y probarla allí, o usar el CLI para inicializar la función y desplegarla en la consola después de probarla. El CLI también te permite probar funciones Basic I/O a través de un Node shell o sirviendo la función a través de un localhost. Puedes usar varias herramientas para gestionar tus funciones Basic I/O y ver sus estadísticas de rendimiento como Logs, Application Performance Monitoring o API Gateway, como se menciona en la página de introducción de Functions. Puedes consultar este tutorial para practicar el trabajo con funciones Basic I/O. <br /> ### Estructura de la función El archivo principal de la función en Java, Node.js y Python se inicializa con código y módulos predeterminados diferentes para cada tipo de función, cuando se crea la función. Como se menciona en la sección Stack de Functions, la estructura de una función Java, Node.js o Python generalmente contiene un archivo principal de la función junto con dependencias y archivos de configuración. Al crear la función Basic I/O en el entorno Node.js, puedes elegir crearla con o sin el SDK de Node.js de Catalyst. Si la incluyes sin el SDK, los módulos Node y otros archivos de dependencias de Node no se agregarán. Consulta la página de ayuda de Estructura del Directorio del Proyecto para detalles sobre la estructura genérica del directorio de funciones y los archivos de configuración de las funciones de Catalyst. Antes de discutir los módulos que contiene un archivo principal de función Java, Node.js o Python, veamos el código predeterminado con el que se inicializa la función. Catalyst inicializa una función Basic I/O de Java con el siguiente código predeterminado de una operación simple de entrada y salida. <br /> Una función Basic I/O de Node.js también incluye un código predeterminado que contiene una operación simple de entrada y salida. <br /> Una función Basic I/O de Python incluye el siguiente código predeterminado que contiene una operación simple de entrada y salida. def handler(context, basicio): basicio.write('Hello from {{_MAIN_}}') basicio.get_argument('name') context.log('Successfully executed basicio function') context.close() ### Módulos de Java, Node.js y Python Una función Basic I/O de Catalyst contiene dos módulos en las plataformas Node.js y Python: context y basicIO. El módulo context en Node.js y Python incluye los siguientes métodos integrados: 1. context.close(): Para indicar el fin de la función. Debes usar esto al final de la función. 2. log(*args): Este método se usa para imprimir el conjunto de argumentos pasados en la función. Para obtener el tiempo de ejecución restante y el tiempo máximo de ejecución de la función de evento, el módulo context incluye los siguientes métodos: **Node.js:** 1. context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una función. 2. context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una función, que es un valor constante de **30 segundos**. Nota: En Python, tenemos los métodos context.get_remaining_execution_time_ms() y context.get_max_execution_time_ms() para las funcionalidades mencionadas anteriormente respectivamente. El módulo basicIO en Node.js y Python incluye los siguientes métodos integrados: 1. basicIO.write(): Para imprimir la salida. Solo puedes obtener una salida de tipo String. Puedes usar este método en un solo lugar de la función. La memoria máxima soportada para la salida es 1MB. 2. basicIO.setStatus(): Método opcional para establecer un código de estado de error. Los códigos de estado predeterminados son: estado 200 para ejecuciones exitosas que devuelve la clave output, estado 500 para ejecuciones no exitosas que se envía al objeto de error y devuelve una respuesta JSON. También puedes establecer un código de estado personalizado. 3. basicIO.getArgument(): Para obtener los parámetros individuales de la función. Puedes pasarlos como una cadena de consulta en la URL o en un cuerpo JSON. Si los pasas de ambas formas, la cadena de consulta se considera como prioridad. Una función Basic I/O en Java contiene los mismos módulos y métodos integrados que Node.js y Python. Algunos métodos adicionales soportados en Java son: 1. context.getOrigin(): Para obtener el tipo de función 2. basicIO.getAllArguments(): Para obtener todos los parámetros de la función <br /> ### URL de Function Como se mencionó anteriormente, el endpoint de una función Basic I/O es directamente accesible a través de una URL de invocación única. Puedes invocarla manualmente a través de su URL, pasar entrada si es necesario y obtener la respuesta. Puedes implementar esta URL en el código de tu aplicación, o usarla según lo requieras. Esta URL de función se genera automáticamente cuando se crea la función. La URL de producción de una función Basic I/O tiene el siguiente formato: **https://project_domain_name.catalystserverless.com/server/function_name/execute** En el entorno de Development, la URL menciona la clave development como: **https://_project\_domain\_name_.development.catalystserverless.com/server/_function\_name_/execute** * _https://project\_domain\_name.catalystserverless.com_ es el App Domain de tu aplicación de Catalyst. * _/server_ indica que es una función. * La URL identifica la función por su nombre. * _/execute_ indica que es una función Basic I/O. Puedes obtener la URL de una función desde la consola, o en tu terminal después de desplegar la función desde el Catalyst CLI. Como Catalyst te permite probar funciones Basic I/O desde la consola, puedes agregar directamente las claves y valores para los parámetros en la función y probarla allí. Consulta la sección Trabajar con Functions desde la consola para más detalles. También puedes invocar la URL de Function a través de un navegador y pasar los parámetros como una cadena de consulta en la URL. Por ejemplo, en una función simple que obtiene un nombre y lo muestra, pasamos el valor para el parámetro llamado _name_ como una cadena de consulta e invocamos la URL. <br /> La salida de la función se muestra entonces en la ventana del navegador. <br /> ### Push a Logs Catalyst Logs muestra los logs de todas las ejecuciones de tus funciones junto con los detalles necesarios. Las ejecuciones de funciones se registran automáticamente en los logs. Sin embargo, también puedes enviar los datos de respuesta de la ejecución de una función Basic I/O a los logs manualmente. Catalyst te permite escribir hasta 1500 caracteres en los logs. También puedes enviar las respuestas a diferentes niveles de log individualmente, como a _Info_ o _Warning_. Los datos de respuesta de una función Basic I/O se pueden enviar a los logs usando el siguiente método: context.log(). Puedes ver esta instrucción en el código predeterminado con el que se inicializa una función Basic I/O, donde la entrada recibida del usuario se envía a los logs y el nivel del logger también se establece manualmente. -------------------------------------------------------------------------------- title: "Funciones Advanced I/O" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.933Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/advanced-io/" service: "Serverless" -------------------------------------------------------------------------------- # Funciones Advanced I/O ### Introducción Las funciones Advanced I/O manejan solicitudes y respuestas HTTP nativas para todos tus componentes de Catalyst. Puedes usar cualquier cantidad de APIs en una sola función Advanced I/O y pasar grandes flujos de datos en la función. Estas funciones te permiten construir mecanismos de enrutamiento complejos para tu aplicación entre el servidor y el cliente. Puedes construir y mantener herramientas del lado del servidor de forma rápida y eficiente usando estas funciones. Las funciones Advanced I/O también ofrecen flexibilidad para realizar una variedad de acciones y resolver diferentes casos de uso. Por ejemplo, puedes transmitir o analizar grandes volúmenes de datos como archivos de imagen u otros adjuntos, renderizar una vista, incrustar archivos o descargar un archivo usando funciones Advanced I/O. El tipo de función Basic I/O no es adecuado para enrutamiento o canalización de datos, ya que solo ejecuta operaciones básicas de entrada y salida y pasa datos a través de parámetros. Por lo tanto, puedes usar funciones Advanced I/O para tales propósitos. También puedes obtener cualquier forma de respuesta, como una respuesta JSON o HTML para una función Advanced I/O. Catalyst también ofrece soporte para el framework Express de Node.js en funciones Advanced I/O. Express es un popular framework de Node.js que te permite gestionar enrutamiento, renderizado y configuración de middleware para manejar funcionalidades HTTP de forma robusta y fácil. Puedes elegir importar este framework en tus funciones y acceder a sus paquetes. El endpoint de una función Advanced I/O es directamente accesible a través de su URL de Function. La URL de la función se genera cuando se crea la función, y te permite acceder directamente a la función y probarla en diferentes condiciones. Puedes crear una función Advanced I/O desde la consola de Catalyst, programarla allí, o usar el CLI para inicializar la función y desplegarla en la consola después de probarla. El CLI también te permite probar funciones Advanced I/O sirviendo la función a través de un localhost. Puedes usar varias herramientas para gestionar tus funciones Advanced I/O y ver sus estadísticas de rendimiento como Logs, Application Performance Monitoring o API Gateway, como se menciona en la página de introducción de Functions. Puedes encontrar varios tutoriales de Catalyst que incluyen funciones Advanced I/O en su código. Consulta la sección de Tutoriales para practicar el trabajo con funciones Advanced I/O. Nota: El tiempo máximo de espera de una función Advanced I/O es de 30 segundos. ### Casos de uso A continuación se presentan algunos casos de uso para funciones Advanced I/O: * Un servicio de aplicación de búsqueda local que proporciona información sobre servicios y negocios en una región particular usa una función Advanced I/O para manejar el enrutamiento en su aplicación web y móvil. Cuando el usuario final ejecuta una consulta de búsqueda para información sobre servicios en su localidad, como restaurantes o spas, la aplicación obtiene información sobre los servicios disponibles junto con los enlaces de sus sitios web desde Data Store o Cache. Cuando el usuario hace clic en un enlace, es redirigido al sitio web del negocio. Estas funcionalidades de recuperación de datos y redirección son manejadas enteramente por funciones Advanced I/O usando los métodos de solicitud y respuesta HTTP. * Una aplicación aloja archivos de video como películas, programas de TV y documentales y permite a los usuarios finales descargarlos a sus dispositivos. La aplicación está escrita usando el framework Express de Node.js y usa una función Advanced I/O para implementar estas funcionalidades. La función maneja tareas como ejecutar operaciones de búsqueda en la aplicación, obtener resultados del Data Store y solicitar descargas de archivos en segundos. Otros ejemplos donde se pueden implementar funciones Advanced I/O incluyen los siguientes tipos de aplicaciones: * Aplicaciones de edición colaborativa de documentos en tiempo real, gestión de proyectos o co-navegación * Aplicaciones de transmisión de medios en vivo * Aplicaciones basadas en datos * Aplicaciones de una sola página * Microservicios independientes * Aplicaciones de conferencias de audio o video * Aplicaciones dinámicas basadas en eventos * Aplicaciones de chat en línea ### Beneficios * Te permite construir aplicaciones en tiempo real y microservicios que son funcionalmente ricos y dinámicos por naturaleza * Te proporciona un espacio integrado para manejar el enrutamiento de toda la aplicación incluyendo cualquier cantidad de APIs en una sola función * Puede construir la lógica de solicitud y respuesta entre el servidor y el cliente para todos los componentes de Catalyst y realizar enrutamiento complejo * Te permite implementar cualquier funcionalidad del framework Express cuando incluyes el paquete en tu función ### Estructura de la función El archivo principal de la función en Java, Node.js y Python se inicializa con código y módulos predeterminados diferentes para cada tipo de función, cuando se crea la función. Como se menciona en la sección Stack de Functions, la estructura de una función Java, Node.js o Python generalmente contiene un archivo principal de la función junto con dependencias y archivos de configuración. Consulta la página de ayuda de Estructura del Directorio del Proyecto para detalles sobre la estructura genérica del directorio de funciones y los archivos de configuración de las funciones de Catalyst. Veamos el código predeterminado con el que se inicializa una función Advanced I/O, tanto en los entornos Java, Node.js como Python. Nota: Puedes consultar este tutorial para ver un ejemplo de función Advanced I/O en los entornos Java, Node.js y Python. #### Java Catalyst inicializa una función Advanced I/O en el entorno Java con el siguiente código predeterminado de una operación simple de entrada y salida. Una función Advanced I/O en Java importa el paquete javax.servlet para manejar las solicitudes y respuestas. Implementa CatalystAdvancedIOHandler para la clase principal. Las definiciones de rutas deben definirse en la función public void runner(). #### Node.js Una función Advanced I/O en Node.js se puede crear con dos plantillas diferentes desde la consola: La plantilla Express.js que incluye todos los módulos de Express o una plantilla en blanco que no incluye ni módulos de Express ni módulos de Node. Sin embargo, cuando inicializas la función desde el CLI, solo puedes incluir los módulos de Node en su estructura. Debes instalar los módulos de Express por separado. 1. La plantilla Express.js<br /><br /> Los módulos de Express se agregan automáticamente cuando creas una función Advanced I/O en Node.js con las dependencias desde la consola de Catalyst. Esto instala el framework Express en el directorio de tu función.<br /><br /> Cuando inicializas una función Advanced I/O desde el CLI, puedes instalar Express de forma independiente ejecutando npm install express --save en el directorio de tu función. <br /><br /> Las funciones Advanced I/O de Catalyst soportan los objetos predeterminados de solicitud y respuesta de las funciones HTTP de Node.js, req y res. Estos objetos manejan las solicitudes y respuestas para las rutas mapeadas a componentes de Catalyst como Cache o Data Store. <br /> <br /> La ruta aquí se define en el formato: app.METHOD(PATH, HANDLER) y las acciones se programan en las definiciones de ruta. 2. La plantilla en blanco<br /><br /> La plantilla en blanco te permite construir código nativo de Node.js desde cero para adaptarse a tus requisitos. Esta plantilla no incluye los módulos de Express.js. Cuando inicializas la función sin el SDK en la consola, se crea en la plantilla en blanco sin los módulos de Node ni los módulos de Express. <br /><br /> El código de ejemplo para la plantilla en blanco también incluye los objetos req y res, y define diferentes respuestas para cada ruta URL.<br /> <br /> Como esta es una plantilla en blanco, tendrás que crear un servidor HTTP usando el método createServer() y pasarlo a una función requestListener() que se ejecuta cada vez que el servidor recibe una solicitud. Puedes aprender sobre cómo escribir una función HTTP nativa en Node.js en su documentación oficial. #### Python Cuando inicializas una función Advanced I/O desde el CLI, el código boilerplate que se muestra a continuación se incluirá automáticamente en el archivo main.py presente dentro del directorio de la función Python. Para manejar las operaciones de entrada y salida de las funciones Advanced I/O de Catalyst de manera eficiente, hemos utilizado el framework flask. Este framework proporciona las herramientas y bibliotecas que se pueden usar para construir aplicaciones Python robustas con máxima flexibilidad para el desarrollador. También aumenta la eficiencia funcional de la aplicación al permitir que se ejecute usando un solo archivo Python. Las funciones Advanced I/O de Catalyst soportan los objetos de solicitud y respuesta de la función HTTP de Python. Estos objetos manejan las solicitudes y respuestas para las rutas mapeadas a componentes de Catalyst como Cache o Data Store. import json import zcatalyst-sdk import logging from flask import Request, make_response, jsonify def handler(request: Request): app = zcatalyst-sdk.initialize() logger = logging.getLogger() if request.path == "/": response = make_response(jsonify({ 'status': 'success', 'message': 'Hello from {{_MAIN_}}' }), 200) return response elif request.path == "/cache": default_segment = app.cache().segment() insert_resp = default_segment.put('Name', 'DefaultName') logger.info('Inserted cache : ' + str(insert_resp)) get_resp = default_segment.get('Name') return jsonify(get_resp), 200 else: response = make_response('Unknown path') response.status_code = 400 return response ### URL de Function Como se mencionó anteriormente, el endpoint de una función Advanced I/O es directamente accesible a través de una URL de invocación única. Puedes invocarla manualmente a través de su URL y obtener la respuesta. Puedes implementar esta URL en el código de tu aplicación, o usarla según lo requieras. Esta URL de función se genera automáticamente cuando se crea la función. La URL de producción de una función Advanced I/O tiene el siguiente formato: https://_project\_domain\_name_.catalystserverless.com/server/_function\_name_/ En el entorno de Development, la URL menciona la clave development como: https://*project_domain_name*.development.catalystserverless.com/server/*function_name*/ * _https://project\_domain\_name.catalystserverless.com_ es el App Domain de tu aplicación de Catalyst. * _/server_ indica que es una función. * La URL identifica la función por su nombre. * La ausencia de la palabra clave _/execute_ indica que es una función Advanced I/O. Puedes obtener la URL de una función desde la consola, o en tu terminal después de desplegar la función desde el Catalyst CLI. Puedes agregar rutas que hayas definido en el código de la función Advanced I/O después de esta URL base para ejecutar el comportamiento que hayas definido para ellas. Por ejemplo, la siguiente definición de ruta obtiene todos los datos del Data Store cuando se accede a la ruta /item/all a través del método GET: <br /> Cuando agregas la ruta a la URL base como: _https://catly-687259092.development.catalystserverless.com/server/catly/item/all_ y la invocas, la función Advanced I/O obtendrá todos los elementos del Data Store. ### Push a Logs Catalyst Logs muestra los logs de todas las ejecuciones de tus funciones junto con los detalles necesarios. Las ejecuciones de funciones se registran automáticamente en los logs. Sin embargo, también puedes enviar los datos de respuesta de la ejecución de una función Advanced I/O a los logs manualmente. Catalyst te permite escribir hasta 1500 caracteres en los logs. También puedes enviar las respuestas a diferentes niveles de log individualmente, como a _Info_ o _Warning_. Los datos de respuesta de una función Advanced I/O se pueden enviar a los logs usando el siguiente método: console.log(). Puedes ver esta instrucción en el código predeterminado con el que se inicializa una función Advanced I/O, donde los datos se envían a los logs y el nivel del logger también se establece manualmente. -------------------------------------------------------------------------------- title: "Funciones Event" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.939Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/event-functions/" service: "Serverless" -------------------------------------------------------------------------------- # Funciones Event ### Introducción Una Event Function es una función de tarea asíncrona que está asociada con un Event Listener. Una Event Function se crea para ejecutar una tarea o un conjunto de tareas ante la ocurrencia de un evento especificado. El Event Listener predeterminado escucha un evento que ocurre en uno de los componentes de Catalyst y el Event Listener personalizado escucha la invocación de una URL particular. Cuando estos eventos ocurren, la Event Function asociada con esa instancia del Event Listener se invoca y ejecuta automáticamente. No puedes invocar una Event Function manualmente ni probarla en la consola. Sin embargo, puedes usar el comando functions:shell para probarla en el CLI. También puedes generar un payload de entrada de ejemplo para una Event Function usando el comando event:generate en el CLI para probarla. El endpoint de una Event Function no es accesible a través de una URL de Function como lo son las funciones Basic I/O o Advanced I/O. Una Event Function no devuelve ninguna respuesta más que determinar si la ejecución de la función fue un éxito o un fallo. Puedes crear una Event Function desde la consola de Catalyst y programarla allí, o usar el CLI para inicializar la función y desplegarla en la consola. Puedes usar varias herramientas para gestionar tus Event Functions y ver sus estadísticas de rendimiento como Logs o Application Performance Monitoring, como se menciona en la página de introducción de Functions. Puedes practicar el trabajo con Event Functions con el tutorial de Event Function o el tutorial de la app WorkDrive Sync. <br> ### Módulos de Event Function #### Java Una Event Function de Catalyst soporta dos módulos en Java: context y event. El módulo context contiene los siguientes métodos integrados: 1. context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una función. 2. context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una función, que es un valor constante de **15 minutos**. El módulo event contiene los siguientes métodos integrados: 1. event.getAction(): Para obtener la acción ejecutada en los componentes de Catalyst que activó el evento en el Event Listener predeterminado, como la inserción de datos en una tabla o un registro de usuario. 2. event.getSourceEntityId(): Se puede usar para obtener el ID de la entidad de origen donde ocurrió el evento, como el ID de la tabla o el ID de Segment de un cache. 3. event.getProjectDetails(): Para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. 4. event.getData(): Para obtener los datos sobre el evento asociado con la Event Function. 5. event.getTime(): Para obtener la hora de la ocurrencia del evento que invocó la Event Function. 6. event.getSource(): Para obtener el nombre de la fuente que activó el evento, como Data Store, Cache, Authentication, File Store, Github y web client. 7. event.getEventBusDetails(): Para obtener los detalles del bus de eventos como las acciones de eventos configuradas y las reglas. Cuando ejecutas una función Java, devuelve el estado de la ejecución como SUCCESS o FAILURE al final de su ejecución. El estado devuelto es de tipo com.catalyst.event.EVENT_STATUS. <br> #### Node.js Una Event Function de Catalyst soporta dos módulos en Node.js: context y event. El módulo context contiene los siguientes métodos integrados: 1. context.closeWithSuccess(): Para indicar que la función se ejecutó exitosamente. Debes usar esto al final de la función. 2. context.closeWithFailure(): Para indicar que la ejecución de la función fue un fallo. Debes usar esto al final de la función. 3. context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una función. 4. context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una función, que es un valor constante de 15 minutos. El módulo event contiene los siguientes métodos integrados: 1. event.getProjectDetails() : Para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto 2. event.getData(): Para obtener los datos sobre el evento asociado con la función 3. event.getTime(): Para obtener la hora de la ocurrencia del evento que invocó la función 4. event.getSource(): Este método se usa para obtener el nombre de la fuente que activó el evento, como DataStore, Cache, Authentication, FileStore, Github y webclient. 5. event.getEventBusDetails(): Para obtener los detalles del bus de eventos como las acciones de eventos configuradas y las reglas. 6. event.getAction(): Para obtener la acción ejecutada en los componentes de Catalyst que activó el evento en el Event Listener predeterminado, como la inserción de datos en una tabla o un registro de usuario 7. event.getSourceEntityId(): Para obtener el ID de la entidad de origen donde ocurrió el evento, como el ID de la tabla o el ID de Segment de un cache <br> #### Python Una Event Function de Catalyst también soporta dos módulos en Python: context y event. El módulo context contiene los siguientes métodos integrados: 1. context.close_with_success(): Para indicar que la función se ejecutó exitosamente. Debes usar esto al final de la función. 2. context.close_with_failure(): Para indicar que la ejecución de la función fue un fallo y debes usar esto al final de la función. 3. context.get_remaining_execution_time_ms(): Se puede usar para obtener el tiempo de ejecución restante de una función. 4. context.get_max_execution_time_ms(): Este método se puede usar para obtener el tiempo máximo de ejecución de una función, que es un valor constante de 15 minutos. El módulo event contiene los siguientes métodos integrados: 1. event.get_event_bus_details(): Para obtener los detalles del bus de eventos como las acciones de eventos configuradas y las reglas. 2. event.get_project_details(): Para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. 3. event.get_data(): Para obtener los datos sobre el evento asociado con la Event Function. 4. event.get_time(): Para obtener la hora de la ocurrencia del evento que invocó la función. 5. event.get_source(): Para obtener el nombre de la fuente que activó el evento, como DataStore, Cache, Authentication, FileStore, Github y webclient. 6. event.get_action(): Para obtener la acción ejecutada en los componentes de Catalyst que activó el evento en el Event Listener predeterminado, como la inserción de datos en una tabla o un registro de usuario. 7. event.get_source_entity_id(): Para obtener el ID de la entidad de origen donde ocurrió el evento, como el ID de la tabla o el ID de Segment de un cache. -------------------------------------------------------------------------------- title: "Funciones Cron" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.941Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/cron-functions/" service: "Serverless" -------------------------------------------------------------------------------- # Funciones Cron ### Introducción Una Cron Function es una función periódica que está asociada con un Cron. Puedes crear una Cron Function para ejecutar un trabajo que necesita ser invocado una vez o periódicamente. Cuando configuras un cron en Catalyst, puedes asociarlo con la ejecución de una función o la invocación de una URL de terceros. Cuando el cron está asociado con una función, el cron job invoca la función automáticamente según su programación. Si es un trabajo de una sola vez, el cron invoca la función en la fecha y hora especificadas. Si es periódico, el cron invoca la función en los intervalos configurados, como cada mes en una fecha y hora específicas, o todos los días a una hora específica. No puedes invocar una Cron Function manualmente ni probarla en la consola. Sin embargo, puedes usar el comando functions:shell para probarla en el CLI. Una Cron Function no devuelve ninguna respuesta más que determinar si la ejecución de la función fue un éxito o un fallo. <br> ### Módulos de Cron Function #### Java Una Cron Function de Catalyst soporta dos módulos en Java: CronRequest y Context. El módulo CronRequest contiene los siguientes métodos integrados: 1. CronRequest.getCronParam(): Este método se usa para obtener el valor del parámetro particular pasado a la función. 2. CronRequest.getAllCronParams(): Este método se usa para obtener todos los parámetros pasados a la función. 3. CronRequest.getRemainingExecutionCount(): Este método se usa para obtener los detalles sobre las instancias de ejecución restantes de un cron job. 4. CronRequest.getCronDetails(): Este método se usa para obtener los detalles del cron como el ID del Cron y el nombre del cron. 5. CronRequest.getProjectDetails(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. El módulo Context contiene los siguientes métodos integrados: 1. Context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una Cron Function, que es un valor constante de **15 minutos**. 2. Context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una Cron Function. Cuando ejecutas una función Java, devuelve el estado de la ejecución como SUCCESS o FAILURE al final de su ejecución. El estado devuelto es de tipo com.catalyst.cron.CRON_STATUS. <br> #### Node.js La Cron Function de Catalyst soporta dos módulos en Node.js: cronDetails y context. El módulo cronDetails contiene los siguientes métodos integrados: 1. cronDetails.getCronParam(): Este método se usa para obtener el valor del parámetro particular pasado a la función. 2. cronDetails.getAllCronParam(): Este método se usa para obtener todos los parámetros pasados a la función. 3. cronDetails.getRemainingExecutionCount(): Para obtener los detalles sobre las instancias de ejecución restantes del cron job. 4. cronDetails.getCronDetails(): Para obtener los detalles del cron como el ID del Cron y el nombre del cron. 5. cronDetails.getProjectDetails(): Para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. El módulo context contiene los siguientes métodos integrados: 1. context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una función, que es un valor constante de 15 minutos. 2. context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una función. 3. context.closeWithSuccess(): Este método se usa para indicar que la función se ejecutó exitosamente. Debes usar esto al final de la función. 4. context.closeWithFailure(): Este método se usa para indicar que la ejecución de la función fue un fallo. Debes usar esto al final de la función. <br> #### Python Una Cron Function de Catalyst también soporta dos módulos en Python: cron_details y context. El módulo cron_details contiene los siguientes métodos integrados: 1. cron_details.get_cron_param() - Este método se usa para obtener el valor del parámetro particular pasado a la función. 2. cron_details.get_all_cron_params() - Este método se usa para obtener todos los parámetros pasados a la función. 3. cron_details.get_remaining_execution_count() - Para obtener los detalles sobre las instancias de ejecución restantes del cron job. 4. cron_details.get_cron_details() - Para obtener los detalles del cron como el ID del Cron y el nombre del cron. 5. cron_details.get_project_details() - Para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. El módulo context contiene los siguientes métodos integrados: 1. context.get_max_execution_time_ms() - Este método se puede usar para obtener el tiempo máximo de ejecución de una función. Y el tiempo máximo de ejecución de una función está configurado en 15 minutos. 2. context.get_remaining_execution_time_ms() - Se puede usar para obtener el tiempo de ejecución restante de una función. 3. context.close_with_success() - Se puede usar para indicar que la función se ejecutó exitosamente. Debes usar esto al final de la función. 4. context.close_with_failure() - Para indicar que la ejecución de la función fue un fallo. Debes usar esto al final de la función. -------------------------------------------------------------------------------- title: "Funciones Browser Logic" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.948Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/browser-logic/" service: "Serverless" -------------------------------------------------------------------------------- # Funciones Browser Logic ### Introducción Browser Logic es un tipo de función de Catalyst Serverless y un componente del servicio Catalyst SmartBrowz. Browser Logic contiene la estructura de código ideal que puedes usar para programar tareas de automatización del navegador y otras operaciones del navegador. Usando Browser Logic, puedes programar cualquier interacción u operación del navegador sin tener que diseñar tu navegador integrado. Puedes realizar una amplia gama de tareas del navegador como web scraping, generación de documentos visuales y ejecución de pruebas de rendimiento y funcionalidad en tu aplicación en Headless Browsers. Cuando configuras tu función Browser Logic, el navegador integrado se inicializará. Puedes programar funciones Browser Logic en los siguientes runtimes: * Java * Node.js Al igual que las otras Functions de *Serverless*, puedes crear, inicializar, servir y desplegar funciones Browser Logic desde el CLI. También puedes subir tu función Browser Logic como un archivo zip a la consola. También puedes ver y monitorear el rendimiento de las funciones Browser Logic usando los siguientes componentes de Catalyst DevOps: * Logs: Puedes ver, gestionar y monitorear todas las ejecuciones relacionadas con funciones Browser Logic. * Application Performance Monitoring: Puedes usar este componente para obtener información detallada sobre el rendimiento de las funciones Browser Logic. Nota: Cualquier acción u operación del navegador que programes usando la función Browser Logic, o cualquier tarea de automatización del navegador o web scraping que realices usando cualquier componente de Catalyst SmartBrowz es bajo tu propio riesgo. Te recomendamos encarecidamente usar los componentes de SmartBrowz para realizar operaciones en dominios que permitan las acciones, o con la aprobación adecuada. Adicionalmente, aunque Catalyst proporciona una infraestructura segura para programar tus funciones, cualquier consecuencia de la lógica que programes usando las funciones de Catalyst es exclusivamente tuya. ### Beneficios * Browser Logic te ofrece la estructura de código ideal para programar tareas del navegador de cualquier escala. * Solo tendrás que programar la lógica de cualquier tarea del navegador usando funciones Browser Logic, y toda la gestión de infraestructura backend será manejada automáticamente por Catalyst. * Puedes crear, inicializar, servir y desplegar funciones Browser Logic usando el robusto CLI de Catalyst. Esto asegura que todas las dependencias requeridas para desplegar la función se instalarán automáticamente cuando inicialices la función a través del CLI. ### Casos de uso Las funciones Browser Logic se pueden usar para programar cualquier tarea del navegador; ejemplos de algunas de ellas son: * Puedes programar funciones Browser Logic para realizar análisis de satisfacción del cliente de tus productos en plataformas de comercio. Las reseñas son una manera preferida para los consumidores de compartir sus comentarios sobre el producto y para los clientes potenciales de decidir si requieren tu producto. Si vendes tu producto en varias plataformas de comercio, revisar las reseñas positivas o, más importante, las negativas puede ser una tarea manual tediosa. En su lugar, puedes programar una función Browser Logic que acceda a la URL de tu producto en el Headless browser de SmartBrowz y recopile las reseñas con la menor calificación y las almacene en un archivo .csv para que las examines después. Esto te permite obtener una mejor comprensión de tu producto y planificar mejoras y futuras actualizaciones de tu producto de una manera más eficiente. * Puedes programar funciones usando el SDK de PDF & Screenshot y generar documentos visuales de sitios web que permitan dicha actividad para recopilar datos significativos. * Puedes programar lógica para realizar pruebas fundamentales de UI. Puedes usar el SDK de PDF & Screenshot y lanzar tu aplicación en el Headless browser de SmartBrowz y generar capturas de pantalla para capturar la vista de tu aplicación en una amplia gama de dispositivos PDA. ### Estructura de la función Las funciones Browser Logic se pueden programar usando los siguientes lenguajes de programación: **Node.js** El fragmento a continuación es un ejemplo de la estructura de código de Browser Logic si lo inicializas usando la biblioteca de automatización del navegador **Playwright** con page como el objeto. module.exports.playwright = async (request, response, page) => { await page.goto('https://example.com/',{waitUntil: "domcontentloaded"}); // You can code your logic here const pageTitle = await page.title(); response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify({ output: pageTitle })); response.end(); }; **Java** El fragmento a continuación es un ejemplo de la estructura de código de Browser Logic si lo inicializas usando la biblioteca de automatización del navegador **Selenium**. import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.openqa.selenium.chrome.ChromeDriver; import com.catalyst.browserlogic.SeleniumHandler; import org.json.simple.JSONObject; public class BrowserAutomation implements SeleniumHandler { private static final Logger LOGGER = Logger.getLogger(BrowserAutomation.class.getName()); JSONObject responseData = new JSONObject(); @Override @SuppressWarnings("unchecked") public void runner(HttpServletRequest request, HttpServletResponse response,ChromeDriver driver) throws Exception { try { //Obtiene el endpoint y el método al que se realizó la llamada driver.get("https://catalyst.zoho.com"); responseData.put("message", "Title of the page "+driver.getTitle()); //Envía la respuesta de vuelta al cliente response.setContentType("application/json"); response.getWriter().write(responseData.toString()); response.setStatus(200); } catch (Exception e) { //Las acciones se registran. Puedes revisar los logs desde Catalyst Logs. LOGGER.log(Level.SEVERE, "Exception in BrowserAutomation", e); responseData.put("error", "Internal server error occurred. Please try again in some time."); response.getWriter().write(responseData.toString()); response.setStatus(500); } } } Puedes agregar tu lógica de negocio a la estructura de código anterior e implementarla directamente en tu proyecto. No tienes que proporcionar código adicional para manejar la infraestructura. Cualquier operación adicional que normalmente programarías para realizar automatizaciones del navegador, como abrir o cerrar el navegador, no es necesaria ya que Catalyst lo maneja por ti en el backend. ### URL de Function El endpoint de una función Browser Logic es directamente accesible a través de una URL de invocación única. Puedes invocarla manualmente a través de su URL, pasar entrada si es necesario y obtener la respuesta. Puedes implementar esta URL en el código de tu aplicación, o usarla según lo requieras. Esta URL de función se genera automáticamente cuando se crea la función. La URL de una función Browser Logic tiene el siguiente formato: **https<span></span>://{project_domain}.development.catalystserverless.com/server/{function_name}/execute** En el entorno de Development, la URL menciona la clave development como: * https<span></span>://project_domain_name.catalystserverless.com es el App Domain de tu aplicación de Catalyst. * /server indica que es una función. * La URL identifica la función por su nombre. Puedes obtener la URL de la función desde la consola, o en tu terminal después de desplegar la función desde el Catalyst CLI. También puedes invocar la URL de Function a través de un navegador, como se ilustra en la imagen a continuación: <br /> Puedes aprender más sobre Browser Logic y cómo implementarlo para tus aplicaciones en esta sección de ayuda. -------------------------------------------------------------------------------- title: "Funciones Integration" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.952Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/integration-functions/" service: "Serverless" -------------------------------------------------------------------------------- # Funciones Integration ### Introducción Las Integration Functions te permiten programar y usar una función de Catalyst como backend de otros servicios de Zoho, y establecer una integración con ellos. Puedes programar la lógica de negocio de cualquier funcionalidad backend del servicio que sea soportada, a través de Catalyst, en las plataformas Java, Node.js o Python. Cuando esa funcionalidad particular se accede en el servicio externo, automáticamente invocará la ejecución de la Integration Function programada en Catalyst a través de una llamada HTTP. Nota: Dado que una Integration Function es invocada internamente por otro servicio, su endpoint no es directamente accesible a través de URLs de invocación como las funciones Basic I/O o Advanced I/O. Solo puede ser llamada por el servicio con el que te estás integrando. Aunque una Integration Function es un tipo de función HTTP, aún así no podrás invocarla incluso si construyes un endpoint para ella. Crear Integration Functions para servicios externos te permite almacenar y gestionar la función en Catalyst, permitiéndote así acceder a varias funcionalidades y herramientas de Catalyst para ella, como ver los logs o reportes de las ejecuciones de funciones a través de Catalyst Logs o Application Performance Monitoring. Catalyst proporciona paquetes SDK individuales exclusivos para los servicios con los que puedes integrarte. El SDK contiene plantillas de código de clases, objetos y métodos que puedes incorporar en tu aplicación fácilmente, y construir backends potentes para el servicio. También puedes generar payloads de ejemplo para probar Integration Functions en el CLI. Consulta la página de ayuda de Event Generate para obtener más información. Nota: Las Integration Functions no están disponibles para usuarios de Catalyst que acceden desde los centros de datos de EU, AU, IN, JP, SA o CA. ### Integración con Cliq Catalyst actualmente soporta integración con **Zoho Cliq** a través de Integration Functions. Cliq facilita la comunicación en equipo y te permite colaborar, organizar conversaciones, programar tareas y más. También proporciona una plataforma para que los desarrolladores construyan herramientas internas que automaticen actividades de trabajo y traigan datos de otras aplicaciones dentro de las ventanas de chat. Puedes distribuir estas herramientas que creas, y los usuarios finales en Cliq pueden instalarlas para acceder a la funcionalidad. Las Integration Functions de Catalyst te permiten programar el backend de extensiones de Cliq que pueden agrupar las siguientes herramientas internas de Cliq: * Bots: Interfaz conversacional que maneja tareas o responde a consultas * Commands: Comandos slash que realizan acciones integradas o personalizadas * Message Actions: Acciones que se realizan como respuesta a mensajes individuales * Widgets: Te permite personalizar tu pantalla de inicio de Cliq * Functions: Funciones personalizadas que pueden ejecutar tareas basadas en ocurrencias de eventos Puedes aprender más sobre estas herramientas internas y extensiones en la documentación de desarrollador de Cliq. ### Beneficios * Te permite programar extensiones agrupadas en las plataformas Java, Node.js o Python, en lugar de en Deluge que es el entorno de programación predeterminado soportado por Cliq * Accede a los logs de ejecución de funciones y reportes detallados de rendimiento de funciones backend de Cliq a través de Logs o APM, que te permiten identificar áreas problemáticas y rectificarlas inmediatamente * Soporte SDK funcionalmente rico y exclusivo para la integración con Cliq con archivos de clases pre-programados y plantillas de código, facilitando la comprensión de las acciones que se pueden realizar * Capacidad de crear clases handler personalizadas para cualquier componente de Cliq y escribir tu lógica según tus necesidades ### Crear Integration Functions en Catalyst Similar a otros tipos de funciones, puedes crear una Integration Function desde la consola o inicializarla desde el CLI. Si la inicializas desde el CLI, puedes programarla usando un IDE externo y desplegarla en la consola de Catalyst. Nota: Consulta la página de introducción de Functions para los pasos para trabajar con funciones desde un entorno local, y la página Trabajar con Functions desde la consola para los pasos sobre cómo crear una función desde la consola. Al crear una Integration Function ya sea desde la consola o desde el CLI, simplemente puedes seleccionar el servicio para el cual quieres crear la función. A diferencia de otros tipos de funciones, no tendrás la opción de crear una Integration Function sin un SDK, ya que la estructura del SDK puede ayudarte a entender mejor los componentes de Cliq. Veamos la estructura de una Integration Function en detalle. ### Estructura de Integration Function con Cliq Un paquete de Integration Function contiene componentes diferentes en comparación con los otros tipos de funciones. El directorio de una función en Catalyst generalmente contiene el archivo principal de la función, junto con los componentes SDK de Java, Node.js o Python y los archivos de configuración. Al igual que con los otros tipos de funciones, la estructura boilerplate de una Integration Function también contiene todos los componentes SDK y archivos de configuración necesarios. Sin embargo, además de los archivos JAR o módulos de Node agregados al directorio, el paquete de una Integration Function también incluye el SDK de Catalyst Cliq. El SDK te proporciona las interfaces y objetos necesarios para crear clases handler y desarrollar lógica de negocio específica del servicio. La plantilla de código contiene clases handler individuales para cada componente de la extensión de Cliq. Es decir, archivos de clases handler individuales para bots, commands, widgets, functions y message actions. Primero veamos una estructura de función de ejemplo en Java, Node.js y Python, antes de discutir las clases handler. #### Java La estructura de archivos Java contiene el archivo Java principal, junto con las clases handler, los archivos JAR del SDK de Java de Catalyst y los archivos de configuración. <br /> El SDK de Cliq para Java se incluye automáticamente cuando inicializas la función desde el CLI o la creas en la consola. También puedes obtener el SDK de Cliq para Java desde aquí. #### Node.js La estructura de archivos Node.js también contiene una función principal junto con las clases handler, los archivos de módulos de Node del SDK de Node.js de Catalyst y los archivos de configuración. <br /> Similar al SDK de Cliq para Java, el SDK de Cliq para Node.js también se incluye automáticamente cuando inicializas la función desde el CLI o la creas en la consola. Para instalarlo manualmente, debes ejecutar este comando desde el directorio de la función Node.js usando tu terminal: npm install zcatalyst-integ-cliq Nota: Consulta la página de ayuda de Estructura del Directorio del Proyecto para detalles sobre la estructura genérica del directorio de funciones y los archivos de configuración de las funciones de Catalyst. #### Python Cuando creas una Integration Function en Python, además de los módulos de Python agregados al directorio de funciones, también se incluirá un paquete de Integration Function llamado SDK de Cliq para Python. El SDK te proporciona las interfaces y objetos necesarios para crear clases handler y desarrollar lógica de negocio específica del servicio. La plantilla de código contiene clases handler individuales para cada componente de la extensión de Cliq. Es decir, archivos de clases handler individuales para bots, commands, widgets, functions y message actions. Nota: También puedes instalar el SDK de Cliq para Python manualmente, ejecutando este comando CLI desde el directorio de la función Python: pip install zcatalyst-cliq El paquete SDK de Catalyst Cliq contiene los sub-paquetes mencionados a continuación que son específicos de las herramientas internas en la aplicación Cliq. Puedes consultar esta sección para saber más sobre estas herramientas. #### Clases Handler de Cliq Los handlers de Cliq contienen las definiciones de la lógica de negocio de una acción específica en un componente de Cliq. Cada componente contiene múltiples handlers que definen acciones para manejar acciones o eventos específicos. Por ejemplo, algunos de los handlers de un bot de Cliq son: * Welcome handler: Define un mensaje personalizado cuando un usuario se suscribe a un bot * Message handler: Se activa cuando un bot recibe un mensaje * Mention handler: Renderiza una respuesta cuando un bot es mencionado en un chat De manera similar, cada uno de los componentes de Cliq soportados por Catalyst- Commands, Message Actions, Widgets, Functions, tienen handlers individuales. Consulta las páginas de ayuda de Cliq para detalles sobre todos los handlers soportados por cada componente. Catalyst proporciona plantillas para los objetos y métodos necesarios que serían útiles para construir una extensión en cada clase handler. Te ayudan a entender el manejo de varias acciones como el análisis de llamadas de Cliq, el enrutamiento a la implementación apropiada o la construcción de la respuesta requerida. Por ejemplo, BotClass.java, bot-handler.js o main.py contiene una plantilla de código de ejemplo para cada handler individual de una clase handler de bot. <br /> Puedes consultar estas definiciones y usar estos métodos para personalizar tu propia lógica para la extensión. Puedes modificar las clases handler según tus requisitos e incluir solo las necesarias. El usuario puede usar este SDK para analizar la llamada de Cliq, enrutar la llamada a la implementación correspondiente y formar respuestas de salida. ### Mapeo de archivos de clases Handler #### Mapeo en catalyst-config.json para funciones Java y Node.js Todos los archivos de clases handler se mapean en el archivo de configuración catalyst-config.json de una función. El archivo de configuración típicamente solo incluye detalles básicos de ejecución y despliegue de una función de Catalyst. Sin embargo, para una Integration Function, este archivo también mapea las clases handler que se utilizan en ella. <br /> Este mapeo ayuda a Catalyst a ejecutar el conjunto correcto de acciones cuando se invoca la función. También puedes crear un nuevo archivo de clase handler para un componente de Cliq y definir tu propia lógica en él. Sin embargo, debes mapear manualmente el archivo de clase handler en el archivo catalyst-config.json. Asegúrate de seguir el mismo formato al escribir la clave para el mapeo. Los archivos handler predeterminados creados como parte del SDK de Catalyst Cliq ya están mapeados cuando creas la función desde la consola o el CLI. #### Mapeo en main.py para funciones Python Cuando creas una Integration Function, el SDK de Cliq para Python se instalará automáticamente dentro del directorio de funciones de tu proyecto actual. Para Python, todos los archivos de clases handler se mapean en el archivo main.py de una función. Este mapeo ayuda a Catalyst a ejecutar el conjunto correcto de acciones cuando se invoca la función. También puedes crear un nuevo archivo de clase handler para un componente de Cliq y definir tu propia lógica en él. Sin embargo, debes mapear manualmente el archivo de clase handler en el archivo main.py. Asegúrate de seguir el mismo formato al escribir la clave para el mapeo. Los archivos handler predeterminados creados como parte del SDK de Cliq para Python ya están mapeados cuando creas la función desde el CLI. import zcatalyst-cliq # aquí se debe indicar el mapeo de los archivos del manejador de cliq config = { "ZohoCliq": { "handlers": { "bot_handler": "handlers/bot_handler.py", "function_handler": "handlers/function_handler.py", "installation_validator": "handlers/installation_validator.py", "command_handler": "handlers/command_handler.py", "widget_handler": "handlers/widget_handler.py", "messageaction_handler": "handlers/message_action_handler.py", "installation_handler": "handlers/installation_handler.py" } }, } def handler(request, response): handler_resp = zcatalyst_cliq.execute(request, config) response.set_content_type('application/json') response.send(handler_resp) El objeto request de tipo IntegrationRequest se envía como argumento al método execute() y se analiza con información como el nombre de la herramienta interna de Cliq y la operación que se está realizando con ella. La propiedad config contiene los mapeos de los archivos de clases handler con los respectivos handlers y se pasa como otro argumento al método. Según los parámetros, el método execute() procede con su operación de procesar la solicitud con las respectivas clases handler y devuelve la respuesta. Después de crear una Integration Function en Catalyst, puedes crear una extensión en Cliq para invocar la función. Para crear extensiones en Cliq, puedes consultar esta sección. ### Configurar extensiones en Cliq Después de desarrollar el backend para una extensión de Cliq, debes agregar la función mientras configuras la extensión en Cliq. Este será un mapeo único de Extensión de Cliq - Integration Function de Catalyst. Cada vez que los componentes de esa extensión se invoquen a través de Cliq, a su vez activará la función de Catalyst mapeada a ella. La acción apropiada definida para esa solicitud se activará a través de las clases handler. Por ejemplo, si el usuario final en Cliq envía un mensaje a un bot cuyo backend está definido en Catalyst, la solicitud se pasará a Catalyst después de ser autenticada. Los detalles del componente, usuario y chat se adjuntan en el cuerpo de la solicitud HTTP. Catalyst luego invocará el message handler definido en el archivo BotClass.java, bot-handler.js o main.py, y ejecutará la acción apropiada. Catalyst enviará la respuesta de vuelta a Cliq y se renderizará en el frontend del componente de Cliq. #### Crear una extensión en Cliq Puedes crear una extensión en Cliq y configurar componentes como bots, widgets o commands para agruparlos en ella desde la consola de desarrollador en Cliq. Para configurar una Integration Function de Catalyst en una extensión de Cliq, debes seleccionar el Execution Type como "Catalyst Function" cuando crees la extensión en Cliq. <br /> Luego debes elegir el proyecto de Catalyst de la lista desplegable. Todos los proyectos de tu cuenta de Catalyst se listarán aquí. También puedes hacer clic en Create Project que te redirigirá a Catalyst para crear un nuevo proyecto. Luego debes seleccionar la Integration Function de la lista desplegable que se asociará con esta extensión. Después de configurar otros detalles y componentes de tu extensión, haz clic en Create Extension. Esto creará la integración con Catalyst y habilitará que la Integration Function se ejecute cada vez que se acceda a los componentes. Nota: También puedes construir el backend para una extensión de Cliq usando una función Basic o Advanced I/O de Catalyst, y agregar su URL seleccionando URL Invoke. Sin embargo, dado que esto no incluirá el paquete SDK de Catalyst Cliq, debes definir todas las acciones manualmente. Para aprender sobre el desarrollo de extensiones para Catalyst en Cliq en detalle, consulta la **documentación de ayuda de extensiones tipo Catalyst**. -------------------------------------------------------------------------------- title: "Funciones Job" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.952Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/job-functions/" service: "Serverless" related: - Job Pool Documentation (/es/job-scheduling/help/jobpool/introduction/) - Create Job Pool (/es/job-scheduling/help/implementation/create-jobpool/) - Submit Job to Function Job Pool (/es/job-scheduling/help/implementation/submit-instant-job/) - Avoid Dispatch Delays When Executing Jobs (/es/job-scheduling/help/jobpool/key-concepts/#ideal-memory-allocation-to-avoid-dispatch-delay) - Java SDK (/es/sdk/java/v1/job-scheduling/overview/) - Node.js SDK (/es/sdk/nodejs/v2/job-scheduling/overview/) - Python SDK (/es/sdk/python/v1/job-scheduling/overview/) - Job Scheduling REST APIs (/es/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools) -------------------------------------------------------------------------------- # Funciones Job ### Introducción Las Job Functions son un tipo de función que puedes invocar cuando se ejecuta un job en un Function Job Pool. Programarás tu lógica de negocio personalizada en esta función, y se invocará en un momento programado cuando se ejecute un job para activar la función en el job pool. Una Job Function es una función no HTTPS, como las Event Functions. Esta función no tendrá un endpoint, y la función solo se invocará cuando se ejecute un job en el function job pool con esta job function particular como su tipo de destino. Puedes programar tu Job Function en los siguientes runtimes: * Java - v7, v11 y v17 * Node.js - v18 * Python - v3.9 Al igual que las otras *Serverless Functions*, puedes crear, inicializar y desplegar Job Functions desde el CLI. También puedes subir tu Job Function como un archivo zip a la consola. Sin embargo, dado que las Job Functions son funciones no HTTPS, su URL no es accesible como las funciones Basic I/O o Advanced I/O. Para probar una Job Function, puedes usar el siguiente comando CLI y usar el function shell. catalyst functions:shell Una Job Function no devuelve ninguna respuesta más que determinar si la ejecución de la función fue un **éxito** o un **fallo**. También puedes ver y monitorear el rendimiento de la Job Function usando los siguientes componentes de Catalyst DevOps: * Logs: Puedes ver, gestionar y monitorear todas las ejecuciones relacionadas con Job Functions. * Application Performance Monitoring: Puedes usar este componente para obtener información detallada sobre el rendimiento de la Job Function. Nota: Para ejecutar una Job Function exitosamente, sin retrasos en el despacho, siempre asegúrate de que la memoria asignada de la job function sea menor que la memoria asignada del job pool. Puedes obtener más información sobre cómo prevenir retrasos en el despacho en esta sección de ayuda. ### Beneficios * Una Job Function se puede crear, inicializar y desplegar usando el robusto CLI de Catalyst. Esto asegura que todas las dependencias requeridas para desplegar la función se instalarán automáticamente cuando inicialices la función a través del CLI. * Las Job Functions también se pueden crear en la consola de Serverless de Catalyst a través del Editor. * Las Job Functions contendrán el código boilerplate ideal con el cual puedes programar cualquier lógica de negocio personalizada, y el resto de los requisitos del backend serán manejados por Catalyst. ### Código boilerplate de la función El código boilerplate presente en la Job Function cuando la creas en la consola o la inicializas usando el CLI se muestra a continuación: import java.util.logging.Level; import java.util.logging.Logger; import com.catalyst.Context; import com.catalyst.job.JOB_STATUS; import com.catalyst.job.JobRequest; import com.catalyst.job.CatalystJobHandler; import com.zc.common.ZCProject; import com.zc.component.cache.ZCCache; public class Sample implements CatalystJobHandler { private static final Logger LOGGER = Logger.getLogger(Sample.class.getName()); @Override public JOB_STATUS handleJobExecute(JobRequest request, Context arg1) throws Exception { try { ZCProject.initProject(); Object eventData = request.getAllJobParams(); if (eventData != null) { LOGGER.log(Level.SEVERE, "Data is" + eventData.toString()); } LOGGER.log(Level.SEVERE, "Project Details " + request.getProjectDetails().toString()); ZCCache.getInstance().putCacheValue("JobSample", "Working", 1 l); LOGGER.log(Level.SEVERE, "Inserted SucessFully:)"); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Exception in Job Function", e); return JOB_STATUS.FAILURE; } return JOB_STATUS.SUCCESS; } } /** <span></span>* * @param {import("./types/job").JobRequest} jobRequest * @param {import("./types/job").Context} context */ module.exports = (jobRequest, context) => { console.log('Hello from index.js'); // entrada de la función: { job_details: { job_meta_details: { params: { key: 'value' } } } } /** * JOB REQUEST FUNCTIONALITIES */ const projectDetails = jobRequest.getProjectDetails(); // para obtener los detalles del proyecto actual const jobDetails = jobRequest.getJobDetails(); // para obtener los detalles del job actual const jobMetaDetails = jobRequest.getJobMetaDetails(); // para obtener los metadatos del job actual const jobpoolDetails = jobRequest.getJobpoolDetails(); // para obtener los detalles del function job pool actual const getJobCapacityAttributes = jobRequest.getJobCapacityAttributes(); // para obtener la capacidad del job actual const allJobParams = jobRequest.getAllJobParams(); // para obtener todos los parámetros proporcionados a la función de job const jobParam = jobRequest.getJobParam('key'); // para obtener el valor de un parámetro particular proporcionado a la función de job /** * CONTEXT FUNCTIONALITIES */ context.closeWithSuccess(); //fin de la aplicación con éxito // context.closeWithFailure(); //fin de la aplicación con error }; import logging def handler(job_request, context): logger = logging.getLogger() logger.info('Hello from main.py') # function input: { job_details: { job_meta_details: { params: { key: 'value' } } } } '''JobRequest Functionalities''' job_details = job_request.get_job_details() # get the details of the current job project_details = job_request.get_project_details() # get the details of the current project job_meta_details = job_request.get_job_meta_details() # get the job meta of the current job job_pool_details = job_request.get_job_pool_details() # get the current functions job pool details job_capacity_attributes = job_request.get_job_capacity_attributes() # get the current jobs capacity all_job_params = job_request.get_all_job_params() # get all the parameters supplied to the job function job_param = job_request.get_job_param('key') # get the value of a particular parameter supplied to the job function '''Context Functionalities''' remaining_execution_time_ms = context.get_remaining_execution_time_ms() # get the maximum allowed execution time for the job functions max_execution_time_ms = context.get_max_execution_time_ms() # get the remaining execution time for this job function # context.close_with_failure() # conclude the function execution with a failure response context.close_with_success() # conclude the function execution with a success response ### Probar Job Functions usando Catalyst CLI Las Job Functions son funciones no HTTPS como las funciones Event e Integration. No puedes invocar una Job Function manualmente ni probarla en la consola. Sin embargo, puedes generar payloads de ejemplo y probar la función usando el Function Shell presente en el Catalyst CLI. El siguiente comando CLI generará un payload de ejemplo, y puedes usarlo para probar la función en el entorno local. catalyst event:generate:job 10108000007982015 // Reemplaza con el Job Pool ID requerido <br /> Puedes alimentar este payload mientras ejecutas la Job Function requerida y validar la salida. ### Argumentos de Job Function Una Job Function de Catalyst soporta dos argumentos en **Java**: **JobRequest** y **Context**. El argumento JobRequest contiene los siguientes métodos integrados: * **JobRequest.getProjectDetails()**: Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. * **JobRequest.getJobDetails()**: Se usa para obtener todos los detalles del Job incluyendo el Job ID, el Job Pool con el que está asociado y el nombre del Job. * **JobRequest.getJobMetaDetails()**: Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento. * **JobRequest.getJobpoolDetails()**: Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen el Job Pool ID, el nombre del Job Pool y el tipo de Job Pool. * **JobRequest.getJobCapacityAttributes()**: Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool. * **JobRequest.getAllJobParams()**: Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función. * **JobRequest.getJobParam(String key)**: Se usa para obtener el valor de los parámetros pasando la clave como string a la función. El argumento Context contiene los siguientes métodos integrados: * **Context.getRemainingExecutionTimeMs()**: Se puede usar para obtener el tiempo de ejecución restante de una job function. * **Context.getMaxExecutionTimeMs()**: Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de **15 minutos**. Una Job Function de Catalyst soporta dos argumentos en **Node.js**: **jobDetails** y **context**. El argumento jobDetails contiene los siguientes métodos integrados: * **jobDetails.getJobDetails()**: Se usa para obtener todos los detalles del Job incluyendo Job ID, el Job Pool con el que está asociado y el nombre del Job. * **jobDetails.getJobMetaDetails()**: Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento. * **jobDetails.getJobPoolDetails()**: Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen Job Pool ID, nombre del Job Pool y tipo de Job Pool. * **jobDetails.getProjectDetails()**: Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. * **jobDetails.getJobCapacityAttributes()**: Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool. * **jobDetails.getAllJobParams()**: Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función. * **jobDetails.getJobParam(key)**: Se usa para obtener el valor de los parámetros pasando la clave como string a la función. El argumento context contiene los siguientes métodos integrados: * **context.getRemainingExecutionTimeMs()**: Se puede usar para obtener el tiempo de ejecución restante de una job function. * **context.getMaxExecutionTimeMs()**: Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos. * **context.closeWithSuccess()**: Este método se puede usar para marcar la ejecución de un job como exitosa. * **context.closeWithFailure()**: Este método se puede usar para marcar la ejecución de un job como fallida. Una Job Function de Catalyst soporta dos argumentos en **Python**: **job_details** y **context**. El argumento job_details contiene los siguientes métodos integrados: * **job_details.get_job_details()**: Se usa para obtener todos los detalles del Job incluyendo Job ID, el Job Pool con el que está asociado y el nombre del Job. * **job_details.get_job_meta_details()**: Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento. * **job_details.get_job_pool_details()**: Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen Job Pool ID, nombre del Job Pool y tipo de Job Pool. * **job_details.get_project_details()**: Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto. * **job_details.get_job_capacity_attributes()**: Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool. * **job_details.get_all_job_params()**: Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función. * **job_details.get_job_param(key)**: Se usa para obtener el valor de los parámetros pasando la clave como string a la función. El argumento context contiene los siguientes métodos integrados: * **context.get_remaining_execution_time_ms()**: Se puede usar para obtener el tiempo de ejecución restante de una job function. * **context.get_max_execution_time_ms()**: Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos. * **context.close_with_success()**: Este método se puede usar para marcar la ejecución de un job como exitosa. * **context.close_with_failure()**: Este método se puede usar para marcar la ejecución de un job como fallida. -------------------------------------------------------------------------------- title: "Implementación" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.953Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/implementation/" service: "Serverless" -------------------------------------------------------------------------------- # Implementación ### Introducción La página de ayuda de implementación actúa como una guía de procedimientos para trabajar con Catalyst Functions desde la consola de Catalyst. Puedes crear funciones Java, Node.js o Python desde la consola web, y ver sus estadísticas de uso diario y detalles. Puedes usar el editor de código para trabajar en los archivos de funciones Node.js. También puedes realizar configuraciones sencillas en las funciones como agregar triggers para ellas, crear y gestionar variables de entorno, u optimizar su configuración de memoria desde la consola. Nota: No podrás programar funciones Java y Python desde el editor de la consola. Solo podrás trabajar en funciones Node.js. Puedes trabajar en funciones Java y Python desde un entorno local, y subir los paquetes respectivos a la consola. ### Crear una función Para crear una función para tu proyecto de Catalyst desde la consola: 1. Navega al componente Functions presente bajo *FAAS* en la consola de *Serverless* de Catalyst. 2. Haz clic en Create Function.<br /> <br /> La pestaña Editor se abrirá en el cuadro emergente.<br /> <br /> Nota: Si haces clic en la pestaña CLI, puedes encontrar comandos para instalar el CLI e inicializar funciones desde él. 3. Tipo de función:<br /><br /> Selecciona un tipo de función de la lista desplegable. Puedes seleccionar una función Basic I/O, Advanced I/O, Cron, Event o Integration. Nota: Las Integration Functions actualmente no están disponibles para usuarios de Catalyst que acceden desde los centros de datos de EU, AU, IN o CA. <br /> <br /> La URL de Function predeterminada se muestra debajo del nombre de la función, si seleccionas una función Basic I/O o Advanced I/O. 4. Nombre de la función y URL:<br /><br /> Ingresa un nombre para la función. Este será el nombre de la carpeta (Java) o el nombre del paquete (Node.js o Python) de la función.<br /> <br /> El nombre de la función se agregará automáticamente a la URL de Function mientras escribes, para las funciones Basic I/O y Advanced I/O. 5. Stack de la función:<br /><br /> Selecciona un stack de función de la lista desplegable. La lista desplegable muestra los últimos runtimes soportados de los lenguajes Java, Node.js y Python, junto con otros runtimes más antiguos que aún son soportados por Catalyst. Catalyst actualmente soporta: Java 25, Java 21, Java 17, Java 11, Java 8, Node.js 24, Node.js 22, Node.js 20, Node.js 18, Node.js 16, Node.js 14, Node.js 12, Python 3.13, Python 3.12, Python 3.11, Python 3.10 y Python 3.9. <br /> <br /> Nota: Se recomienda que construyas y mantengas funciones en los últimos runtimes de estos entornos de programación para evitar problemas de seguridad o estabilidad. Catalyst eliminará gradualmente el soporte para runtimes que se acercan a su fin de vida. Puedes aprender más sobre esto en nuestra Política de soporte de runtime de lenguajes. 6. Paquete de la función:<br /><br/> Si seleccionas una versión de Node.js como tu stack, selecciona el paquete de las opciones. <br /> <br /> * Selecciona Default Template para crear la función sin las dependencias de Node. * Selecciona Default Template with Catalyst SDK para crear la función con el paquete SDK de Node.js de Catalyst y los módulos de Node. * También puedes subir la función seleccionando File Upload y subiendo la carpeta de la función como un archivo zip comprimido desde tu sistema local. Si seleccionas una versión de Java o Python como tu stack, solo puedes subir el paquete de la función. Debes subir la carpeta de la función Java o Python como un archivo zip también.<br /> Nota: Al subir un paquete de función Java, Node.js o Python en la consola, debes asegurarte de que:<br /> * En lugar de comprimir la carpeta de la función como un todo, debes navegar dentro de la carpeta de la función, seleccionar todos los archivos en ella, y luego comprimirlos juntos. Esto se debe a que, cuando Catalyst extrae el archivo zip de una función Java, Node.js o Python, el archivo catalyst-config.json debe estar presente en la raíz. * El directorio de la función contiene todos los archivos de configuración requeridos en las estructuras estándar. * El nombre de la función que ingresas en la consola coincide con los nombres configurados en package.json para Node.js, y catalyst-config.json para Java, Node.js y Python. El nombre del archivo zip puede ser cualquiera. * La versión del stack que seleccionas en la consola coincide con la versión del stack configurada en catalyst-config.json para todas las funciones Java, Node.js y Python. * Seleccionas el tipo de función correcto. Dado que cada tipo de función contiene una estructura de código diferente, ocurrirá una discrepancia de tipo si seleccionas el tipo incorrecto. 7. Configuración de memoria de la función:<br /><br /> Catalyst te permite configurar la memoria para cada una de tus funciones. Esta memoria se asignará cuando se ejecute la función. La memoria predeterminada asignada para una función es 256 MB. Es decir, si no configuras la memoria, o si habías creado una función antes de que esta funcionalidad estuviera disponible, la memoria se establecerá en 256 MB automáticamente. Puedes editar cualquiera de tus funciones existentes y cambiar este valor según tus requisitos. Nota: Puedes optimizar el costo y rendimiento de tu aplicación seleccionando la memoria óptima para una función según la complejidad de su código. Consulta la página Optimización de costos y rendimiento en Functions para más detalles. <br /> Elige una memoria entre 128 MB y 512 MB, de la lista desplegable. Nota: La CPU se asigna automáticamente según la memoria que configures para tu función. No podrás ver ni configurar este valor. 8. Después de configurar los detalles de la función, haz clic en Create. La función se creará y se listará en la página de _Functions_. Se creará un Function ID único para ella y se mostrará en la página, junto con los detalles de la función. ### Descripción general y estadísticas de la función Cuando abres una función desde la página de _Functions_, serás redirigido a la sección de descripción general para esa función. Esta sección proporciona valiosas estadísticas diarias de la ejecución de esa función particular y sus detalles generales. Se muestran las siguientes estadísticas diarias de la función: * Total Invocations: Número total de invocaciones de la función del día * Invocation Errors: Número total de invocaciones con código de estado HTTP en la serie 500 * Average Invocation Time: Tiempo promedio de respuesta de las invocaciones exitosas * Time-Outs: Número de invocaciones que excedieron los límites de tiempo de espera También puedes ver los detalles de la función como su ID, stack, URL de invocación y más desde esta sección. ### Editor de código Después de crear una función, puedes acceder al editor de código para trabajar en sus archivos. Puedes abrir el editor de código haciendo clic en la pestaña Code de una función. <br /> Los archivos en el directorio de la función se crearán según el stack y el paquete, y se mostrarán a la izquierda. Si subiste un archivo zip, encontrarás todos los archivos en el directorio. Nota: El editor de código no estará disponible para funciones Java y Python. Pero puedes ver todas las estadísticas diarias en la sección Overview y realizar configuraciones en la sección Configuration. Puedes abrir un archivo desde los archivos de la izquierda y programarlo. Haz clic en Save para guardar los cambios que realices. La ventana del editor permite el autocompletado de tu código, y también proporciona varias herramientas que enriquecen tu experiencia de programación. Haz clic derecho en la ventana del editor para acceder a las herramientas. Las herramientas de navegación de código incluyen: * Go To Definition: Navega a la definición del elemento * Peek Definition: Abre un editor peek en línea y muestra la definición de un elemento * Peek References: Abre un editor peek en línea y muestra las referencias de un elemento * Go To Symbol: Muestra los símbolos en una función agrupados por categorías También puedes modificar todas las ocurrencias de un elemento en un solo paso seleccionando el elemento y usando Change All Occurrences. El Format Document formatea la estructura del código para hacerlo más legible. La Command Palette lista todos los comandos que se usan frecuentemente. Puedes habilitar el modo de pantalla completa o cambiar a un modo oscuro haciendo clic en los iconos respectivos en la esquina inferior derecha de la ventana de código. Puedes buscar un archivo en el directorio de la función usando la barra de búsqueda. Puedes obtener la URL de Function para Basic I/O y Advanced I/O haciendo clic en Get Function URL en la esquina inferior derecha. La URL de una función Advanced I/O se muestra a continuación. La URL de una función Basic I/O se muestra a continuación. Puedes copiar la URL de la función e implementarla en tu código o usarla según sea necesario. Puedes crear nuevos archivos y carpetas haciendo clic derecho en el nombre de cualquier archivo o carpeta en el editor. Haz clic en New File para crear un nuevo archivo, o New Folder para crear una nueva carpeta, en el directorio actual. Ingresa un nombre para el archivo o carpeta y presiona Enter para crearlo. Puedes eliminar un archivo o una carpeta haciendo clic en Delete en el menú del clic derecho. También puedes subir un archivo a una carpeta en el directorio de la función. Para hacerlo, haz clic derecho en la carpeta y haz clic en Upload. Selecciona el archivo desde tu máquina local y súbelo. La consola también te permite probar funciones Basic I/O pasando parámetros de entrada. No podrás probar funciones de los otros tipos porque no devuelven respuestas String como las funciones Basic I/O. Para probar una función Basic I/O, haz clic en Test desde la parte inferior de la ventana del editor. Selecciona el método HTTP para tu solicitud. Ingresa el nombre del parámetro de la función bajo _Key_ y el valor bajo _Value_. Puedes agregar más parámetros haciendo clic en el icono **[+]** y eliminar un parámetro haciendo clic en el icono **[-]**. Haz clic en Test después de proporcionar los valores de entrada. La salida se muestra debajo del editor. También puedes cambiar la ventana de salida al lado derecho haciendo clic en el icono de la derecha. Este valor también se envía a los logs usando el método context.log. Puedes ver esto abriendo Catalyst Logs y seleccionando la función. #### Configuraciones de la función La sección de _Configuration_ de una función te permite realizar configuraciones para las siguientes funcionalidades: Variables de entorno, Memoria asignada, Triggers de funciones. Exploremos estos en detalle. ### Variables de entorno Las variables de entorno son variables de una función cuyos valores se declaran fuera del código de la función. Después de crear una variable de entorno, se puede llamar en cualquiera de las sub-funciones en ese directorio de función. Catalyst te permite crear, almacenar y gestionar variables para ambos entornos que ofrece: los entornos de Development y Production. Puedes declarar un solo nombre de variable y configurar valores para ambos entornos. Por ejemplo, si necesitas declarar una variable de token de autenticación que tendrá diferentes valores en diferentes entornos, puedes hacerlo y guardar los valores en esta sección. Nota: Si quieres declarar una variable de producción, debes haber desplegado tu proyecto en el entorno de Production. Solo podrás crear o acceder a variables de producción si tu proyecto está disponible en el entorno de Production. Luego puedes llamar a la variable en el código de tu función como se menciona en esta sección. ### Crear una variable de entorno Para crear una nueva variable de entorno para una función: 1. Haz clic en la pestaña Configuration después de abrir la función desde la página de _Functions_. 2. Haz clic en Create Variable en la sección de _Environment Variables_. 3. Configura la clave y los valores para la variable.<br /><br /> Si tu proyecto no está disponible en el entorno de Production, solo podrás agregar la clave de la variable y su valor de development. <br /> Nota: Para usar consultas ZCQL V2 en tu código, necesitas crear una variable de entorno con los siguientes valores:<br /> * Key: ZOHO_CATALYST_ZCQL_PARSER * Development Value: V2 Puedes obtener más información sobre el uso de consultas ZCQL en código en este documento de ayuda.<br /> Si tu proyecto está disponible en el entorno de Production, podrás agregar tanto valores de development como de production para la variable. 4. Haz clic en Save. La variable se guardará y se listará en la sección. Puedes usar el menú desplegable en la parte superior para cambiar entre la lista de variables de development y production. Es decir, si necesitas acceder a las variables de development, selecciona Development del menú desplegable. ### Usar una variable de entorno Después de crear una variable de entorno, puedes llamarla en el código de tu función por su nombre de clave de diferentes maneras para diferentes stacks de funciones. Cada vez que necesites referirte a la variable en el código, debes seguir la sintaxis especificada a continuación según el entorno de programación: Java: System.getenv(keyname) Node.js process.env.keyname **keyname**: El keyname declarado para la variable. Este método de sintaxis es mejor cuando el keyname *no contiene espacios*. process.env[keyname] **keyname**: El keyname declarado para la variable. Este método de sintaxis es mejor cuando el keyname *contiene espacios*. Python: os.getenv("keyname") Web: catalyst.getCatalystEnv(key) Nota: El valor de la variable se obtiene según el entorno en el que se ejecuta la función. Es decir, si la función se ejecuta en el entorno de Development, se obtiene el valor de development de la variable. Si se ejecuta en el entorno de Production, se obtiene el valor de production de la variable. #### Editar una variable de entorno Para editar la clave o los valores de una variable de entorno: 1. Haz clic en el icono de puntos suspensivos de la variable, luego haz clic en Edit.<br /> <br /> 2. Puedes editar la clave, el valor de development o production. Luego haz clic en Save.<br /> #### Eliminar una variable de entorno Puedes eliminar el valor de development o production de una variable de entorno. Cuando la eliminas de un entorno, el valor de la variable en el otro entorno aún está disponible. Para eliminar el valor de development o production de una variable de entorno: 1. Haz clic en el icono de puntos suspensivos de la variable, luego haz clic en Remove.<br /> <br /> 2. Puedes editar la clave, el valor de development o production. Luego haz clic en Save.<br /> La variable se eliminará solo del entorno seleccionado. ### Memoria asignada Puedes asignar memoria para la ejecución de tu función según sus requisitos de rendimiento, en esta sección. Si no configuraste específicamente la memoria al crear la función, se asignará la memoria predeterminada de 256 MB para su ejecución. Puedes editar la memoria predeterminada o previamente configurada después de analizar sus requisitos, y optimizar su rendimiento y costo seleccionando un valor óptimo. Consulta la página de Optimización de costos y rendimiento de Functions para obtener más información. Nota: La CPU se asigna automáticamente según la memoria que configures para tu función. No podrás ver ni configurar este valor. Para configurar la memoria asignada para una función: 1. Navega a la pestaña Allocated Memory en la pestaña _Configuration_, luego haz clic en el icono de edición. 2. Selecciona la memoria requerida para la función, luego haz clic en el icono de verificación. También puedes editar la memoria asignada editando la función. ### Triggers de funciones La sección de _Function Triggers_ te proporciona una forma fácil de crear y gestionar todos los triggers asociados con una función. Te permite ver todos los triggers que se han asociado con una función particular en un solo espacio, y te permite fácilmente deshabilitar, actualizar o eliminar un trigger. Esto te ahorra tiempo de navegar a cada componente y buscar triggers asociados con una función. Según el tipo de función, diferentes triggers de componentes se pueden asociar con una función. Nota: Las Integration Functions no pueden asociarse con ningún trigger de función. #### Funciones Basic I/O y Advanced I/O Las funciones Basic I/O y Advanced I/O de tu proyecto se pueden asociar con triggers de API Gateway. Puedes crear APIs para acceder a los endpoints de estas funciones, y adicionalmente configurar autenticación y limitación de velocidad para ellas desde esta sección. Nota: Las funciones Basic I/O también se pueden orquestar en Circuits y usar en la definición de flujos de trabajo. Puedes realizar esta acción accediendo a Circuits en la consola. Para crear un trigger de API Gateway para una función Basic I/O o Advanced I/O: 1. Navega a la sección _Functions Triggers_ en la pestaña _Configuration_. Si no has habilitado API Gateway, puedes hacer clic en Access API Gateway para habilitarlo primero. Si tu API Gateway está habilitado, todas las APIs que se hayan configurado para esa función específica, si las hay, se listarán allí. Luego puedes hacer clic en Create API Gateway Trigger para configurar una nueva API para la función. Esta API define el acceso a esa función. 2. Esto abrirá un cuadro emergente de creación de API. Configura los detalles de la API. Puedes aprender más sobre este paso en la página de ayuda de API Gateway. Luego haz clic en Create. La API para la función se creará y se listará en esta sección junto con sus detalles. También la encontrarás listada en la página del componente API Gateway en tu consola. Discutiremos la edición y eliminación de un trigger de función después de discutir los triggers disponibles para los tipos de funciones. #### Event Functions Las Event Functions de tu proyecto se pueden asociar con Catalyst Event Listeners. Puedes configurar una regla de Event Listener de componente o personalizado como trigger para una Event Function, en esta sección. Cada vez que se invoque la regla, la Event Function se ejecutará. Para crear un trigger de función para una Event Function: 1. Navega a la sección _Functions Triggers_ en la pestaña _Configuration_ de la Event Function, luego haz clic en Create Event Listener. 2. Esto abrirá un cuadro emergente de creación de Event Listener. Puedes crear una regla para un Event Listener de componente o personalizado. <br /><br /> Cuando haces clic en el campo de texto para el nombre del Event Listener, puedes elegir el listener predeterminado (componente) o cualquiera de los listeners personalizados existentes para crear una regla para ellos. O puedes escribir un nombre para un nuevo listener personalizado. 3. En el caso de un Event Listener de componente, puedes asociar la regla con acciones específicas de una instancia de componente de Catalyst. Puedes aprender más aquí.<br /> En el caso de un Event Listener personalizado, puedes configurar los detalles relevantes de la regla. Si es un listener existente, la URL ya se habrá generado para él. Si estás creando un nuevo listener personalizado, se creará una nueva URL para él. Puedes aprender más aquí. La función de destino será la función para la cual estás creando la regla, en ambos casos. 4. Haz clic en Create después de configurar los detalles. El trigger del Event Listener se creará y se mostrará en la sección de _Function Triggers_. El trigger estará habilitado por defecto. Todos los triggers de Event Listener asociados con esta función se listarán aquí. Puedes deshabilitar o re-habilitar este trigger, así como editarlo y eliminarlo desde esta sección. Discutiremos esto después de la sección de trigger de Cron Function. #### Cron Functions Puedes crear un nuevo Cron job y asociarlo con una Cron Function. Cada vez que se invoque el programador cron, la Cron Function se ejecutará. Nota: Los Cron jobs también se pueden configurar para invocar URLs de terceros, en lugar de una Cron Function. Puedes configurar estos crons accediendo al componente Cron. Para crear un trigger de función para una Cron Function: 1. Navega a la sección _Functions Triggers_ en la pestaña _Configuration_ de la Cron Function, luego haz clic en Create Cron. 2. Configura los detalles del cron. Puedes pasar valores de parámetros durante la ejecución de la función cron. Puedes programarlo como un cron de una sola vez o recursivo, y configurar la hora y fecha o la frecuencia de la ejecución respectivamente. Puedes aprender más aquí. 3. Después de configurar los detalles, haz clic en Save. El trigger de cron se creará y se mostrará en la sección de _Function Triggers_. El trigger estará habilitado por defecto. Todos los triggers de cron asociados con esta función se listarán. #### Deshabilitar/Habilitar un trigger de Event Listener o Cron Catalyst te permite habilitar o deshabilitar una regla de Event Listener o un cron asociado con una función Event o Cron desde la sección de Function Triggers directamente. No necesitas navegar a los respectivos componentes para realizar esta acción. Para deshabilitar una regla de Event Listener o un cron desde la sección de Function Triggers: 1. Haz clic en el icono de puntos suspensivos de un trigger de Event Listener o cron, luego haz clic en Disable. 2. Haz clic en Yes, Proceed en el cuadro de confirmación. La regla del Event Listener o el cron se deshabilitará. Puedes re-habilitar un trigger de Event Listener o cron haciendo clic en el icono de puntos suspensivos nuevamente, luego haciendo clic en Enable. #### Editar un trigger de API Gateway, Event Listener o Cron Puedes actualizar fácilmente los detalles de un trigger de función creado para cualquiera de los tipos de funciones desde la sección de _Function Triggers_. Para editar un trigger de API Gateway, Event Listener o cron: 1. Haz clic en el icono de puntos suspensivos de un trigger de API Gateway, Event Listener o cron, luego haz clic en Edit. 2. Realiza los cambios necesarios en la configuración de la API, Event Listener o cron, luego haz clic en Update.<br /> Estos cambios se reflejarán en los respectivos componentes. Es decir, las actualizaciones estarán disponibles si accedes al componente API Gateway, Event Listeners o Cron. #### Eliminar un trigger de API Gateway, Event Listener o Cron Puedes eliminar una API, regla de Event Listener o un cron asociado con una función desde la sección de _Function Triggers_ de la siguiente manera: 1. Haz clic en el icono de puntos suspensivos de un trigger de API Gateway, Event Listener o cron, luego haz clic en Delete. 2. Haz clic en Yes, Proceed en el cuadro de confirmación. La API, regla de Event Listener o cron se eliminará permanentemente. ### Actualizar o descargar una función Puedes subir un paquete actualizado de tu función en cualquier momento desde tu sistema local a la consola de Catalyst. También puedes modificar la configuración de memoria asignada a una función y actualizar su versión de runtime. Sin embargo, no podrás editar otros valores de una función, como su nombre o tipo, ni cambiarla a un stack diferente. Cuando un runtime se acerca a su fin de vida y pronto será deprecado por Catalyst, encontrarás una advertencia mostrada cuando abras la función. Debes asegurarte de actualizar la función a la última versión soportada antes del fin de soporte de Catalyst para el runtime. Puedes aprender más sobre esto en la sección de ayuda Política de soporte de runtime de lenguajes. Puedes experimentar con la configuración de memoria de una función para determinar la memoria óptima que requiere, según las complejidades del código involucrado y las observaciones que hagas de su historial de ejecución. Luego puedes actualizar la memoria de la función en consecuencia para optimizar el costo y rendimiento de tu aplicación. Aprende más sobre esto en la sección de ayuda Optimización de costos y rendimiento. Puedes actualizar una función de la siguiente manera: 1. Haz clic en el icono de puntos suspensivos desde la sección _Overview_ o _Code_ de la función y haz clic en Update. 2. Sube el paquete de función actualizado o edita su configuración de memoria en la ventana emergente. Nota: Asegúrate de seguir todas las directrices mencionadas en la sección Crear una función al subir el paquete. 3. Haz clic en Save. Nota: Si deseas modificar el nombre de una función, debes hacerlo en los archivos catalyst-config.json y package.json. Para descargar el paquete de la función desde la consola de Catalyst, haz clic en el icono de puntos suspensivos y haz clic en Download. La descarga se iniciará. También puedes acceder a este menú desde la página de _Functions_. ### Eliminar una función Para eliminar la función de la consola de Catalyst permanentemente: 1. Haz clic en el icono de puntos suspensivos y haz clic en Delete. 2. Haz clic en Yes, Proceed para confirmar. -------------------------------------------------------------------------------- title: "Política de soporte de runtime de lenguajes" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.954Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/runtime-support/" service: "Serverless" -------------------------------------------------------------------------------- # Política de soporte de runtime de lenguajes Las funciones de Catalyst están construidas en Java, Node.js o Python y sus runtimes dependen del runtime de las versiones específicas de los entornos de programación. Catalyst implementa una reducción gradual en su soporte del runtime de un lenguaje, y por lo tanto te proporciona tiempo suficiente para planificar, implementar y probar actualizaciones en tus funciones. Catalyst comenzará a implementar el fin de soporte para una versión de lenguaje tan pronto como se haga un anuncio de fin de vida por parte de la comunidad. Siempre es recomendable construir y mantener tus funciones de Catalyst en la última versión estable de un entorno de programación. Esto asegura que se mantenga una alta seguridad y estabilidad en el rendimiento de tu aplicación de Catalyst. Debes realizar los cambios apropiados en las bibliotecas y código de tu función para hacerlos compatibles con la versión a la que los actualices. Nota: La política de soporte de runtime de lenguajes de Catalyst actualmente se aplica a los entornos de programación Java, Node.js y Python. Catalyst finalizará el soporte para un runtime en cuatro fases como se explica en este documento. ### Fase 1: Anuncio de deprecación El anuncio de deprecación marca el inicio del fin de soporte de una versión de lenguaje. Catalyst anunciará la deprecación de un runtime seis meses antes del fin de vida oficial del runtime. Por ejemplo, si el fin de vida oficial del runtime anunciado por la comunidad es el 1 de abril de 2022, entonces haremos el anuncio de deprecación el 1 de octubre de 2021. El anuncio de deprecación contendrá los detalles del retiro oficial de la versión y el fin de soporte de Catalyst para ella. Esto te proporciona tiempo suficiente para planificar y prepararte para actualizar tus funciones de Catalyst a la última versión estable. ### Fase 2: Período de deprecación El período de deprecación del soporte de Catalyst para una versión de lenguaje comienza justo después de que se realice el anuncio de deprecación. El período de deprecación de un runtime en Catalyst durará un año. Por ejemplo, si el anuncio de deprecación se hizo el 1 de octubre de 2021, el período de deprecación durará hasta el 1 de octubre de 2022. Podrás crear y actualizar funciones durante el período de deprecación, y trabajar con tus funciones existentes de Catalyst de esa versión sin impedimentos. Sin embargo, debes usar este período para actualizar todas tus funciones en tus aplicaciones de Catalyst a la última versión estable del entorno de programación. ### Fase 3: Período de retiro El período de retiro de un runtime deprecado comienza justo después del año del período de deprecación. El período de retiro durará tres meses. Por ejemplo, si el período de deprecación termina el 1 de octubre de 2022, el período de retiro dura hasta el 1 de enero de 2023. No podrás crear nuevas funciones dirigidas al runtime deprecado de un lenguaje en el período de retiro. Aún puedes continuar ejecutando y realizando actualizaciones a las funciones existentes de la versión deprecada en tus aplicaciones de Catalyst. Te recomendamos encarecidamente asegurarte de que todas tus funciones estén completamente actualizadas y funcionales en el último runtime durante este período. ### Fase 4: Fin de soporte El fin de soporte para un runtime deprecado comienza justo después de los tres meses del período de retiro. Por ejemplo, si el período de retiro termina el 1 de enero de 2023, Catalyst finalizará su soporte para el runtime a partir de entonces. Ya no podrás crear ni actualizar funciones de la versión deprecada después de que alcance la fase de fin de soporte. Tampoco garantizamos las invocaciones de funciones ni la estabilidad de la aplicación, si continúas manteniendo runtimes deprecados en tu aplicación. Catalyst no aplicará los últimos parches de seguridad y actualizaciones de un runtime de lenguaje a un runtime deprecado. Las funciones de una versión deprecada pueden o no continuar ejecutándose. Sin embargo, te proporcionamos la conveniencia de actualizar solo la versión de las funciones en cualquier momento, después de que se alcance el fin de soporte. Nota: Catalyst se reserva la capacidad de realizar cambios en las políticas de deprecación o retiro de un runtime de lenguaje en cualquier momento, basándose en excepciones en casos raros. En caso de que decidamos implementar cambios a un anuncio previo, comunicaremos todos los detalles necesarios pertinentes a estos cambios. Estos cambios pueden incluir, pero no se limitan a, cambios en el fin de vida anunciado por una comunidad de lenguaje, o runtimes que alcanzan su fin de vida pero continuarán siendo soportados en la plataforma hasta nuevo aviso. Puedes consultar la página de ayuda de implementación de Functions para aprender sobre cómo actualizar una función existente desde la consola remota. ### Políticas de soporte de versiones de lenguaje y cronología Siempre puedes hacer seguimiento del estado de lanzamiento de un lenguaje, y sus versiones actuales o activas desde sus sitios web oficiales: Java: Hoja de ruta de soporte de Oracle Java SE Node.js: Documento de lanzamientos de Node.js Python: Guía del desarrollador de Python: estado de versiones ### Deprecaciones del runtime de Java Catalyst actualmente soporta las versiones de Java 8, 11, 17, 21 y 25. Puedes actualizar tus funciones existentes a la última versión soportada desde la consola remota. También puedes seleccionar el último runtime cuando crees funciones Java, o las inicialices desde el CLI. No hay deprecaciones activas de runtime de Java en este momento. Catalyst seguirá la misma política de deprecación gradual descrita en este documento cuando una versión del runtime de Java se acerque a su fin de vida. Por favor, consulta la Hoja de ruta de soporte de Oracle Java SE para mantenerte al día sobre el estado de soporte de cada versión de Java. ### Deprecaciones del runtime de Node.js Catalyst ha implementado un fin de soporte gradual para las versiones anteriores de Node.js. Las versiones se enumeran a continuación en orden descendente. * Node.js v18: La fase de deprecación de Node.js v18 comenzó el 30 de abril de 2025, coincidiendo con el anuncio oficial de fin de vida de la comunidad. Después del período de deprecación de un año hasta el 30 de abril de 2026, Node.js v18 entrará en el período de retiro el 30 de abril de 2026, y Catalyst finalizará su soporte para el runtime el 30 de julio de 2026. * Node.js v16: La fase de deprecación de Node.js v16 comenzó el 11 de septiembre de 2025. Después del período de deprecación de un año hasta el 11 de septiembre de 2026, Node.js v16 entrará en el período de retiro el 11 de septiembre de 2026, y Catalyst finalizará su soporte para el runtime el 11 de diciembre de 2026. * Node.js v14: La fase de deprecación de Node.js v14 comenzó el 30 de abril de 2025. Después del período de deprecación de un año hasta el 30 de abril de 2026, Node.js v14 entrará en el período de retiro el 30 de abril de 2026, y Catalyst finalizará su soporte para el runtime el 30 de julio de 2026. * Node.js v12: Fin de soporte completado. La fase de deprecación de Node.js v12 comenzó en abril de 2022. Después del período de deprecación de un año hasta el 30 de abril de 2023, Node.js v12 fue retirado el 31 de julio de 2023. Catalyst finalizó su soporte para el runtime el 31 de julio de 2023. * Node.js v10: Fin de soporte completado. La fase de deprecación de Node.js v10 comenzó en abril de 2021. Después de un período de deprecación extendido hasta el 31 de octubre de 2022, Node.js v10 fue retirado el 31 de enero de 2023. Catalyst finalizó su soporte para el runtime el 31 de enero de 2023. Por favor asegúrate de actualizar las funciones en tus proyectos de Catalyst a la última versión estable de Node.js. Nota: Catalyst ahora proporciona soporte para Node.js v20, v22 y v24. Puedes actualizar tus funciones existentes a la última versión soportada desde la consola remota. También puedes seleccionar el último runtime cuando crees funciones Node.js, o las inicialices desde el CLI. ### Deprecaciones del runtime de Python Catalyst actualmente soporta las versiones de Python 3.10, 3.11, 3.12 y 3.13. Puedes actualizar tus funciones existentes a la última versión soportada desde la consola remota. También puedes seleccionar el último runtime cuando crees funciones Python, o las inicialices desde el CLI. * Python 3.9: La fase de deprecación de Python 3.9 comenzó el 1 de junio de 2026. Después del período de deprecación de un año hasta el 1 de junio de 2027, Python 3.9 entrará en el período de retiro el 1 de junio de 2027, y Catalyst finalizará su soporte para el runtime el 1 de septiembre de 2027. Por favor asegúrate de actualizar las funciones en tus proyectos de Catalyst a una versión de Python compatible (3.10 o superior). Nota: Catalyst actualmente soporta Python 3.10, Python 3.11, Python 3.12 y Python 3.13. Puedes actualizar tus funciones existentes a la última versión soportada desde la consola remota. También puedes seleccionar el último runtime cuando crees funciones Python, o las inicialices desde el CLI. -------------------------------------------------------------------------------- title: "Optimización de costos y rendimiento" description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: "2026-07-02T09:34:15.954Z" source: "https://docs.catalyst.zoho.com/es/serverless/help/functions/optimization/" service: "Serverless" -------------------------------------------------------------------------------- # Optimización de costos y rendimiento en Functions ### Introducción Catalyst permite el aprovisionamiento de memoria para cada función que crees, según tus requisitos. Puedes seleccionar una memoria para tu función cuando la estés creando, o editar sus configuraciones en cualquier momento que lo necesites. La flexibilidad de personalizar la configuración de memoria de una función sobre la memoria asignada por defecto te permite optimizar tu uso de Catalyst y gestionar mejor los recursos. Puedes monitorear el rendimiento de tu aplicación, priorizar tus necesidades, tomar decisiones informadas para cada caso de uso y obtener beneficios sustanciales de ello. Esta página de ayuda explicará la correlación entre el aprovisionamiento de memoria en funciones y la optimización de costos, explicando los métodos de cálculo de precios de las funciones de Catalyst con algunos experimentos. Un aumento en el aprovisionamiento de memoria de funciones intensivas en cómputo idealmente resulta en un menor tiempo de ejecución, lo que a su vez reduce tus gastos en Catalyst. Sin embargo, la configuración óptima varía de un caso de uso a otro, dependiendo de la complejidad de las operaciones realizadas en la función. <br /> ### Cálculos de precios Esta sección explica el modelo de precios de Catalyst Functions. La tabla que se muestra a continuación presenta los créditos utilizados para diferentes rangos de tiempo de ejecución de funciones: <table class="content-table"> <thead> <tr> <th><strong>Tiempo de ejecución (en segundos)</strong></th> <th><strong>Créditos</strong></th> </tr> </thead> <tbody> <tr> <td>&lt;1</td> <td>0.5</td> </tr> <tr> <td>1-5</td> <td>1</td> </tr> <tr> <td>5-10</td> <td>5</td> </tr> <tr> <td>10-15</td> <td>10</td> </tr> <tr> <td>15-30</td> <td>15</td> </tr> </tbody> </table> <br /> Esta tabla muestra los créditos consumidos proporcionalmente al tiempo de ejecución, para cada configuración de memoria en funciones: <table class="content-table"> <thead> <tr> <th><strong>Memoria (MB)</strong></th> <th><strong>Créditos proporcionales al tiempo de ejecución</strong></th> </tr> </thead> <tbody> <tr> <td>128</td> <td>1</td> </tr> <tr> <td>256</td> <td>2</td> </tr> <tr> <td>512</td> <td>4</td> </tr> </tbody> </table> El costo de ejecución de funciones se calcula de la siguiente manera: <br /> Costo de ejecución de Functions = Número de Functions * Número de créditos basado en el tiempo de ejecución * Número de créditos basado en la memoria consumida <br /> Por ejemplo, aquí está el cálculo de los créditos consumidos en tres escenarios diferentes: * Si una función tarda 4 seg con 128 MB, créditos usados = 1 \* 1 \* 1 = 1 crédito * Si una función tarda 8 seg con 256 MB, créditos usados = 1\* 5 \* 2 = 10 créditos * Si una función tarda 0.5 seg con 512 MB, créditos usados = 1 \* 0.5 \* 4 = 2 créditos <br /> ### Experimentos con configuraciones de memoria para optimización de costos Discutamos las configuraciones óptimas de memoria de funciones y minimizaciones de costos, observando los resultados obtenidos en dos experimentos de la vida real. #### Experimento 1 Una función realiza un ordenamiento burbuja de números del 1 al 100 organizados en un arreglo ordenado de forma inversa. A continuación se muestran los gráficos de Application Performance Monitoring que representan el tiempo de respuesta promedio para esta función configurada en tres configuraciones de memoria diferentes: 128 MB, 256 MB, 512 MB. <br /> Se observó que la función con 128 MB tardó 35 milisegundos, la función con 256 MB tardó 29 milisegundos, y la de 512 MB tardó 16 milisegundos en ejecutarse. Calculemos ahora los créditos consumidos en cada uno de estos casos: <br /> **Caso 1 con 128 MB:** 1 \* 0.5 \* 1 = 0.5 créditos **Caso 2 con 256 MB:** 1 \* 0.5 \* 2 = 1 crédito **Caso 3 con 512 MB:** 1 \* 0.5 \* 4 = 2 créditos <br /> #### Experimento 2 Otra función realiza un ordenamiento burbuja de todos los números entre 1 y 10000 en un arreglo ordenado de forma inversa en múltiples pasadas, con cada pasada convirtiendo un arreglo de orden ascendente a descendente, y de vuelta al orden ascendente nuevamente. Esta función se configura en dos configuraciones de memoria diferentes: 128 MB y 512 MB. Los datos de ejecución de esta función en dos configuraciones de memoria revelan que la función con 128 MB tardó 6994 ms y la función con 512 MB de memoria tardó 3391 ms en ejecutarse. Calculemos ahora los créditos consumidos en cada uno de estos casos: **Caso 1 con 128 MB** 1\* 5 \* 1 = 5 créditos **Caso 2 con 512 MB:** 1\* 4 \* 1 = 4 créditos <br /> #### Inferencias Podemos obtener las siguientes inferencias de estas observaciones: * En casos de uso intensivos en cómputo o centrados en CPU, el rendimiento de una función de Catalyst mejora exponencialmente cuanto mayor sea la memoria que configures para ella. * En casos de uso que involucran operaciones menos intensivas, el consumo de créditos es directamente proporcional al aumento en las configuraciones de memoria. <br /> #### Conclusión Basándonos en estas inferencias, podemos llegar a las siguientes conclusiones: * Es más sabio optar por configuraciones de memoria más altas para funciones que contienen lógica de cálculo pesado.<br /><br /> Por ejemplo, supongamos que realizas 10,000 llamadas de función por mes de la función descrita en el experimento dos. Con 128 MB de memoria, la función consumirá 50,000 créditos por mes, mientras que con 512 MB de memoria la función consumirá solo 40,000 créditos por mes. Esto te ahorrará 10,000 créditos por mes y 120,000 créditos por año, si el mismo patrón continúa.\* <br /> Nota: *La conversión de créditos a precios se basa en tu uso. Puedes consultar el documento de Precios para más detalles. * Si una función no contiene lógica intensiva en cómputo, puedes asignar memoria adecuada a los requisitos de la función. Por ejemplo, si asignas 256 MB o 512 MB para una función simple que solo consume 100 MB de memoria, será un desperdicio de recursos y gastos, y el tiempo de respuesta seguirá siendo el mismo. La diferencia que hace personalizar la memoria de una función y elegir la configuración ideal para ella es significativa en términos de optimización de costos y mejoras de rendimiento. No existe una solución única cuando se trata de elegir la configuración correcta para tus funciones. Como regla general, puedes comenzar con la configuración de memoria más baja y realizar prueba y error hasta encontrar la configuración de memoria óptima. Catalyst Logs y Application Performance Monitoring pueden actuar como herramientas poderosas para ayudarte en el proceso. Puedes experimentar con las personalizaciones y herramientas proporcionadas por Catalyst, hasta obtener la solución adecuada para tu caso de uso y utilización. --- ## API Reference — Funciones -------------------------------------------------------------------------------- title: "Ejecutar función" description: "Esta API te permite ejecutar una función Basic I/O de Catalyst y pasar parámetros de entrada como cadena de consulta o en el cuerpo de la solicitud." last_updated: "2026-07-02T09:34:15.956Z" source: "https://docs.catalyst.zoho.com/es/api/code-reference/serverless/functions/execute-function/" service: "Serverless" -------------------------------------------------------------------------------- # Functions Catalyst Functions te permite construir funcionalidades personalizadas en tu aplicación e integrarla sin problemas con otros componentes de Catalyst para proporcionar un backend potente. Puedes automatizar tareas, realizar cálculos intensivos en memoria o integrar con servicios de terceros usando funciones. Catalyst ofrece soporte para desarrollar funciones del lado del servidor en entornos de programación Java, Node.js y Python. Nota: Puedes crear seis tipos de funciones en Catalyst: Basic I/O, Advanced I/O, Cron, Event, Integration y Browser Logic. Sin embargo, solo puedes ejecutar funciones Basic I/O usando esta API. # Ejecutar una función ### Descripción Esta API te permite ejecutar una función Basic I/O haciendo referencia a su ID de función único. Las funciones Basic I/O se utilizan para realizar operaciones básicas de entrada y salida, cálculos y operaciones HTTP simples. Los parámetros de entrada pueden pasarse a la función en la solicitud de la API ya sea como cadena de consulta o en el cuerpo de la solicitud. Se prefiere una cadena de consulta sobre el cuerpo de la solicitud para pasar los parámetros de la función. La respuesta contendrá la salida de la función. Nota: La función ya debe estar disponible en la consola remota. Puedes crear una función en la consola directamente, o crearla en tu sistema local y desplegarla en la consola. ### Detalles de la solicitud #### URL de solicitud <p>{api-domain}/baas/v1/project/{project_id}/function/{function_id}/execute</p> El dominio específico del DC para acceder a Catalyst API El ID único del proyecto El ID único de la función #### Métodos de solicitud GET POST PUT DELETE #### Encabezados de solicitud **Authorization:** Zoho-oauthtoken {oauth_token} **Encabezados opcionales** <br> **CATALYST-ORG:** {org_id} **Environment:** Development #### Alcance ZohoCatalyst.functions.EXECUTE Nota: Esta operación también puede ejecutarse con permisos de autenticación de usuario de Catalyst usando los SDKs de Catalyst. Consulta la [sección de Prerrequisitos de Catalyst API](/es/api/introduction/overview-and-prerequisites/#prerequisites) para más detalles. ### Detalles de la respuesta La respuesta contiene la salida de la función procesada. Una función Basic I/O devuelve la respuesta en formato JSON. La clave output contiene la salida generada por la función que ejecutas. curl -X POST \ https://api.catalyst.zoho.com/baas/v1/project/4000000006007/function/4000000045004/execute?name=Raymond%20McGregor \ -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" { "output": "Hello Raymond McGregor" } Execute a Function- Java SDK</br></br> Execute a Function- Node.js SDK</br></br> Execute a Function- Python SDK</br><br> Execute a Function- Web SDK --- ## SDK — Android — Funciones -------------------------------------------------------------------------------- title: "Crear una instancia de Function" description: "Catalyst Functions te permite construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrarte con servicios de terceros." last_updated: "2026-07-02T09:34:15.964Z" source: "https://docs.catalyst.zoho.com/es/sdk/android/v2/serverless/functions/create-function-instance/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions te permite construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrarte con servicios de terceros. Puedes desarrollar funciones para tu aplicación Android desde la consola de Catalyst o el CLI. Nota: Puedes crear seis tipos de funciones en Catalyst: Basic I/O, Advanced I/O, Cron, Event, Integration y Browser Logic. Sin embargo, solo puedes ejecutar funciones Basic I/O en el Catalyst Android SDK. ### Crear una instancia de Function Puedes crear una instancia de una función de Catalyst usando el método **getFunctionInstance()**, y habilitar los métodos definidos en esta clase para acceder al objeto de la instancia. Esto evitará llamadas innecesarias al servidor. Puedes crear una instancia de función de cualquiera de las siguientes maneras: ### Crear una instancia de Function pasando el Function ID Puedes pasar el Function ID único de la función como argumento al método getFunctionInstance() y crear una instancia para ella: ZCatalystApp.getInstance().getFunctionInstance( id: Long ): ZCatalystFunction **Parámetros**: * **id**: El Function ID único de la función A continuación se muestra un fragmento de código de ejemplo: ZCatalystApp.getInstance().getFunctionInstance(2823000000011091) //Reemplaza esto con tu Function ID ### Crear una instancia de Function pasando el nombre API de la función Puedes pasar el nombre API de la función como argumento al método getFunctionInstance() y crear una instancia para ella: ZCatalystApp.getInstance().getFunctionInstance( apiName: String ): ZCatalystFunction **Parámetros**: * **apiName**: El nombre de la función configurada en Catalyst A continuación se muestra un fragmento de código de ejemplo: ZCatalystApp.getInstance().getFunctionInstance("LocalBackup") //Reemplazar con el nombre de tu función -------------------------------------------------------------------------------- title: "Ejecutar una Function" description: "Puedes ejecutar una función de Catalyst de varias maneras, según la solicitud HTTP que pases con la función." last_updated: "2026-07-02T09:34:15.964Z" source: "https://docs.catalyst.zoho.com/es/sdk/android/v2/serverless/functions/execute-function/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Implementing Functions (/es/serverless/help/functions/implementation) - Execute Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Ejecutar una Function Puedes ejecutar una función Basic I/O de Catalyst de cualquiera de las maneras que se indican a continuación, según la solicitud HTTP que pases con la función. Puedes pasar los parámetros a la función que se ejecutará como argumento a un método de ejecución de función. Este método difiere para cada tipo de solicitud HTTP. El &lt;FUNCTION_INSTANCE&gt; utilizado en todas las secciones de código a continuación es la instancia definida en la página de instancia de Function. ### Ejecutar una función GET Puedes ejecutar una función del tipo HTTP GET pasando los parámetros al método **executeGet()** como un Hash map: &lt;FUNCTION_INSTANCE&gt;.executeGet( params: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map A continuación se muestra un fragmento de código de ejemplo: ZCatalystApp.getInstance().getFunctionInstance(2823000000097020).executeGet( //Reemplaza esto con tu Function ID hashMapOf(), { println(">> GET function executed successfully - $it") }, { println(">> GET function failed to execute - $it") } ) <br> ### Ejecutar una función PUT Puedes ejecutar una función del tipo HTTP PUT pasando los parámetros al método **executePut()** como un Hash map. También puedes pasar el payload en la solicitud PUT a este método como un argumento Hash map: &lt;FUNCTION_INSTANCE&gt;.executePut( params: HashMap&lt;String, Any&gt;, body: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map * **body**: El payload de datos que se pasará como un Hash map A continuación se muestra un fragmento de código de ejemplo: val body = HashMap&lt;String, Any&gt;() body.put("ROWID", "2823000000098012") body.put("Category", "Important") //Agregar tus claves y valores a un hash map ZCatalystApp.getInstance().getFunctionInstance(2823000000097114).executePut( //Reemplaza esto con tu Function ID hashMapOf(), body, { println(" &gt;&gt; PUT function executed successfully - $it") }, { println(" &gt;&gt; PUT function failed to execute - $it") } ) <br> ### Ejecutar una función POST Puedes ejecutar una función del tipo HTTP POST pasando los parámetros al método **executePOST()** como un Hash map. También puedes pasar el payload en la solicitud POST a este método como un argumento Hash map: &lt;FUNCTION_INSTANCE&gt;.executePost( params: HashMap&lt;String, Any&gt; , body: HashMap&lt;String, Any&gt; , success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map * **body**: El payload de datos que se pasará como un Hash map A continuación se muestra un fragmento de código de ejemplo: val body = HashMap&lt;String, Any&gt;() body.put("Title", "Data Migration Tasks") body.put("Category", "Official") //Agregar tus claves y valores a un hash map ZCatalystApp.getInstance().getFunctionInstance(2823000000097089).executePost( //Reemplaza esto con tu Function ID hashMapOf(), body, { println(" &gt;&gt; POST function executed successfully - $it") }, { println(" &gt;&gt; POST function failed to execute - $it") } ) <br> ### Ejecutar una función DELETE Puedes ejecutar una función del tipo HTTP DELETE pasando los parámetros al método **executeDelete()** como un Hash map. También puedes pasar el payload en la solicitud DELETE a este método como un argumento Hash map: &lt;FUNCTION_INSTANCE&gt;.executeDelete( params: HashMap&lt;String, Any&gt;, success: (String) → Unit, failure: ((ZCatalystException) → Unit)? ): ZCatalystRequest&lt;String&gt;? **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map A continuación se muestra un fragmento de código de ejemplo: val body = HashMap&lt;String, Any&gt;() ZCatalystApp.getInstance().getFunctionInstance(2823000000097089).executeDelete( //Reemplaza esto con tu Function ID hashMapOf() { println(" >> DELETE function executed successfully - $it") }, { println(" >> DELETE function failed to execute - $it") } ) --- ## SDK — Flutter — Funciones -------------------------------------------------------------------------------- title: "Crear una instancia de Function" description: "Las funciones de Catalyst te permiten construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrarte con servicios de terceros." last_updated: "2026-07-02T09:34:15.964Z" source: "https://docs.catalyst.zoho.com/es/sdk/flutter/v2/serverless/functions/create-function-instance/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions te permiten construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrarte con servicios de terceros. Puedes desarrollar funciones para tu aplicación móvil desde la consola de Catalyst o el CLI. Nota: Puedes crear seis tipos de funciones en Catalyst: Basic I/O, Advanced I/O, Cron, Event, Integration y Browser Logic. Sin embargo, solo puedes ejecutar funciones Basic I/O en el SDK de Flutter de Catalyst. ### Crear una instancia de Function Puedes crear una instancia de una función de Catalyst usando el método **getFunctionInstance()**, y habilitar los métodos definidos en esta clase para acceder al objeto de instancia. Esto evitará llamadas innecesarias al servidor. La instancia de función se puede obtener de dos maneras diferentes. ### Pasando el ID de la función Puedes crear una instancia de función pasando el ID de la función como argumento al método getFunctionInstance() en formato String como se muestra en la sintaxis a continuación: ZCatalystApp.getInstance().getFunctionInstance( String identifier ) **Parámetros**: * **functionID**: El ID único de la función configurada en Catalyst A continuación se muestra un fragmento de código de ejemplo: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "158798998356682"); <br> ### Pasando el nombre API de la función Puedes crear una instancia de función pasando el nombre API de la función como argumento al método getFunctionInstance() en formato String como se muestra en la sintaxis a continuación: ZCatalystApp.getInstance().getFunctionInstance( String identifier ) **Parámetros**: * **identifier**: El nombre de la función configurada en Catalyst A continuación se muestra un fragmento de código de ejemplo: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "LocalBackUp"); -------------------------------------------------------------------------------- title: "Ejecutar una función" description: "Puedes ejecutar una función de Catalyst de varias maneras, según la solicitud HTTP que pases con la función." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/flutter/v2/serverless/functions/execute-function/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Implementing Functions (/es/serverless/help/functions/implementation) - Execute Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Ejecutar una función Puedes ejecutar una función Basic I/O de Catalyst de cualquiera de las maneras que se indican a continuación, según la solicitud HTTP que pases con la función. Puedes pasar los parámetros a la función que se ejecutará como argumento a un método de ejecución de función. Este método difiere para cada tipo de solicitud HTTP. El &lt;FUNCTION_INSTANCE&gt; utilizado en todas las secciones de código a continuación es la instancia definida en la página de instancia de Function. ### Ejecutar una función GET Puedes ejecutar una función del tipo HTTP GET pasando los parámetros al método **executeGET()** como un Hash map: Future&lt;String?&gt; &lt;FUNCTION_INSTANCE&gt;.executeGET( Map&lt;String, Dynamic&gt; params) **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map A continuación se muestra un fragmento de código de ejemplo: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: "LocalBackUp"); try{ var output = function.executeGET( params: { 'id': 2345642, //Pasar los parámetros a la función }); print('Function output: $output'); } on ZCatalystException catch (ex) { print(ex.toString()); } <br> ### Ejecutar una función PUT Puedes ejecutar una función del tipo HTTP PUT pasando los parámetros al método **executePUT()** como un Hash map. También puedes pasar el payload en la solicitud PUT a este método como un argumento Hash map: Future&lt;String?&gt; &lt;FUNCTION_INSTANCE&gt;.executePUT(Map&lt;String, Dynamic&gt; body, [Map&lt;String, Dynamic&gt;? params]) **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map * **body**: El payload de datos que se pasará como un Hash map A continuación se muestra un fragmento de código de ejemplo: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: 'LocalBackUp'); var body = &lt;String, Dynamic&gt;{ "ROWID": "2823000000098012", "Category": "Important" }; //Definir la instancia de la función y pasar el payload al mapa try{ var output = await function.executePUT( body: body, params: { 'id': 2345642, //Pasar los parámetros a la función }); print('Function output: $output'); } on ZCatalystException catch (ex) { print(ex.toString()); } <br> ### Ejecutar una función POST Puedes ejecutar una función del tipo HTTP POST pasando los parámetros al método **executePOST()** como un Hash map. También puedes pasar el payload en la solicitud POST a este método como un argumento Hash map: Future&lt;String?&gt; executePOST(Map&lt;String, dynamic&gt; body) **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map * **body**: El payload de datos que se pasará como un Hash map A continuación se muestra un fragmento de código de ejemplo: ZCatalystFunction function = ZCatalystApp.getInstance().getFunctionInstance(identifier: 'LocalBackUp'); var body = &lt;String, Dynamic&gt;{ "ROWID": "2823000000098012", "Category": "Important" //Definir la instancia de la función y pasar el payload al mapa hash }; try{ var output = await function.executePOST(body: body); print('Function output: $output'); } on ZCatalystException catch (ex) { print(ex.toString()); } ### Ejecutar una función DELETE Puedes ejecutar una función del tipo HTTP DELETE pasando los parámetros al método **executeDELETE()** como un Hash map. También puedes pasar el payload en la solicitud DELETE a este método como un argumento Hash map: Future&lt;APIResponse&gt; &lt;FUNCTION_INSTANCE&gt;.executeDELETE(Map&lt;String, Dynamic&gt; body, [Map&lt;String, Dynamic&gt;? params]) **Parámetros**: * **params**: Los parámetros que se pasarán a la función como un Hash map * **body**: El payload de datos que se pasará como un Hash map A continuación se muestra un fragmento de código de ejemplo: try { ZCatalystFunction function = app.getFunctionInstance(identifier: 'DeleteData'); var response = await function.executeDELETE({"id": 298922}); } on ZCatalystException catch (ex) { print(ex.toString()); } --- ## SDK — iOS — Funciones -------------------------------------------------------------------------------- title: "Crear una instancia de función" description: "Las funciones de Catalyst te permiten crear funcionalidades personalizadas en tu aplicación, automatizar tareas o integrar con servicios de terceros." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/ios/v2/serverless/functions/create-function-instance/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Crear una instancia de función Las funciones de Catalyst te permiten crear funcionalidades personalizadas en tu aplicación, automatizar tareas o integrar con servicios de terceros. Puedes desarrollar funciones para tu aplicación iOS desde la consola de Catalyst o el CLI. ### Crear una instancia de función Puedes crear una instancia de una función de Catalyst utilizando el método **getFunctionInstance()**, y habilitar los métodos definidos en esta clase para acceder al objeto de la instancia. Esto prevendrá llamadas innecesarias al servidor. Puedes crear una instancia de función de cualquiera de las siguientes formas: #### i. Pasando el ID de la función Puedes pasar el ID de función único de la función como argumento al método getFunctionInstance() y crear una instancia para ella: ZCatalystApp.shared.getFunctionInstance( id : Int64 ) -> ZCatalystFunction **Parámetros**: * **id**: El ID de función único de la función. A continuación se muestra un fragmento de código de ejemplo: let function_instance = ZCatalystApp.shared.getFunctionInstance ( id : 1096000000002053 ) //Reemplaza esto con tu Function ID #### ii. Pasando el nombre de la función Puedes pasar el nombre API de la función como argumento al método getFunctionInstance() y crear una instancia para ella: ZCatalystApp.shared.getFunctionInstance( name : String ) -> ZCatalystFunction **Parámetros**: * **name**: El nombre de la función configurada en Catalyst A continuación se muestra un fragmento de código de ejemplo: let function_instance = ZCatalystApp.shared.getFunctionInstance ( name : "LocalBackup") //Reemplazar con el nombre de tu función -------------------------------------------------------------------------------- title: "Ejecutar una función" description: "Las funciones de Catalyst te permiten crear funcionalidades personalizadas en tu aplicación, automatizar tareas o integrar con servicios de terceros." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/ios/v2/serverless/functions/execute-function/" service: "Serverless" related: - Functiona (/es/serverless/help/functions/introduction) - Implementing Functions (/es/serverless/help/functions/implementation) - Execute Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Ejecutar una función Puedes ejecutar una función de Catalyst de cualquiera de las formas que se indican a continuación, según la solicitud HTTP que pases con la función. Puedes pasar los parámetros a la función a ejecutar como argumento a un método de ejecución de función. Este método difiere para cada tipo de solicitud HTTP. Nota: Puedes crear seis tipos de funciones en Catalyst: Basic I/O, Advanced I/O, Cron, Integration, Event y BrowserLogic. Sin embargo, solo puedes ejecutar funciones Basic I/O en el iOS SDK de Catalyst. La &lt;FUNCTION_INSTANCE&gt; utilizada en todas las secciones de código a continuación es la instancia definida en la página de instancia de función. ### Ejecutar una función GET Puedes ejecutar una función del tipo HTTP GET pasando los parámetros al método **executeGet()**: &lt;FUNCTION_INSTANCE&gt;.executeGet( parameters params : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError &gt; ) -&gt; Void ) **Parámetros**: * **params**: Los parámetros a pasar a la función como un Hash map A continuación se muestra un fragmento de código de ejemplo: ZCatalystApp.shared.getFunctionInstance(id: 2823000000097020).executeGet() //Reemplaza esto con tu ID de función { result in switch result { case .success(let output) : print("GET function executed successfully - \( output )") case .error(let error) : print("GET function failed to execute - \( error )") } } ### Ejecutar una función PUT Puedes ejecutar una función del tipo HTTP PUT, pasando los parámetros al método **executePut()** como un Hash map. También puedes pasar el payload en la solicitud PUT a este método como argumento de Hash map: &lt;FUNCTION_INSTANCE&gt;.executePut( parameters params : [ String : Any ]? = nil, body : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError > ) -> Void ) **Parámetros**: * **params**: Los parámetros a pasar a la función como un Hash map * **body**: El payload de datos a pasar como un Hash map A continuación se muestra un fragmento de código de ejemplo: var params : [ String : Any ] = [:] params[ "ROWID" ] = "2823000000098012" params[ "Category" ] = "Important" ZCatalystApp.shared.getFunctionInstance(id: 2823000000097020).executePut(parameters: params) //Reemplaza esto con tu ID de función { result in switch result { case .success(let output) : print("PUT function executed successfully - \( output )") case .error(let error) : print("PUT function failed to execute - \( error )") } } ### Ejecutar una función POST Puedes ejecutar una función del tipo HTTP POST, pasando los parámetros al método **executePOST()** como un Hash map. También puedes pasar el payload en la solicitud POST a este método como argumento de Hash map: &lt;FUNCTION_INSTANCE&gt;.executePost( parameters params : [ String : Any ]? = nil, body : [ String : Any ]? = nil, completion : @escaping( Result< String, ZCatalystError > ) -> Void ) **Parámetros**: * **params**: Los parámetros a pasar a la función como un Hash map * **body**: El payload de datos a pasar como un Hash map A continuación se muestra un fragmento de código de ejemplo: var params : [ String : Any ] = [:] params[ "Title" ] = "Data Migration Tasks" params[ "Category" ] = "Official" ZCatalystApp.shared.getFunctionInstance(id: 2823000000097020).executePost(parameters: ) //Reemplaza esto con tu ID de función { result in switch result { case .success(let output) : print("POST function executed successfully - \( output )") case .error(let error) : print("POST function failed to execute - \( error )") } } --- ## SDK — Java — Funciones -------------------------------------------------------------------------------- title: "Ejecutar Function" description: "Esta página describe el método para ejecutar funciones en tu aplicación Java con fragmentos de código de ejemplo." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/java/v1/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions (/es/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Ejecutar function El grupo de funciones en Catalyst se crea y define usando el editor en línea o la interfaz de línea de comandos (CLI). El grupo de funciones puede ejecutarse para verificar su funcionalidad. ### Ejecutar Function Si necesitas ejecutar un endpoint de función, puedes usar el siguiente fragmento de código. Aquí, los parámetros de la función se construyen como objetos JSON y se pasan a través del método executeFunction(). El function ID es un valor entero largo numérico generado automáticamente. #### Fragmento de código de ejemplo <br> import org.json.simple.JSONObject; import com.zc.functions.ZCatalystFunction; //Crear un JSONObject para añadir parámetros JSONObject jsonobj = new JSONObject(); //Agregar Parámetros como pares clave-valor para pasarlos al método jsonobj.put("Name", "Amelia"); //Ejecutar el método referenciando el groupId de la función con el objeto JSON Object result = ZCatalystFunction.getInstance().getFunctionInstance(1510000000054095L).executeFunction(jsonobj); Nota: También puedes pasar el nombre de la función como un string al método getFunctionInstance() en lugar de usar el function ID. --- ## SDK — Node JS — Funciones -------------------------------------------------------------------------------- title: "Obtener instancia de Functions" description: "Esta página describe el método para ejecutar funciones en tu aplicación NodeJS con fragmentos de código de ejemplo." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/nodejs/v2/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Functions El grupo de funciones en Catalyst se crea y define a través del editor en línea de Catalyst o la Interfaz de Línea de Comandos (CLI). Las funciones en un grupo de funciones pueden ejecutarse tanto en un entorno de pruebas como en el entorno de producción. #### Obtener una instancia del componente La referencia de función se puede crear usando el siguiente método que no dispara una llamada del lado del servidor. //Obtener una instancia de la función let functions = app.functions(); -------------------------------------------------------------------------------- title: "Ejecutar función" description: "Esta página describe el método para ejecutar funciones en tu aplicación NodeJS con fragmentos de código de ejemplo." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/nodejs/v2/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions (/es/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Ejecutar una función Una función puede ejecutarse llamando al método _execute()_ en el cual se pasan como parámetros el ID de la función y la configuración (de tipo JSON). La referencia _functions_ utilizada en los fragmentos de código a continuación es la instancia del componente. #### Crear una configuración de función (JSON) Antes de ejecutar una función, debes establecer la configuración requerida para ella. Aquí, la configuración especifica los argumentos de la función y sus valores. (parámetros de función) La configuración se puede establecer usando el siguiente fragmento de código: //Create Configuration for function Execution let conf = { args: { Name: 'Amelia' } } ### Ejecutar función El ID único de la función se pasa como parámetro a la función execute() para llamar a la función que se ejecutará con la configuración necesaria. La promesa devuelta aquí se resolverá a un objeto que es un JSON. let functions = app.functions(); //Llamar a la Función con el ID de función y la configuración let promiseResult = functions.execute(1510000000059262, conf); promiseResult.then((functionResponse) => { console.log(functionResponse); }); Note: También puedes pasar el nombre de la función como una cadena al método execute() en lugar de usar el ID de la función. --- ## SDK — Python — Funciones -------------------------------------------------------------------------------- title: "Obtener instancia del componente" description: "Esta página describe el método para ejecutar funciones en tu aplicación Python con fragmentos de código de ejemplo." last_updated: "2026-07-02T09:34:15.965Z" source: "https://docs.catalyst.zoho.com/es/sdk/python/v1/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions Help (/es/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Functions Catalyst Serverless Functions son estructuras de código personalizadas que contienen la lógica de negocio de tu aplicación Catalyst. Se pueden crear usando la consola de Catalyst o el CLI. Esta sección cubre los diversos métodos del SDK que se pueden usar para implementar funciones en tu aplicación Catalyst. #### Obtener una instancia del componente Una instancia del componente es un objeto que se puede usar para acceder a las configuraciones predefinidas específicas de un componente en particular. Este proceso no realizará una llamada del lado del servidor. La referencia app utilizada en el código a continuación es el objeto Python devuelto como respuesta durante la inicialización del SDK. Puedes crear una nueva instancia de function_service como se muestra a continuación. Esta instancia del componente se utilizará en la siguiente sección al ejecutar la función. #Obtener instancia del componente Function function_service = app.functions() -------------------------------------------------------------------------------- title: "Ejecutar función" description: "Esta página describe el método para ejecutar funciones en tu aplicación Python con fragmentos de código de ejemplo." last_updated: "2026-07-02T09:34:15.966Z" source: "https://docs.catalyst.zoho.com/es/sdk/python/v1/serverless/functions/execute-function/" service: "Serverless" related: - Execute Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) - Functions Help (/es/serverless/help/functions/introduction) -------------------------------------------------------------------------------- # Ejecutar la función Una función puede ejecutarse llamando al método execute() en el cual se pasan el ID de la función y la configuración (de tipo diccionario) como parámetros. Para conocer más sobre la instancia del componente function_service utilizada a continuación, consulta esta sección de ayuda. Antes de ejecutar una función, debes establecer la configuración requerida para ella. Aquí, la configuración especifica los argumentos de la función y sus valores. El functionID único se pasa como parámetro al método execute() para llamar a la función a ejecutar con la configuración necesaria. La configuración se puede establecer usando el siguiente fragmento de código: **Parámetros utilizados** <table class="content-table"> <thead> <tr> <th class="w20p">Nombre del parámetro</th> <th class="w20p">Tipo de dato</th> <th class="w60p">Definición</th> </tr> </thead> <tbody> <tr> <td>function_ID</td> <td>Numeric</td> <td>Un parámetro obligatorio. Almacenará el ID único de la función a ejecutar.</td> </tr> <tr> <td>function_config</td> <td>Object</td> <td>Un parámetro obligatorio. Almacenará la configuración de la función a ejecutar.</td> </tr> </tbody> </table> function_service = app.functions() args = {"Name": "Amelia"} return_value = function_service.execute(5249000000015567, args) Info : 1. Consulta la tabla de SDK Scopes para determinar el nivel de permiso requerido para realizar la operación anterior. 2. También puedes pasar el nombre de la función como una cadena al método execute() en lugar de usar el ID de la función. --- ## SDK — Web — Funciones -------------------------------------------------------------------------------- title: "Obtener una instancia del componente" description: "Las funciones de Catalyst te permiten construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrar con servicios de terceros." last_updated: "2026-07-02T09:34:15.966Z" source: "https://docs.catalyst.zoho.com/es/sdk/web/v4/serverless/functions/get-component-instance/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Functions El grupo de Functions en Catalyst se crea y define a través del editor en línea de Catalyst o la Interfaz de Línea de Comandos (CLI). Las funciones en un grupo de funciones se pueden ejecutar en un entorno de pruebas así como en el entorno de producción. ### Obtener una instancia del componente La referencia de funciones se puede crear mediante el siguiente método, el cual no realizará una llamada del lado del servidor. //Obtener una instancia de la función var functions = catalyst.function; -------------------------------------------------------------------------------- title: "Obtener un objeto de función" description: "Las funciones de Catalyst te permiten construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrar con servicios de terceros." last_updated: "2026-07-02T09:34:15.966Z" source: "https://docs.catalyst.zoho.com/es/sdk/web/v4/serverless/functions/get-function-object/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Obtener un objeto de función Un objeto de función se puede crear mediante el siguiente método, el cual no realizará una llamada del lado del servidor. El ID único de la función se pasa como parámetro al método. El **functions** utilizado en el fragmento de código a continuación es la instancia del componente. //Get the function object by passsing the function ID var functions = catalyst.function; var functionObject = functions.functionId(FUNCTION_ID); -------------------------------------------------------------------------------- title: "Ejecutar la función" description: "Las funciones de Catalyst te permiten construir funcionalidades personalizadas en tu aplicación, automatizar tareas o integrar con servicios de terceros." last_updated: "2026-07-02T09:34:15.966Z" source: "https://docs.catalyst.zoho.com/es/sdk/web/v4/serverless/functions/execute-function/" service: "Serverless" related: - Functions (/es/serverless/help/functions/introduction) - Function - API (/es/api/code-reference/serverless/functions/execute-function/#ExecuteFunction) -------------------------------------------------------------------------------- # Ejecutar la función Una función se puede ejecutar llamando al método execute() en el cual se pasa la configuración (de tipo JSON) como parámetro. El objeto **function** utilizado en el fragmento de código es el objeto de función. ### Crear una configuración de función Antes de ejecutar una función, es obligatorio establecer la configuración requerida para ella. Aquí, la configuración especifica los argumentos de la función (como **args**) si los hay. //Crear el objeto de configuración utilizado para ejecutar la función. //args es un JSONObject para pasar valores a la función como parámetros. var config = { "args": {"name": "xxx"}, "method":"GET" }; Los métodos HTTP soportados son: GET, PUT, POST, PATCH y DELETE. El método GET es el predeterminado. Si usas GET en tu código, los argumentos de la función se pasan como cadenas de consulta. Si usas cualquiera de los otros métodos HTTP, los argumentos de la función se pasan en el cuerpo de la solicitud. ### Ejecutar función La función se puede ejecutar pasando el objeto de **configuración** como argumento al método execute(). La promesa devuelta aquí se resolverá a un objeto en el cual la clave content contiene la salida de la función ejecutada. //Ejecutar la función pasando el objeto de configuración var functions = catalyst.function; var functionObject = functions.functionId(FUNCTION_NAME); //can pass Function Id or Function Name as argument var functionPromise = functionObject.execute(config); functionPromise .then((response) => { response.json().then(responseBody => { console.log(responseBody); }); }) .catch((err) => { console.log(err); });