【Bubble】再帰ワークフローの仕組みと活用法
概要
再帰ワークフローとは
Swoooでは、自身のワークフローを繰り返し呼び出すことを、再帰ワークフローと呼んでいます。
一般的なプログラミングでは、ループ処理と呼ばれているものです。
リストに対して何らかのアクションを実行したい場合に、再帰ワークフローがよく使われます。
※2023年2月現在、バックエンドワークフローはPersonalプラン以上でないと使えません。
具体的なユースケース
- すべてのユーザーにテキストメッセージを送信する
- 製品リストの項目を一括で処理する
- データベースを再構成する際に、データ構造を一括で作成する
メリット
API Workflow on a listには、以下のデメリットがあります。
- リストのワークフローが増えるにつれて処理能力が低下する
- リストの検索とスケジュールに10秒以上かかると、プロセスを終了する
- 容量の増加により、ワークフローの待ち時間が発生することで、一時的に処理が遅くなる可能性がある
API Workflow on a listに対して、再帰ワークフローは以下のメリットがあります。
- アプリの容量に達してタイムアウトしない
- ループの中で再帰ループを呼び出せる
- 動的に、繰り返し処理が終了する条件を定義できる
- ワークフローの最後にアクションを実行できる
具体的な設定方法
再帰ワークフローを設定するためには、バックエンドワークフローを使う必要があります。
SettingのAPIから、「Enable Workflow API and backend workflows」にチェックします。
バックエンドワークフローから、API workflowを作成します。
API workflow アクションを「Schedule API Workflow」を選択することで、再帰ワークフローを使えます。
再帰ワークフローを使ってユーザーコードの一斉更新をしてみよう
概要
今回は、再帰ワークフローを使って、ユーザーコードを一斉更新していきます。
以下のように、バラバラになっているユーザーコードを順番になるように更新します。
1. パラメータの設定
再帰ワークフローのパラメータを設定します。
今回は、「index」「count」「users」の三つのパラメータを追加します。
2. スケジュールの詳細な設定
スケジュールについての、より詳細な設定をします。
設定についての説明です。
- index:再帰ワークフローを呼び出すごとにインデックスを1増分します。
- Only when:現在のindexがカウント以下かどうかを確認します。以下である場合に再帰ワークフローが終了します。
3. ユーザーコードの一斉更新
ユーザーコードを更新するために、ユーザーコードをindexの値に一致させるワークフローを追加します。
最後に、ユーザーコードを更新するボタンを配置します。
ボタンのワークフローを以下のように設定します。
4. 動作確認
プレビューで「再帰ワークフローを実行」ボタンをクリックするとデータベースのユーザーコードが更新されています。