レコードの数だけAPIをcallする月次ジョブの管理、中断等

レコードの数だけAPIをcallする月次ジョブを作成しようとしています。また、現在、Personalプランです。

まずは①でapiをcallして、月次で①を使えるように、①は②のRecurringで呼ばれます。その後、③の中で、Set recurring〜でジョブの実行頻度を定義します。

質問1
見てのとおり、青で囲ったとおり、「Your current plan lets you 〜」という記述が表示されます。
「1つのレコードに対して、1つのrecurring eventしか設定できない」という意味かと思いますが、recurring eventはこれ以外に作っていないのですが、一体何を意味しているのでしょうか?

質問2
キャプチャにある「Workflow thing」とは一体何なのでしょうか?一応、今回はvideoというテーブルのレコード数だけapiをcallするジョブなので、「Current Workflow video」にしていますが、正直、意味がわかっていません。

質問3
上記のキャプチャの場合、「Monthly」になっていますので、毎月◯日◯時◯分◯秒に実行という考え方かと思うのですが、どこで定義するのでしょうか?上のキャプチャのStart dateや、以下のキャプチャのScheduled dateもいじっているのですが、年月日時のフルセットで定義することはできそうですが、「毎月◯日◯時◯分◯秒」という設定はできそうにありません。

質問4
「Schedule API Workflow on a list」の場合、何百レコードにもわたって、APIを一つずつ実行するため、完了までに時間を要します。ジョブ実行をスタートしてから完了までの間に、そのジョブをstopしたい場合のベストプラクティスはどのような方法でしょうか?

質問5
1テーブルで持てる、最大レコード数は決まっていますでしょうか?以前、どこかで見た気がするのですが、今、検索しても見つけられず。。。教えて頂けないでしょうか?

「いいね!」 1

質問が多いので答えられるところだけ。

質問1:「Your current plan lets you 〜」のメッセージですが、現在の契約プランではrecurring eventは一つだけですよという意味です。
このworkflowに限らずアプリ全体として1つなので、全体を見たときに他に設定しているところはありませんか?

質問2:『Workflow thing」は、そのカスタムworkflow内で使用できるthingです。
該当のWorkflow内で、This things〜で設定したthingのデータが参照できます。
今回の例では「Current Workflow video」を渡しているので、その渡した中身が呼び出すWorkflowで参照できます(オブジェクトとして参照渡しされています)。

質問3:Scheduled dateで設定された日時を基準として毎月実行されます。
具体的な日時を設定する場合は実行したい日時を設定すればOKです。

質問4:停止フラグテーブルを作成し、Workflow実行時に停止フラグが立っていたらWorkflowを停止するという処理をかけると良いと思います。

質問5:最大レコード数は分かりませんので、どなたかお願いします!

「いいね!」 1

ご回答ありがとうございます。

質問1:「Your current plan lets you 〜」のメッセージですが、現在の契約プランではrecruiting eventは一つだけですよという意味です。
このworkflowに限らずアプリ全体として1つなので、全体を見たときに他に設定しているところはありませんか?

→全ページの全workflowを見たのですが、ないんですよね。。なぜだろう。。

質問2:『Workflow thing」は、そのカスタムworkflow内で使用できるthingです。
該当のWorkflow内で、This things〜で設定したthingのデータが参照できます。
今回の例では「Current Workflow video」を渡しているので、その渡した中身が呼び出すWorkflowで参照できます(オブジェクトとして参照渡しされています)。

質問3:Scheduled dateで設定された日時を基準として毎月実行されます。
具体的な日時を設定する場合は実行したい日時を設定すればOKです。

→上記2件ありがとうございます!承知しました。

質問4:停止フラグテーブルを作成し、Workflow実行時に停止フラグが立っていたらWorkflowを停止するという処理をかけると良いと思います。

→なるほど、停止フラグが立っていたら、そもそもstartさせないということですね。やはり、startさせてから、完了するまでに”中断”はできないということですね。

Personal→Professionalにしたら、いままで、「1 recurring events」だったのが「5 recurring events」に変わりました。絶対にページ全体で5つものrecurring eventsを作成していないので、おそらく、このワークフロー、あるいは、関連したワークフローの中で、どこがが重複してカウントされているのだと思います。いろいろいじっても変わらないのですが、やはり、レコード数の分だけworkflowを実行するということ自体が、NGなのでしょうか?

recurring eventのsetですが、制限が書いてあるだけで超えないようにねというような意味なのではと思いますがいかがでしょうか?(設定しても動作しませんか?)

レコード数の数の分だけworkflowを実行することは可能で、「Schedule API Workflow on a list」で必要なレコードを渡してあげればOKです。
なので、定期実行イベントはrecurring eventから上記のlist実行WorkflowかCustom evnetを呼び出せばできるはずです。

Bubbleのみで完結することに拘らないのであれば、IntegromatなどでBackendworkflowを定期的に実行する方法も取れますよ。

コメントありがとうございます。

今、試してみたのですが、仕掛けた時間に動かないですね。。。

なぜダメなのかよくわからないですね。。。

これは、Productionにアップグレードしても上限は20になるだけみたいです。
つまりは、定期的に、recurringで特定テーブルの全レコードに1件ずつ処理を行うようなことは基本的にbubbleでは不可能、ということになるかと思うのですが、この理解で良いのでしょうか?
誰がやってもダメなのか、私の設定にミスがあるのかよくわからず。。。。

