はじめに
定期的に、たとえば毎日決まった時刻に、同じ処理を実行したい時があります。例えば、新規登録者にサンクスメールを送るなどです。毎日同じ処理を実行するので「日次バッチ」と呼ぶこともあります。
Bubbleでは、有料プランに契約し、Backend workflowを使うと実現できます。
有料プランに契約する
日次バッチを実現したいアプリを、有料プランに契約します。
Bubble の左メニューの「Setting」ー「App Plan」から契約状況を確認します。
Backend workflowsで、custom eventを追加
Bubbleの画面の左上の、ページ名が表示されている部分をクリックし、一番下の「Backend workflows」をクリックします。
これは有料プランでないと表示されません。
「Click here to add a backend workflow」をクリックし、「Custom」ー「Create a custom event」をクリックして、eventを追加します。
イベント名を設定します。今回は「send thanks mail」としました。
custom eventにactionを追加
通常のworkflowと同じように、Actionを追加します。
今回は、新規にユーザ登録した人にメールを送信する処理にしました。
範囲を、昨日の6時から今朝の6時までの間に登録したユーザーにしました。
API Workflow作成して、上記のeventを呼び出す
「General」ー「New API workflow」で、API Workflowを追加します。
今回は、「call send thanks mail」という名前にしました。
アプリ外部から呼び出す必要はないので、「Expose as a public API workflow」のチェックを外します。
User テーブルにはプライバシーポリシーが設定されていて、自分のレコード以外は見られないようになっていますが、全てのUserのレコードを見たいので「Ignore privacy rules when running the workflow」のチェックを入れます。
そして、Actionに「Custom events」ー「Trigger a custom event」を指定し、「Custom event」に、上記で作成した「send thanks mail」を指定します。
翌日に自動実行するActionを追加する
毎日実行したいので、翌日に自動実行する処理を追加します。
Action に「Custom Events」ー「Schedule API Workflow」を選択します。
「API Workflow」には、上記の「call send thanks mail」、
「Scheduled date」には、翌日の午前7時を設定しました。
上記と同じく「Ignore privacy rules when running the workflow」にチェックを入れます。
初回実行用のボタンを作成する
繰り返し実行する処理はできましたが、最初の一回は手動で起動する必要があります。
管理者専用の画面を作成し、初回実行用のボタンを配置します。
今回は、Userテーブルに管理者か否かのフラグを追加し、ログインしているユーザが管理者でない場合は別な画面に遷移するようにしています。
今回は、「batch-manage」というページ名で作成しました。
画面にボタンを配置します。
ボタンを押した時に、上記のAPIを呼び出す処理を指定します。
「Custom Events」ー「Schedule API Workflow」を選択します。
「API Workflow」には、上記で作成したAPIの「call send thanks mail」、
「Schedule date」は、すぐに実行したいので「Current date/time」を指定します。
手動で初回実行
1度だけボタンを押して、実行します。
今回の例ではメールが送信されてしまうので、ダミーユーザーにしておくのを忘れずに!
動作結果の確認
実行結果は、左メニューの「Logs」ー「Server logs」で表示できます。
表示されない場合は、右上の「Search」をクリックしてください。
また、次回起動のスケジュールも追加されています。
「Logs」ー「Scheduler」で確認できます。
表示されない場合は、「Show」をクリックしてください。
Scheduled timeが、指定通りに、翌日の午前7時になっているのを確認します。
スケジュールをキャンセルしたい場合は、左側の「 Cancel」をクリックして、キャンセルします。
まとめ
有料プランで、Custom eventとAPI Workflowを作成し、
「Schedule API Workflow」を使って、定期的に実行する方法を紹介しました。
定期実行は実運用には欠かせない処理ですので、参考になさってください。