Azure Logic Apps で Recurrence トリガーを使用して繰り返しワークフローをスケジュール設定および実行する

適用対象: Azure Logic Apps (従量課金プラン + Standard)

スケジュールに従ってワークフローを開始して実行する場合、最初の手順として汎用の Recurrence トリガーを使用できます。 ワークフローを開始する日付、時刻、タイム ゾーン、およびそのワークフローを反復処理するための繰り返しを設定できます。 次の一覧に、このトリガーがサポートするいくつかのパターンを、より高度な繰り返しや複雑なスケジュールと共に示します。

  • 特定の日付と時刻に実行し、その後は n 秒、分、時間、日、週、または月ごとに繰り返す。

  • 直ちに実行し、n 秒、分、時間、日、週、または月ごとに繰り返す。

  • 直ちに実行し、1 つ以上の特定の時刻 (午前 8 時と午後 5 時など) に毎日繰り返す。

  • 直ちに実行し、毎週特定の曜日 (土曜日と日曜日など) に繰り返す。

  • 直ちに実行し、毎週特定の曜日の特定の時刻 (月曜日から金曜日の午前 8 時と午後 5 時など) に繰り返す。

Note

今後 1 回だけワークフローを開始して実行するには、Scheduler: Run Once Jobs という名前のワークフロー テンプレートを使用します。 このテンプレートでは、Recurrence トリガーではなく、この繰り返しパターンをサポートしない Request トリガーと HTTP アクションを使用します。 詳細については、ジョブを 1 回だけ実行する場合に関する記事を参照してください。

Recurrence トリガーは特定のサービスに関連付けられないため、このトリガーは、従量課金ロジック アプリ ワークフローや標準ロジック アプリ "ステートフル" ワークフローなど、ほぼすべてのワークフローで使用できます。 このトリガーは現在、標準ロジック アプリ "ステートレス" ワークフローでは使用できません。

Recurrence トリガーは組み込みのスケジュール コネクタに含まれていて、Azure Logic Apps ランタイムでネイティブに実行されます。 組み込みのスケジュール トリガーとアクションの詳細については、Azure Logic Apps を使用した定期的な自動タスク、ワークフローのスケジュールと実行に関するページを参照してください。

前提条件

繰り返しトリガーを追加する

