# schedule API Workflowの設定方法について教えてください

**URL:** <https://www.nocode-faq.com/t/topic/3326>\
**Category:** bubble\
**Tags:** バックエンドwork\
**Created:** [2022 年 12 月 9 日午前 6:11 UTC](https://www.nocode-faq.com/t/topic/3326 "2022-12-09T06:11:57Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![FJMK](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/fjmk/32/5790_2.png) [@FJMK](https://www.nocode-faq.com/u/FJMK)\
**Post date:** [2022 年 12 月 9 日午前 6:11 UTC](https://www.nocode-faq.com/t/topic/3326/1 "2022-12-09T06:11:58Z")

</div>

bubbleのschedule API Workflowの設定方法について教えてください。

◯実装したい機能  
病院や飲食店のように受付した順番で予約が取れる「作業予約サービス」を開発しています。  
そこで、「自分の順番の2番前になったらメールで通知する」機能を実装したいのですが、Scheduled dateをどのような設定をすれば良いか教えてください。

動作としては、  
① 利用者が予約をすると下記の条件で、Data type:「予約明細」が作成されます。  
・作業ステータス：作業前  
・作業内容：（指定の作業）  
・予約日：（指定の日付）  
・作業営業所：（指定の作業営業所）  
・予約番号：Search for 予約明細s:last item’s予約番号+1 → constraint = 予約日:指定の日付,作業営業所:指定の作業営業所

アプリ画面上では、  
RGで予約明細（constraint = 予約日:指定の日付,作業営業所:指定の作業営業所,作業ステータス\<\>作業完了）を表示します。

② 管理者は作業が完了したら、作業ステータス：作業完了に変更し、アプリ上で作業を終えたレコードを非表示にします。

実装したいことは、②の後、順番が2番前になった予約明細のcreatorへメール（Send mail）通知です。  
添付画像のScheduled dateにはどのような設定（考え方）をすれば、実現できるでしょうか？

◯試したこと  
①の利用者がアクションの次のステップでschedule API Workflowを組みました。  
※Backend workflowsと①のWorkflowを添付します。

 ![スクリーンショット 2022-12-09 14.57.42](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/2/20037dab4bdd16f3960a51901134e0339dd500e4.png)

 ![スクリーンショット 2022-12-09 14.59.02](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/e/eec63d5a47a44b8290469bcf6cf25a166b480125.png)

---

<div class="post-metadata">

**Author:** ![shuhei.doi](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@shuhei.doi](https://www.nocode-faq.com/u/shuhei.doi)\
**Post date:** [2022 年 12 月 9 日午前 6:43 UTC](https://www.nocode-faq.com/t/topic/3326/2 "2022-12-09T06:43:05Z")

</div>

②の「作業ステータスが管理者さんによって変更される」という処理が任意のタイミングで実行される可能性があるので、①の時点で「順番が2番目になるタイミング」を確定させることは難しいと思います。

なので、②の作業ステータスを変更する処理と同じWorkflow内で下記の処理を実行することで目的の挙動が実現できるかなと思いました！

1. 作業ステータスを変更したものを同じ「予約日」の「作業明細」を取得し「予約番号」の昇順でソート
2. 取得したリストの2番目の「作業明細」を取り出しそのCreatorに対してメールを送信

---

<div class="post-metadata">

**Author:** ![FJMK](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/fjmk/32/5790_2.png) [@FJMK](https://www.nocode-faq.com/u/FJMK)\
**Post date:** [2022 年 12 月 9 日午前 6:59 UTC](https://www.nocode-faq.com/t/topic/3326/3 "2022-12-09T06:59:30Z")

</div>

分かりやすくご回答いただきありがとうございます！  
是非、試してみます！

---

<div class="post-metadata">

**Author:** ![FJMK](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/fjmk/32/5790_2.png) [@FJMK](https://www.nocode-faq.com/u/FJMK)\
**Post date:** [2022 年 12 月 9 日午前 7:23 UTC](https://www.nocode-faq.com/t/topic/3326/4 "2022-12-09T07:23:57Z")

</div>

アドバイスいただいた内容で実装できました！  
ご教示いただきありがとうございました！

---

<div class="post-metadata">

**Author:** ![shuhei.doi](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@shuhei.doi](https://www.nocode-faq.com/u/shuhei.doi)\
**Post date:** [2022 年 12 月 9 日午前 8:42 UTC](https://www.nocode-faq.com/t/topic/3326/5 "2022-12-09T08:42:14Z")

</div>

お力になれて良かったです！

---

<div class="post-metadata">

**Author:** ![yukikun](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/yukikun/32/3485_2.png) [@yukikun](https://www.nocode-faq.com/u/yukikun)\
**Post date:** [2022 年 12 月 9 日午後 9:06 UTC](https://www.nocode-faq.com/t/topic/3326/6 "2022-12-09T21:06:15Z")

</div>

> [@shuhei.doi](#):
>
> 「作業ステータスが管理者さんによって変更される」

この条件であれば、backend workflowでdatabase change eventを使うのが良さそうに思います。  
管理者によって何らかのステータス（？）が変更されたときに、関連する予約で検索順位2位になったレコードの相手に通知する  
といった処理になるかと。  
ただし、順番待ちの2番めにならないケース（そもそも待ちが2人ではじめから2番めだったなど）も想定して、「通知済み」かを管理するフィールドを用意して、先頭の人が呼ばれた？場合に2番めより前の人に通知、通知済みは除く とするのが妥当と思います。

参考になれば。

---

<div class="post-metadata">

**Author:** ![FJMK](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/fjmk/32/5790_2.png) [@FJMK](https://www.nocode-faq.com/u/FJMK)\
**Post date:** [2022 年 12 月 10 日午後 1:24 UTC](https://www.nocode-faq.com/t/topic/3326/7 "2022-12-10T13:24:28Z")

</div>

ご教示いただきありがとうございます！  
Database change eventをとは、Database trigger eventのことでしょうか？  
Database trigger eventの使用方法がわかっていないので、一度こちらも試してみます。

ちなみにschedule API WorkflowよりもDatabase trigger eventを使用した方がいいのはどのような理由からでしょうか？

---

<div class="post-metadata">

**Author:** ![yukikun](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/yukikun/32/3485_2.png) [@yukikun](https://www.nocode-faq.com/u/yukikun)\
**Post date:** [2022 年 12 月 10 日午後 2:25 UTC](https://www.nocode-faq.com/t/topic/3326/8 "2022-12-10T14:25:52Z")

</div>

Database trigger eventでしたね。画面を見ずに入力していたので名称間違えていました。

フロントで実装すると、管理者のブラウザで実行されるため通信環境などによりそのアクションにたどり着くまでに時間がかかる（通信が切断された場合に実行されない）ことになります。  
確実に実行させることを考えると、ステータス変更をトリガとしてバックエンドでフックするのが確実と思います。  
そもそもschedule apiは何らかの処理をスケジューリングするための処理が本来本来の使い方なのと、  
上で書いたとおりのことが起こり得るため、トリガ自体をバックエンドにすることで処理が保証されます。

> [@FJMK](#):
>
> ②の後、順番が2番前になった予約明細のcreatorへメール

---

<div class="post-metadata">

**Author:** ![FJMK](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/fjmk/32/5790_2.png) [@FJMK](https://www.nocode-faq.com/u/FJMK)\
**Post date:** [2022 年 12 月 11 日午後 1:17 UTC](https://www.nocode-faq.com/t/topic/3326/9 "2022-12-11T13:17:09Z")

</div>

わかりやすく解説していただきありがとうございます！