ちなみに、定期的に(recurring)ではなく、ボタンをトリガーにしてやるならできました。

Integromatでの実装を考えたいところですが、結局recurringを使うなら、同じことになってしまいそうな気がする。。。

「いいね!」 1

試してみましたが、時間通りに動作するようです(当方Productionで検証しています)。

前提知識として、下記を間違えている可能性がありそうです。

  • recurring eventは特定のthingに対する1レコードで予約される
  • recurring eventを開始(設定)するために何らかのworkflowを実行する必要がある

上記を前提としたときに仕掛け方として、次のような順序でworkflowを組み立てます。

  1. set recurring event(workflow thingななんでもよい)
    繰り返したい時間になるようにset hour、set minitsなどで時間を設定(分かりやすいのはadd minitで1分後にしておく)
  2. 1で実行されるrecurring eventの中身をSchedule API Workflow on a listとして、その実行内容は書き換えたいターゲットのthingsにする(ここで初めてリストを呼び出す)
  3. 2の実行先で実際に修正したい処理内容を記述する

この方法で予定通りリストに対して全件実行されます。

「いいね!」 1

追記です。
Integromatから実行する場合は、recurring eventは使用しません。
外部からはそもそも呼び出せないので、この場合実行するのは「Schedule API Workflow on a list」になります。

「いいね!」 1

@yukikun

返信ありがとうございます。

上記で書いて頂いた3つの手順で私も作っているつもりなのですが、見直しても、問題の箇所がわからないので、どこに問題がありそうか教えて頂けないでしょうか?おそらくですが、時間設定(「Start date」「Scheduled date」)に問題がありそうな気がします。

こちらが書いて頂いた手順1に該当します。「Start date」は「Current date/time」になっていますが、これ以外にも「Arbitrary date/time」に設定して任意の日時を設定したこともあります。この時間以降に「Schedule API Workflow on a list」を設定しています。

こちらが書いて頂いた手順2に該当します。
ここで、Arbitrary date/timeになっており、年月日時刻を設定していますが、日次の場合は、時刻をみて、毎日「03:05:00」に動いてくれるのだと思っていました。
時間以外の設定は、ボタンから呼べば、想定通りに動くので、問題ないと思っています。

こちらが書いて頂いた手順3に該当します。
ここの手順は、ボタンから呼ぶと想定どおりに動くので問題ないと思います。

次の内容を確認いただけますか。

  1. Customで設定している「fire Daily api Call」はボタンなどから呼び出されるのでしょうか?
    そのうえで内部で実行しているSet recurring のStart dateを実行したい時間にしてください。
    (現在Schedule API Workflow側で設定している時間)
    (またDate/Timeの設定の右のほうがGMTになっていると思うので、世界標準時3時5分(JST+9時間)のようです。この点も確認ください)
  2. Recurringの内部で設定しているSchedule API WokflowのScheduled dateは「current datetime」としてください。

この設定で動くのではと思いますがいかがでしょうか?
今回の設定のなかでは、Customの内容は何らかのボタンなどから直接実行するだけでよいと思うのでCustom設定は不要なのでは?とも思います。

1,2の設定の意図を念のため説明しますと、定時実行イベントはあくまでもrecurring eventで時間を設定するのがポイントで、recurring eventに対して実行時間を指定します。
その後のSchedule API Wokflow~側のcurrent datetimeは即時実行となります。

もしかするとの可能性だけですがrecurringが即時、内容で未来を指して実行予約がされるとrecurringの実行回数として費消されてしまって回数制限に引っかかるということなのかもしれません(キューに入らない理由の可能性として)。

以上、ご確認ください。

@yukikun

コメント、誠にありがとうございます。

私の認識が根本的に間違っていたようです。

set recurringを持ったcustom eventを作成さえすれば、定期ジョブが動くようになると思っていました。
set recurring自体を有効にするためには、必ず、画面から呼ぶ必要があるのですね。

また、Set recurring のStart dateには、いつから、その定期ジョブを実行するかだけを定義し、その定期のタイミングについては、Schedule API WokflowのScheduled dateで定義するのかと思っていました。

ただ、教えて頂いたとおり、Set recurring のStart dateに、いつジョブを実行するか、つまり定期のタイミングを定義し、Schedule API WokflowのScheduled dateに「current datetime」を設定したところ、動きました。

ありがとうございました。Scheduled dateって何のためにあるんですかね。。recurringでは無いときに、機能するんでしょうね。

いずれにしても、何度も何度も、ご回答、本当にありがとうございました。大変助かりました。

「いいね!」 1

「Scheduled date」ですが、特定のアクションがあったときに関連するジョブを後日実行する場合に指定するような使い方がよくあるケースです。
recurringは定期実行イベントなので、全体で決まったアクション
Shchedule API Workflowは任意のレコードに対するアクション
という使い分けでしょうか。

例としては、ユーザーが任意のアクション(例えば、物件情報などの気になるボタン)を押したことをキーとして、その2日後までに次のアクションがない場合に、押した時間と同じ時間にリマインドを送信するというようなものです。
上記の場合、recurring eventではレコードごとに異なる任意の時間に送信するというworkflowは組みにくいので、Shcedule API Workflowが適していると判断できます。

参考になれば!

「いいね!」 2

@yukikun
なるほど!そういったときにSchedule dateが使えるのですね。大変参考になりました。ありがとうございます!

「いいね!」 2