従量課金か Standard のどちらのワークフローを使用しているかに基づいて、対応する手順に従ってください:

  1. Azure portal で、ロジック アプリ リソースと空のワークフローを開きます。

  2. 次の一般的な手順に従って、Recurrence (繰り返し) という名前の スケジュールを組み込みトリガー追加します

  3. 繰り返しの間隔と頻度を設定します。 この例では、これらのプロパティを設定して、ワークフローを毎週実行します。たとえば、次のようになります。

    Screenshot for Consumption workflow designer with Recurrence trigger interval and frequency.

    プロパティ JSON での名前 必須 タイプ 説明
    間隔 interval はい Integer ワークフローの実行間隔を、[頻度] に指定された単位に基づいて表す正の整数。 間隔の最小値と最大値は次のとおりです。

    - month: 1 ~ 16 か月
    - Week: 1-71 週
    - day: 1 ~ 500 日
    - hour: 1 ~ 12,000 時間
    - minute: 1 ~ 72,000 分
    - second: 1 ~ 9,999,999 秒

    たとえば間隔が 6 で、頻度が "月" である場合は、繰り返しは 6 か月ごとになります。
    頻度 frequency はい String 繰り返しの時間の単位。のいずれかになります。

    重要: [日][週][月] の頻度を選択し、将来の開始日時を指定する場合は、繰り返しを事前に設定してください。 そうしないと、ワークフローで最初の繰り返しがスキップされる場合があります。

    - - : 事前に少なくとも 24 時間の日単位の繰り返しを設定します。

    - - : 事前に少なくとも 7 日間の週単位の繰り返しを設定します。

    - [月]: 少なくとも 1 か月前に毎月の繰り返しを設定します。
  4. Reccurrence トリガーを使用する場合は、次の考慮事項を確認します:

    • 繰り返しに特定の開始日時を指定しない場合は、トリガーの繰り返し設定にかかわらず、ロジック アプリを保存またはデプロイすると、直ちに最初の繰り返しが実行されます。 この動作を回避するには、最初の繰り返しを実行する開始日時を指定してください。

    • 将来の繰り返しを実行する特定の時刻など、他の高度なスケジュール オプションを指定しない場合、これらの繰り返しは前回の実行時刻に基づいています。 その結果、ストレージ呼び出し中の待機時間などの要因によって、それらの繰り返しの開始時刻がずれる可能性があります。

    • 特に頻度が日数以上の場合に、ワークフローが繰り返しを見逃さないようにするには、次のオプションを試してください:

      • 繰り返しの開始日時と、後続の繰り返しを実行する特定の時刻を指定します。 [設定時刻 (時間)][設定時刻 (分)] というプロパティを使用できます。これらを使用できるのは、頻度が [日][週] の場合のみです。

      • 従量課金ロジック アプリ ワークフローの場合は、Recurrence トリガーではなく Sliding Window トリガーを使用します。

    • ARM テンプレートを使用して繰り返しトリガーを持つ無効な従量課金ワークフローをデプロイする場合、デプロイ前に開始時刻パラメーターを設定しない限り、ワークフローを有効にするとトリガーが即座に発生します。

  5. 詳細スケジュール オプションを設定するには、[新しいパラメーターの追加] 一覧を開きます。 選択したオプションはすべて、選択後にトリガーに表示されます。

    プロパティ JSON での名前 必須 タイプ 説明
    タイム ゾーン timeZone いいえ String 開始時刻を指定したときに限り適用されます。このトリガーに UTC オフセットを指定することはできないためです。 適用するタイム ゾーンを選択してください。
    [開始時刻] startTime いいえ String 開始日と時刻を指定します。これには、最大で 49 年先の時刻を指定でき、また UTC の日付と時刻の形式 (ただし、UTC オフセットを除く) で日付と時刻に関する ISO 8601 規格に従っている必要があります。

    YYYY-MM-DDThh:mm:ss (タイム ゾーンを選択した場合)

    または

    YYYY-MM-DDThh:mm:ssZ (タイム ゾーンを選択しなかった場合)

    たとえば、2020 年 9 月 18 日午後 2:00 にする場合は、"2020-09-18T14:00:00" と指定し、太平洋標準時などのタイム ゾーンを選択します。 または、タイム ゾーンなしで「2020-09-18T14:00:00Z」と指定します。

    重要: タイム ゾーンを選択しない場合は、末尾にスペースなしで文字 "Z" を追加する必要があります。 この "Z" は、同等の航海時間を表します。 タイム ゾーンの値を選択した場合は、開始時刻の値の末尾に "Z" を追加する必要はありません。 行った場合、"Z" は UTC 時刻形式を示すため、Logic Apps ではタイム ゾーンの値が無視されます。

    単純なスケジュールでは、開始時刻と最初の実行時刻が一致するのに対して、複雑なスケジュールでは、トリガーが作動するのは開始時刻以降となります。 "開始日時の使用方法を具体的に教えてください"
    設定曜日 weekDays いいえ 文字列または文字列配列 [週] を選択した場合、月曜日火曜日水曜日木曜日金曜日土曜日日曜日の中から、ワークフローを実行する曜日を 1 つまたは複数選択できます。
    設定時刻 (時間) hours いいえ 整数または整数配列 [日] または [週] を選択した場合は、ワークフローを実行する時刻として 0 ~ 23 の 1 つ以上の整数を選択できます。 たとえば、"10"、"12"、"14" を指定すると、その日の時間に対して午前 10 時、午後 12 時、午後 2 時が表示されます。

    メモ: 既定では、1 日の分数は、繰り返しの開始時間に基づいて計算されます。 特定の時刻 (たとえば、午前 10:00、午後 12:00、午後 2:00) を設定するには、[設定時刻 (分)] という名前のプロパティを使用してこれらの値を指定します。
    設定時刻 (分) minutes いいえ 整数または整数配列 [日] または [週] を選択した場合、ワークフローを実行する時刻 (分) として 0 ~ 59 の整数を選択できます (複数選択可)。

    たとえば上の例で指定した時を使用し、分の要素に「30」を指定した場合、実行時刻は 10:30 AM、12:30 PM、2:30 PM となります。

    : トリガーされた実行のタイムスタンプが、スケジュールされた時刻から最大 1 分まで異なる場合があります。 後続のアクションに対し、タイムスタンプをスケジュールどおりに正確に渡す必要がある場合は、テンプレート式を使用してタイムスタンプを適宜変更してください。 詳細については、式の日付と時刻の関数に関するページを参照してください。

    Screenshot for Consumption workflow designer and Recurrence trigger with advanced scheduling options.

    たとえば、今日が 2020 年 9 月 4 日の金曜日だとします。 次の Recurrence トリガーは、指定された開始日時である 2020 年 9 月 18 日 (金曜日) 午前 8:00 (太平洋標準時) "より前" に起動されることはありません。 ただし、繰り返しのスケジュールは月曜日の 10:30 AM、12:30 PM、2:30 PM にのみ設定されています。 最初にトリガーが作動してワークフロー インスタンスが作成される時刻は月曜日の午前 10 時 30 分となります。 開始時刻の動作について詳しくは、開始時刻の例を参照してください。

    その後は、同じ日の 12:30 PM と 2:30 PM に実行されます。 繰り返しのたびに、ワークフロー インスタンスが新しく作成されます。 その後は、次の月曜日に再び、スケジュール全体が最初から繰り返されます。 "その他の繰り返しの例"

    Screenshot showing Consumption workflow and Recurrence trigger with advanced scheduling example.

    Note

    トリガーには、指定した繰り返しのプレビューが表示されるのは、頻度として [日] または [週] を選択した場合のみです。

  6. 次に、他のアクションを使用してワークフローの作成を続けます。

