5 способов использования Backend Workflows в Bubble
Перевод статьи https://www.amliesolutions.com/bubble/basic-features/what-are-backend-workflows/
Backend Workflows в Bubble - это рабочая лошадка вашего приложения. Когда вам нужно работать с большими объемами данных или запланировать рабочие процессы для выполнения в будущем или даже повторно, вам понадобится действие Schedule API Workflow. Звучит довольно сложно, но на самом деле это простая вещь.
Чтобы понять рабочие процессы Bubble API, мы сначала должны разобраться в back-end в целом.
Если вы новый разработчик Bubble, скорее всего, вы больше всего сосредоточены на пользовательском интерфейсе и функциональности вашего приложения. Когда пользователь нажимает кнопку сохранения в форме, что-то должно произойти, верно?
Таким образом, используя workflow editor, вы настраиваете действие, которое запускается при нажатии этой кнопки, и в какой-то момент, вероятно, почувствовали безграничную мощь, когда обнаружили, что можете записывать информацию в базу данных и отображать изменения в ней. Просто так. Вау!
Вы только что настроили front-end workflow. Он запускается всякий раз, когда его запрашивает триггер на текущей странице (например, когда пользователь нажимает кнопку), и он может выполнять всевозможные действия. Но что происходит, когда пользователь уходит из вашего приложения? Как только страница будет закрыта, рабочие процессы больше не будут выполняться. Вот тут-то и пригодится back-end workflows.
Как работают back-end workflows
Back-end workflows иногда называют API workflows (это одно и то же), происходят не в браузере пользователя, а на сервере Bubble. Их можно запускать из браузера, но они будут завершены на сервере независимо от того, какие действия пользователь предпримет после того, как они были запланированы. Неважно насколько тяжелую рабочую нагрузку они выполняют, это не замедлит работу пользователя с приложением, если не исчерпает доступную мощность на сервере.
Backend workflows - ваш лучший и во многих случаях единственный вариант, когда вы хотите обрабатывать большие объемы данных. Внесение изменений на front-end - единственный способ сделать это. В backend вы можете попросить Bubble внести изменения в одну запись данных, а затем перейти к следующей в потенциально бесконечном цикле.
Итак, если backend workflows процессы могут обрабатывать бесконечное количество записей и запускаться без ущерба для производительности, должны ли все workflows запускаться в backend?
Нет.
Front-end Bubble оптимизирует workflows на странице другими способами в отличие от back-end . Некоторые из них являются ключом к созданию удобного пользовательского интерфейса.
Front-end workflows оптимизированы для:
- Внесения изменений в одну или несколько вещей (до сотни - плюс-минус)
- Отображения результатов процесса сразу на экране
- Как разработчику позволяет контролировать процесс завершения действия.
Back-end workflows оптимизированы для:
- Планирования выполнения рабочего процесса позже или повторно
- Обработки большего количества вещей
- Запущенные процессы, которыми вы не хотите замедлять работу приложения и которые, в идеале, не требуют немедленного выполнения (иногда могут выполняться часами или даже днями, чтобы завершить работу).
- Рабочие процессы, не требующие вмешательства пользователя
- Каскадные workflows (когда одно действие приводит к запуску множества других действий)
Backend workflows - фантастический инструмент для решения конкретных задач, но подходят не для каждого сценария. Используйте их в случае большой нагрузки на ваш сервер при обслуживании базы данных. Не полагайтесь на них при небольших изменениях, когда пользователи хотят видеть немедленные результаты.
Запуск back-end workflows
Существует 5 различных способов запустить back-end workflows в Bubble:Запланировать API Workflow
Используя Schedule API Workflow, вы можете сказать Bubble запустить его немедленно или в любой момент в будущем. Это полезно во всех случаях: например, вы хотите отправить пользователю приветственное письмо через 30 минут после регистрации. Просто скажите Bubble, чтобы он отправил это письмо в Current date/time+minutes:30, и через полчаса это письмо попадет в почтовый ящик пользователя, даже если он тем временем закрыл окно браузера.
Запланировать список API Workflow
Schedule API Workflow on a List работает во многом так же, как и обычное Schedule API Workflow, за исключением того, что вы просите Bubble повторить backend workflow для каждого элемента в списке вещей, который вы предоставляете. Это легко представить себе как цикл, но технически это не работает - на самом деле Bubble планирует один независимый workflow в указанное время для каждого из элементов в списке, который вы предоставляете, и после того, как он запланирован, они запускаются полностью независимо друг от друга.
Другими словами, предположим, что вы планируете рабочие процессы для 300 элементов с задержкой в 1 секунду, Bubble не будет ждать, пока один из них будет завершен, а затем выполнит следующий через одну секунду, скорее, он будет планировать все из них одну секунду за другой точно на 300 секунд, независимо от того, сколько времени потребуется на обработку.
В большинстве случаев использование рекурсивных workflows (см. Отдельный пункт ниже) дает более высокий уровень контроля над запущенными workflows по многим вещам, и я рекомендую вам проверить это.
Запуск повторяющихся событий
Вы также можете попросить Bubble повторить workflow через определенный промежуток времени, например, раз в неделю. Как часто вы можете запланировать повторяющийся workflow, зависит от вашего тарифа на Bubble. Хотя этот тип workflow все еще работает, я лично считаю, что он устарел, поскольку Bubble сделал доступным рекурсивные workflows (которые предлагают гораздо большую гибкость).

Вы можете использовать Recurring Event в Bubble, чтобы запустить workflow с заданной периодичностью. Recurring Workflows предлагают большую гибкость.
Использовать backend триггеры
Backend триггеры - это правила, по которым сервер отслеживает изменений в базе данных. Например, вы можете захотеть запускать workflow всякий раз, когда изменяется имя пользователя. Это проинструктирует Bubble следить за изменениями, внесенными в это поле для любого пользователя, а затем выполнять workflow всякий раз, когда он что-то обнаруживает. Как и в случае с другими back-end workflows, это произойдет, даже если пользователь закроет окно приложения или даже если вы измените что-то непосредственно в базе данных Bubble.
Использование рекурсивных workflows
Рекурсивный workflow - это backend workflow, который планирует сам себя один или несколько раз после первого запуска. Другими словами, вы можете настроить его на цикл по списку или запуск с гибкими интервалами. Обратите внимание, что это не функция Bubble как таковая, а метод, который вы сами настроили с помощью функции Schedule API workflow, чтобы перенастроить собственный workflow. Это позволит workflow зацикливаться бесконечно или до тех пор, пока не будет выполнено определенное условие.