В этом справочнике перечислены воркфлоу и шаги, которые экспортирует Модуль интеграций. Их запускают собственные API-роуты Admin модуля, и ваш код тоже может их запускать, например из API-роута, подписчика или собственного воркфлоу.
Меняйте настройки интеграций только через эти воркфлоу. Запись через сервис модуля обходит валидацию, шифрование, сброс кэша и историю изменений, подробнее на странице Сервис Модуля интеграций.
Все воркфлоу с этой страницы экспортируются из корня пакета, , вместе с типами их входных данных, например . Из шагов корень пакета экспортирует только . Все воркфлоу и шаги с этой страницы экспортируются из подпути .
Например, собственный воркфлоу, который одним из шагов выключает интеграцию:
src/workflows/disable-my-integration.ts1import { createWorkflow, WorkflowResponse } from "@medusajs/framework/workflows-sdk"2import { setIntegrationEnabledWorkflow } from "@gorgo/medusa-integration"34export const disableMyIntegrationWorkflow = createWorkflow(5 "disable-my-integration",6 () => {7 const integration = setIntegrationEnabledWorkflow.runAsStep({8 input: { provider_id: "int_my", is_enabled: false },9 })1011 return new WorkflowResponse(integration)12 }13)
запускает воркфлоу модуля как шаг вашего. Во входных данных нет , поэтому история изменений запишет изменение с типом автора . Если следующий шаг вашего воркфлоу упадёт, интеграция вернётся в прежнее состояние, а её запись в истории будет удалена.
Откат есть только у шагов и . Если вы запустили , или как шаг собственного воркфлоу и следующий шаг упал, сохранённые параметры, удаление и остаются, а запись в истории удаляется. В итоге изменение может остаться без записи в истории изменений. Что делает при откате каждый шаг, описано в разделе Шаги.
Каждый воркфлоу ниже, кроме , заканчивается шагом , который отправляет событие воркфлоу, когда выполнились все предыдущие шаги. Если запуск падает раньше, например с ошибкой или , событие не отправляется, а откат не отправляет второе событие.
Сохраняет значения параметров инстанса интеграции. При первом сохранении создаёт запись, а дальше обновляет её. Именно этот воркфлоу выполняется, когда в Admin сохраняют секцию. Шаги идут в таком порядке.
Первый шаг читает сохранённую запись, благодаря чему история изменений отличает первое сохранение от обновления. Запись в истории пропускается, если обновление не меняет ни одного поля, а событие отправляется в любом случае.
Воркфлоу проверяет записываемые параметры по сохранённой конфигурации с наложенными новыми значениями, шифрует секреты и сохраняет запись. Затем он записывает в историю изменение или , если что-то изменилось, и отправляет событие . Возвращает сохранённую запись , в которой секреты зашифрованы.
Воркфлоу завершается ошибкой , если под не зарегистрирован ни один провайдер, и ошибкой для неизвестного или значений, которые не прошли валидацию.
Включает или выключает настроенную интеграцию. Шаги идут в таком порядке.
Состояние, которое читает первый шаг, позволяет воркфлоу пропустить запись в истории, если интеграция уже в нужном состоянии. Событие отправляется в любом случае.
Воркфлоу меняет у сохранённой записи, записывает в историю изменение или , если интеграция ещё не была в этом состоянии, и отправляет событие . Возвращает обновлённую запись. Завершается ошибкой , если у интеграции ещё нет сохранённой записи, потому что до первого сохранения включать нечего. Если следующий шаг падает, прежнее состояние восстанавливается.
Удаляет сохранённые настройки инстанса интеграции. Провайдер остаётся зарегистрированным, а интеграция снова показывается как ненастроенная. Шаги идут в таком порядке.
Запись в истории пропускается, если удалять было нечего, а событие отправляется в любом случае.
Воркфлоу удаляет сохранённую запись, записывает в историю изменение со снимком настроенных значений и отправляет событие . Возвращает , где равно , если удалять было нечего. Сохранённые секреты он не расшифровывает, поэтому работает даже после смены ключа шифрования.
Запускает проверку соединения, которую объявляет дескриптор провайдера. Шаги идут в таком порядке.
Шаг проверки сохраняет , только если у интеграции есть сохранённая запись, а событие отправляется при любом результате.
Воркфлоу выполняет проверку с итоговыми параметрами и возвращает . Кроме того, что возвращает ваш , модуль сам формирует такие результаты, и воркфлоу не бросает исключение ни в одном из них:
Для каждого из этих результатов воркфлоу отправляет событие . Что Admin показывает для каждого статуса, описано в разделе Проверка соединения.
Запланированная задача модуля запускает этот воркфлоу каждый день в 03:00 для каждой включённой интеграции, провайдер которой объявляет проверку, с автором . В их число входит и включённая, но ещё не завершённая интеграция, которая получает с текстом .
Получает параметры инстанса интеграции так же, как и метод сервиса .
Воркфлоу возвращает или , если интеграция не настроена, выключена или не заполнена. Если под этими идентификатором и инстансом не зарегистрирован ни один провайдер, он бросает исключение. Когда его использовать, читайте в руководстве Чтение параметров.
Воркфлоу выше собраны из этих шагов. Используйте их в собственном воркфлоу, когда нужна только часть того, что делает воркфлоу модуля. В последнем столбце указано, что делает шаг, когда следующий шаг вашего воркфлоу падает.
| Шаг | Входные данные | Что делает | При откате |
|---|---|---|---|
| Возвращает итоговые параметры или . | Отменять нечего. | ||
| Возвращает сохранённой записи до изменения. | Отменять нечего. | ||
| Выбирает параметры для записи, проверяет их и возвращает , где содержит полную конфигурацию, готовую к сохранению, с зашифрованными секретами. Сам ничего не сохраняет. | Отменять нечего. | ||
| Создаёт или обновляет сохранённую запись. | Отката нет. Сохранённая запись остаётся. | ||
| Меняет у сохранённой записи. | Восстанавливает прежнее значение . | ||
| Удаляет сохранённую запись и возвращает . | Отката нет. Запись остаётся удалённой. | ||
| Выполняет проверку соединения и сохраняет её статус в , если у интеграции есть сохранённая запись. | Отката нет. остаётся. | ||
| Создаёт запись в истории изменений или ничего не делает, если равно или у изменения нет полей. Никогда не роняет воркфлоу. | Удаляет запись в истории. | ||
| Отправляет событие через шину событий Medusa. | Отката нет. Отправленное событие остаётся. |