Перейти к основному содержанию

Определите рабочий процесс

Приложения могут включать рабочие процессы. Каждый вызов defineWorkflow() описывает один рабочий процесс: триггер и выполняемые им шаги. При установке Twenty создает его как активный рабочий процесс в рабочей области, готовый к запуску. Этот рабочий процесс запускается при создании компании. Она вызывает одну из логических функций приложения, затем записывает результат в компанию:
src/workflows/score-new-companies.ts
Основные моменты:
  • Рабочий процесс, его триггер и каждый шаг должны иметь собственный universalIdentifier. Сохраняйте их неизменными между релизами: по ним Twenty сопоставляет установленный рабочий процесс при следующей установке.
  • nextStepIds связывает граф. Триггер указывает на первые шаги, а каждый шаг указывает на шаги, выполняемые после него.
  • Шаг считывает предыдущий вывод с помощью {{trigger.\<path>}} или {{\<step universalIdentifier>.\<path>}}.
  • Сборка проверяет всё определение: неподдерживаемые типы триггеров или шагов, повреждённые связи между шагами и ссылки на неизвестные шаги приводят к её сбою.

Ссылки на другие сущности

Шаги и триггеры ссылаются на метаданные по универсальному идентификатору, а не по имени или id:
  • Объекты и поля: собственные объекты и поля вашего приложения или стандартные через STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS. В приведённом выше примере предполагается, что приложение также определяет числовое поле leadScore в Company с помощью defineField(): шаг записи, который записывает поле, отсутствующее в рабочем пространстве, приводит к сбою установки.
  • Логические функции: собственные функции вашего приложения, доступные как действие рабочего процесса с workflowActionTriggerSettings. Пользовательское приложение рабочего пространства также может ссылаться на действия рабочих процессов других приложений, установленных в рабочем пространстве, как это могут рабочие процессы, созданные в приложении.
  • Агенты: собственные агенты вашего приложения из defineAgent().
Ссылка, которую Twenty не может разрешить, приводит к сбою установки.

Триггеры

Ручной рабочий процесс без availability не получает пункта меню команд. Рабочий процесс webhook прослушивает https://\<your-twenty-domain>/webhooks/workflows/\<workspaceId>/\<workflowId>, где workflowId — это id установленного рабочего процесса. Тело запроса доступно как {{trigger.\<path>}}.

Шаги

Рабочие процессы приложения поддерживают следующие типы шагов: 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 и EMPTY. Их входные данные соответствуют шагам конструктора рабочих процессов, но вместо имён используются универсальные идентификаторы:
  • Шаги записи используют objectUniversalIdentifier вместо имени объекта.
  • Фильтры и сортировки ссылаются на поля с помощью fieldMetadataUniversalIdentifier.
  • Поля формы типа RECORD именуют свой объект с помощью settings.objectUniversalIdentifier. Поля типа SELECT и MULTI_SELECT предлагают варианты существующего поля того же типа, именуемого с помощью settings.selectedFieldUniversalIdentifier.
  • Чтобы выполнить собственный код, используйте шаг LOGIC_FUNCTION. Шаг Code в конструкторе недоступен.
  • Шаги электронной почты и календаря выполняются, только если роль вашего приложения имеет соответствующий флаг разрешения: SystemPermissionFlag.SEND_EMAIL_TOOL для SEND_EMAIL и DRAFT_EMAIL, SystemPermissionFlag.CREATE_CALENDAR_EVENT_TOOL для CREATE_CALENDAR_EVENT. Рабочая область предоставляет его при установке приложения, после чего шаг может использовать любую подключенную учетную запись в рабочей области, как рабочий процесс, созданный в приложении.
  • Идентификаторы подключенных учетных записей локальны для каждой рабочей области, поэтому не задавайте такой идентификатор жестко в коде. Передайте учетную запись в качестве переменной. Шаги электронной почты также принимают идентификатор участника рабочего пространства, например {{trigger.properties.after.assigneeId}}, который разрешается в первую учетную запись этого участника, способную отправлять сообщения.

После установки

  • Рабочий процесс становится активным сразу после установки приложения, а его запуски отображаются вместе с другими запусками рабочих процессов рабочего пространства.
  • Установка новой версии приложения обновляет рабочий процесс на месте.
  • Пользователи не могут редактировать установленный рабочий процесс. Чтобы настроить такой рабочий процесс, они создают его дубликат: копию можно редактировать.