ワークフロー定義 - 繰り返し

選択したオプションと共に Recurrence トリガー定義がどのように表示されるかを確認するには、従量課金ロジック アプリと標準ロジック アプリ (ステートフルのみ) でのワークフローの基になる JSON 定義を確認します。

ロジック アプリが従量課金か標準かに基づいて、次のいずれかのオプションを選択します。

  • 従量課金: デザイナーのツール バーで、[コード ビュー] を選択します。 デザイナーに戻るには、コード ビューのエディター ツールバー上で [デザイナー] を選択します。

  • 標準: ワークフロー メニューで、[コード ビュー] を選択します。 デザイナーに戻るには、ワークフロー メニューで [デザイナー] を選択します。

次の例は、ワークフローの基になる JSON 定義に Recurrence トリガー定義がどのように表示されるかを示しています。

"triggers": {
   "Recurrence": {
      "type": "Recurrence",
      "recurrence": {
         "frequency": "Week",
         "interval": 1,
         "schedule": {
            "hours": [
               10,
               12,
               14
            ],
            "minutes": [
               30
            ],
            "weekDays": [
               "Monday"
            ]
         },
         "startTime": "2020-09-07T14:00:00Z",
         "timeZone": "Pacific Standard Time"
      }
   }
}

Note

繰り返しトリガー定義では、繰り返し条件に式またはパラメーター参照が出てくると、evaluatedRecurrence プロパティが recurrence プロパティと共に表示されます。 evaluatedRecurrence プロパティは、式またはパラメーター参照からの評価された値を表します。 繰り返し条件で式またはパラメーター参照が指定されていない場合、evaluatedRecurrence および recurrence プロパティは同じです。

次の例は、各月の最終日にトリガーが 1 回だけ実行されるようにトリガー定義を更新する方法を示しています。

"triggers": {
    "Recurrence": {
        "recurrence": {
            "frequency": "Month",
            "interval": 1,
            "schedule": {
                "monthDays": [-1]
            }
        },
        "type": "Recurrence"
    }
}

トリガーの繰り返しのシフトやずれ (夏時間)

Azure Logic Apps では、ジョブをスケジュールするために、処理するメッセージをキューに入れ、最後のジョブが実行された UTC 時刻と、次のジョブの実行がスケジュールされている UTC 時刻に基づいて、そのメッセージが使用可能になる時刻を指定します。 繰り返しにおいて開始時刻を指定する場合は、"タイム ゾーンを選択" して、指定した開始時刻にロジック アプリ ワークフローが実行されるようにしてください。 そうすることで、ロジック アプリの UTC 時刻も、季節の時間変化に合わせてシフトされます。 繰り返しのトリガーは、指定したタイム ゾーンを含め、設定したスケジュールに従います。

タイムゾーンを選択しないと、トリガーが実行されるタイミングが夏時間 (DST) イベントの影響を受ける可能性があります。 たとえば、開始時刻が DST の開始時には 1 時間先に、DST の終了時には 1 時間前にシフトされます。 ただし、一部の時間枠では時間がシフトされるときに問題が発生することがあります。 詳細と例については、夏時間と標準時間での繰り返しに関する記事を参照してください。

次のステップ