このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
定期実行タスクは、時間をトリガーとするイベントで、以下の2つのモードがあります。
システムが設定されたトリガー条件を満たす時刻(秒単位の精度)に達すると、関連するワークフローがトリガーされます。
ワークフローリストでワークフローを作成する際、タイプとして「定期実行タスク」を選択します。

通常のモードでは、まず開始時刻を任意の時点(秒単位の精度)で設定する必要があります。開始時刻は未来の時刻にも、過去の時刻にも設定できます。過去の時刻に設定した場合、設定された繰り返し条件に基づいて、実行時刻が到来したかどうかがチェックされます。繰り返し条件が設定されておらず、開始時刻が過去の場合、ワークフローはそれ以降トリガーされません。
繰り返しルールには、以下の2つの設定方法があります。
繰り返しルールを設定した後、終了条件も設定できます。固定された時刻で終了させることも、実行回数で制限することも可能です。
コレクションの時刻フィールドを使って開始時刻を決定するモードは、通常の定期実行タスクとコレクションの時刻フィールドを組み合わせたトリガーモードです。このモードを使用すると、特定のプロセスにおけるノードを簡素化でき、設定もより直感的になります。例えば、期限切れで未払いの注文をキャンセル済みのステータスに変更する必要がある場合、コレクションの時刻フィールドモードの定期実行タスクを1つ設定し、開始時刻を注文作成から30分後に設定するだけで済みます。
設定された時刻条件が満たされたときに、NocoBaseアプリケーションサービス全体が未起動または停止状態の場合、その時刻にトリガーされるべき定期実行タスクはスキップされます。そして、サービスが再起動した後も、スキップされたタスクは再度トリガーされません。そのため、利用時にはそのような状況への対応や代替策を検討する必要があるかもしれません。
終了条件で「繰り返し回数」を設定した場合、同じワークフローの全バージョンで実行された合計回数がカウントされます。例えば、ある定期実行タスクがバージョン1で10回実行され、繰り返し回数も10回に設定されている場合、そのワークフローはそれ以降トリガーされません。新しいバージョンにコピーしても、繰り返し回数を10より大きい数値に変更しない限り、トリガーされることはありません。しかし、新しいワークフローとしてコピーした場合、実行回数は0から再計算されます。関連する設定を変更しない限り、新しいワークフローはさらに10回トリガーされることになります。
繰り返しルールにおける「間隔で」は、前回のトリガー(または開始時刻)からの相対的な時間に基づいて実行されます。一方、「詳細モード」は固定された時刻にトリガーされます。例えば、「30分ごとにトリガー」と設定した場合、前回のトリガーが2021-09-01 12:01:23だったとすると、次回のトリガー時刻は2021-09-01 12:31:23になります。詳細モード、つまりcronモードでは、設定されたルールはすべて固定された時刻にトリガーされます。例えば、毎時01分と31分にトリガーするように設定できます。
注文作成から30分以上経過しても支払いが完了していない注文を毎分チェックし、自動的にキャンセル済みのステータスに変更するとします。これを2つのモードでそれぞれ実装してみましょう。
定期実行タスクベースのワークフローを作成します。トリガー設定で「カスタム時間」モードを選択し、開始時刻は現在時刻より遅くない任意の時点を選択します。繰り返しルールは「毎分」を選択し、終了条件は空欄のままにします。

その後、ワークフローのロジックに従って他のノードを設定します。30分前の時刻を計算し、その時刻より前に作成され、未払いの注文をキャンセル済みのステータスに変更します。

ワークフローが有効になると、開始時刻から毎分1回トリガーされ、30分前の時刻を計算し、その時刻より前に作成された注文のステータスをキャンセル済みに更新します。
定期実行タスクベースのワークフローを作成します。トリガー設定で「コレクションの時刻フィールド」モードを選択し、コレクションは「注文」テーブルを選択します。開始時刻は注文の作成時刻から30分後を選択し、繰り返しルールは「繰り返さない」を選択します。

その後、ワークフローのロジックに従って他のノードを設定します。トリガーされたデータのIDと一致し、かつステータスが「未支払い」の注文をキャンセル済みのステータスに更新します。

カスタム時間モードとは異なり、ここでは30分前の時刻を計算する必要はありません。ワークフローのトリガーデータコンテキストには、時刻条件に合致するデータ行がすでに含まれているため、対応する注文のステータスを直接更新できます。