Saltar al contenido principal

Define un flujo de trabajo

Las aplicaciones pueden incluir flujos de trabajo. Cada llamada a defineWorkflow() describe un flujo de trabajo: un desencadenador y los pasos que ejecuta. Al instalarse, Twenty lo crea como un flujo de trabajo activo en el espacio de trabajo, listo para ejecutarse. Este flujo de trabajo se ejecuta cuando se crea una empresa. Llama a una de las funciones lógicas de la aplicación y, después, escribe el resultado en la empresa:
src/workflows/score-new-companies.ts
Puntos clave:
  • El flujo de trabajo, su desencadenador y cada paso necesitan su propio universalIdentifier. Mantenlos estables entre versiones: así es como Twenty encuentra el flujo de trabajo instalado en la próxima instalación.
  • nextStepIds conecta el grafo. El desencadenador apunta a los primeros pasos, y cada paso apunta a los pasos que se ejecutan después de él.
  • Un paso lee la salida anterior con {{trigger.\<path>}} o {{\<step universalIdentifier>.\<path>}}.
  • La compilación valida toda la definición: los tipos de desencadenador o de paso no compatibles, los enlaces de pasos rotos y las referencias a pasos desconocidos hacen que falle.

Referencia a otras entidades

Los pasos y los desencadenadores apuntan a metadatos mediante identificador universal, nunca por nombre o id:
  • Objetos y campos: los propios de tu aplicación o los estándar mediante STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS. El ejemplo anterior supone que la aplicación también define un campo numérico leadScore en Company con defineField(): un paso de registro que escribe en un campo que falta en el espacio de trabajo hace que falle la instalación.
  • Funciones lógicas: las propias de tu aplicación, expuestas como una acción de flujo de trabajo con workflowActionTriggerSettings. La aplicación Personalizada del espacio de trabajo también puede hacer referencia a las acciones de flujo de trabajo de las otras aplicaciones instaladas en el espacio de trabajo, al igual que los flujos de trabajo creados en la aplicación.
  • Agentes: los propios de tu aplicación, de defineAgent().
Una referencia que Twenty no puede resolver hace que falle la instalación.

Disparadores

Un flujo de trabajo manual sin availability no obtiene ninguna entrada en el menú de comandos. Un flujo de trabajo de webhook escucha en https://\<your-twenty-domain>/webhooks/workflows/\<workspaceId>/\<workflowId>, donde workflowId es el id del flujo de trabajo instalado. El cuerpo de la solicitud está disponible como {{trigger.\<path>}}.

Pasos

Los flujos de trabajo de la aplicación admiten estos tipos de pasos: LOGIC_FUNCTION, AI_AGENT, HTTP_REQUEST, CLASSIFY, CREATE_RECORD, UPDATE_RECORD, UPSERT_RECORD, DELETE_RECORD, FIND_RECORDS, PICK_RECORD, FILTER, IF_ELSE, ITERATOR, FORM, DELAY, WAIT_FOR_EVENT, SEND_EMAIL, DRAFT_EMAIL, CREATE_CALENDAR_EVENT y EMPTY. Sus entradas coinciden con los pasos del generador de flujos de trabajo, con identificadores universales en lugar de nombres:
  • Los pasos de registro usan objectUniversalIdentifier en lugar de un nombre de objeto.
  • Los filtros y las ordenaciones apuntan a campos con fieldMetadataUniversalIdentifier.
  • Los campos de formulario de tipo RECORD nombran su objeto con settings.objectUniversalIdentifier. Los campos de tipo SELECT y MULTI_SELECT ofrecen las opciones de un campo existente del mismo tipo, denominado con settings.selectedFieldUniversalIdentifier.
  • Para ejecutar tu propio código, usa un paso LOGIC_FUNCTION. El paso Code del constructor no está disponible.
  • Los pasos de correo electrónico y calendario se ejecutan solo si el rol de tu aplicación tiene el indicador de permiso correspondiente: SystemPermissionFlag.SEND_EMAIL_TOOL para SEND_EMAIL y DRAFT_EMAIL, SystemPermissionFlag.CREATE_CALENDAR_EVENT_TOOL para CREATE_CALENDAR_EVENT. El espacio de trabajo lo concede al instalar la aplicación, y el paso puede usar cualquier cuenta conectada en el espacio de trabajo, como un flujo de trabajo creado en la aplicación.
  • Los ID de las cuentas conectadas son locales para cada espacio de trabajo, así que no codifiques uno de forma fija. Pase la cuenta como una variable. Los pasos de correo electrónico también aceptan un id de miembro del espacio de trabajo, como {{trigger.properties.after.assigneeId}}, que se resuelve en la primera cuenta de ese miembro que puede enviar.

Después de la instalación

  • El flujo de trabajo está activo en cuanto se instala la aplicación, y sus ejecuciones aparecen junto con las otras ejecuciones de flujos de trabajo del espacio de trabajo.
  • La instalación de una nueva versión de la aplicación actualiza el flujo de trabajo en el mismo lugar.
  • Los usuarios no pueden editar un flujo de trabajo instalado. Para personalizar uno, lo duplican: la copia es suya para editarla.