分享方式:


使用 Azure Logic Apps 中的週期性觸發程序來排定及執行週期性工作流程

適用於:Azure Logic Apps (使用量 + 標準)

若要依排程啟動和執行工作流程,您可以使用一般 週期 觸發程式作為第一個步驟。 您可以設定日期和時間,和啟動工作流程的時區,以及重複該工作流程的循環週期。 下列清單包含此觸發程序所支援的一些模式,以及更進階的循環週期和複雜的排程:

  • 在特定的日期和時間執行,然後每隔 n 秒、分鐘、小時、天、週或月重複一次。

  • 立即執行,並且每隔 n 秒、分鐘、小時、天、週或月重複一次。

  • 在一或多個特定的時間 (例如上午 8:00 和下午 5:00) 立即執行並每天重複一次。

  • 在特定的星期幾 (例如星期六和星期日) 立即執行並每週重複一次。

  • 在特定的星期幾和時間 (例如星期一到星期五的上午 8:00 和下午 5:00) 立即執行並每週重複一次。

注意

進階排程選項 (例如在這些小時在這些天) 僅可用且適用於內建輪詢觸發程序 (例如週期滑動視窗觸發程序,其會直接與 Azure Logic Apps 執行階段間一起執行)。 對於由 Microsoft 管理、託管並在 Azure 中執行的連接器,輪詢觸發程序只會使用間隔頻率值 (而非進階排程選項) 來計算下一個週期。

週期觸發程式未與任何特定服務相關聯,因此您可以搭配幾乎任何工作流程使用觸發程式,例如取用邏輯應用程式工作流程和標準邏輯應用程式狀態工作流程。 這種觸發程序目前無法用於標準邏輯應用程式無狀態 工作流程

週期觸發程式是內建排程連接器的一部分,並在 Azure Logic Apps 執行時間原生執行。 如需內建排程觸發程序和動作的詳細資訊,請參閱使用 Azure Logic Apps 來排定及執行週期性自動化工作和工作流程

必要條件

新增週期觸發程序

根據您的工作流程是使用量或標準,遵循對應的步驟:

  1. Azure 入口網站中,開啟您的邏輯應用程式資源和空白工作流程。

  2. 遵循以下一般步驟以新增名為定期排程內建觸發程序。

  3. 設定重複的間隔和頻率。 在此範例中,將這些屬性設定為每週執行工作流程,例如:

    使用週期觸發程式間隔和頻率的取用工作流程設計工具螢幕快照。

    屬性 JSON 名稱 必要 類型​ 描述
    間隔 interval Yes 整數 描述工作流程根據 frequency 多久執行一次的正整數。 以下是最小和最大間隔:

    - 月:1-16 個月
    - 週:1-71 週
    - 天:1-500 天
    - 小時:1-12,000 個小時
    - 分鐘:1-72,000 分鐘
    - 秒:1-9,999,999 秒

    例如,如果 interval 是 6,而 frequency 是「月」,則週期為每隔 6 個月。
    頻率 frequency Yes String 重複的時間單位:分鐘小時

    重要:如果您選取 [日]、[週] 或 [月] 的頻率,並指定未來的開始日期和時間,請務必提前設定週期。 否則,工作流程可能錯過第一個週期。

    - :至少提前 24 小時設定每日週期。

    - :至少提前 7 天設定每週週期。

    - :至少提前一個月設定每月週期。
  4. 當您使用定期觸發程序時,請檢閱下列考量:

    • 如果未指定特定開始日期和時間,則無論觸發程序的週期如何設定,您儲存工作流程或部署邏輯應用程式資源時就會立即執行第一個週期。 若要避免這種行為,請提供您希望第一個週期執行時的開始日期和時間。

    • 如果您未指定其他任何進階排程選項,例如執行未來週期的特定時間,則這些週期會根據上次執行時間。 因此,這些週期的開始時間可能會因為儲存體呼叫期間延遲等因素而漂移。

    • 為了確保您的工作流程不會錯過某一個定期,特別是當頻率為天數或更長時,請嘗試下列選項:

      • 提供該循環週期的開始日期和時間,以及執行後續週期的特定時間。 您可以使用名為 [在這些小時] 和 [在這些分鐘] 的內容,這些內容僅適用於的頻率。

      • 針對取用邏輯應用程式工作流程,請使用 滑動視窗觸發程式,而不是 週期 觸發程式。

    • 如果您使用 ARM 範本部署已停用的取用工作流程,除非您在部署前設定開始時間參數,否則觸發程式會在啟用工作流程時立即引發。

  5. 若要設定進階的排程選項,請開啟 [新增參數] 清單。 選取之後,您選取的任何選項都會出現在觸發程序上。

    屬性 JSON 名稱 必要 類型​ 描述
    時區 timeZone No String 只有當您有指定開始時間時才適用,因為此觸發程序並不接受 UTC 時差。 選取您要套用的時區。 如需詳細資訊,請參閱 預設時區
    開始時間 startTime No String 提供一個開始日期和時間,其最多為未來 49 年,並且必須遵循 UTC 日期時間格式ISO 8601 日期時間規範,但不含 UTC 時差

    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" 新增至開始時間值的結尾。 如果您這樣做,Logic Apps 會忽略時區值,因為 "Z" 表示 UTC 時間格式。

    就簡單排程來說,開始時間係指第一次發生的時間,而就複雜排程來說,觸發程序會在開始時間一到就立即引發。 我可以使用開始日期和時間的方式有哪些?
    在這幾天內 weekDays No 字串或字串陣列 如果您選取 [週],可以選取想要在哪一天或哪幾天執行工作流程:星期一星期二星期三星期四星期五星期六星期日
    在這幾小時內 hours No 整數或整數陣列 如果選取了 [日] 或 [週],您可以從 0 到 23 選取一或多個整數,來表示您想要在當天的哪幾個整點執行工作流程。 例如,如果您指定 "10"、"12" 及 "14",就會得出上午 10 點、下午 12 點及下午 2 點作為當天的小時。

    注意:根據預設,會根據定期開始時計算當天的分鐘數。 若要設定當天的特定分鐘數,例如上午 10:00、中午 12:00 和下午 2:00,請使用名為 [在這些分鐘] 的內容來指定這些值。
    在這幾分鐘內 minutes No 整數或整數陣列 如果您選取 [天] 或 [週],可以選取從 0 到 59 的一或多個整數,來表示想要在小時的哪幾個分鐘執行工作流程。

    例如,您可以指定 "30" 作為分鐘標記,然後使用上個範例代表一天中的整點,這樣就會得出上午 10:30、下午 12:30 及下午 2:30。

    附註:有時候,觸發執行的時間戳記可能會與排程時間最多相差 1 分鐘。 如果您需要將時間戳記完全按照所排定的來傳遞給後續的動作,您可以使用範本運算式來據以變更時間戳記。 如需詳細資訊,請參閱運算式的日期和時間函式

    使用進階排程選項的取用工作流程設計工具與週期觸發程式的螢幕快照。

    例如,假設今天是 2020 年 9 月 4 日星期五。 下列週期觸發程式不會比指定的開始日期和時間更早引發,也就是 2020 年 9 月 18 日上午 8:00 太平洋時間星期五。 不過,重複排程已設定為只在星期一的上午 10:30、下午 12:30 和下午 2:30。 觸發程序觸發並建立工作流程執行個體的第一次時間是在星期一上午 10:30。 若要深入了解開始時間如何運作,請參閱這些開始時間範例

    未來則會在同一天的下午 12:30 和下午 2:30 執行。 每次重複都會建立自己的工作流程執行個體。 之後,整個排程會在下個星期一全部重複一次。 還有其他哪些範例重複?

    顯示使用工作流程和迴圈觸發程式的螢幕快照,其中包含進階排程範例。

    注意

    只有當您選取 [日] 或 [週] 作為頻率時,觸發程序才會顯示指定定期的預覽。

  6. 現在,請使用其他動作來繼續建置您的工作流程。

工作流程定義 - 週期性

您可以在取用邏輯應用程式和標準邏輯應用程式 (僅限具狀態) 中檢閱工作流程的基本 JSON 定義,以檢視週期性觸發程序定義如何以您所選的選項來顯示。

根據您的邏輯應用程式是「取用」還是「標準」,選擇下列其中一個選項:

  • 取用:在設計工具的工具列上,選取 [程式碼檢視]。 若要返回設計工具,請在程式碼檢視編輯器工具列上選取 [設計工具]。

  • 標準:在工作流程功能表上,選取 [程式碼檢視]。 若要返回設計工具,請在工作流程功能表上選取 [設計工具]。

下列範例顯示循環觸發程式定義如何出現在工作流程的基礎 JSON 定義中:

"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"
      }
   }
}

注意

在 [週期觸發程式定義] 中,當迴圈準則中出現任何表達式或參數參考時,evaluatedRecurrence屬性就會與 屬性一起recurrence顯示。 這個 evaluatedRecurrence 屬性代表運算式或參數參考中的評估值。 如果週期性準則未指定任何運算式或參數參考,則 evaluatedRecurrencerecurrence 屬性會相同。

下列範例顯示如何更新觸發程序定義,讓觸發程序在每個月的最後一天只執行一次:

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

僅執行一次

若要在未來只執行工作流程一次,您可以套用 排程器:執行一次作業 工作流程範本,僅適用於取用邏輯應用程式工作流程。 此範本會使用 要求 觸發程式和 HTTP 動作,而不是 不支援此週期模式的循環 觸發程式。

  1. Azure 入口網站 中,建立取用邏輯應用程式。

  2. 在設計工具中,開啟空白工作流程。 在設計工具工具列上,選取 [ 啟用舊版設計工具]。

  3. 在設計工具的工具列上,選取 [範本]

  4. 在開啟的頁面上,將影片捲動至 [範本] 區段。

  5. 從 [ 類別] 清單中,選取 [ 排程],然後選取下列範本:

    此螢幕快照顯示名為排程器執行一次作業的所選範本。

  6. 在設計工具工具列上,選取 [ 一般可用的設計工具]。

  7. 請遵循下列一般步驟,新增名為 Delay 的排程動作,並提供下一個動作開始執行的時間。

或者,您可以使用名為 「收到 HTTP 要求時」的要求觸發程式來啟動工作流程,並傳遞開始時間做為觸發程式的參數。

在當月的最後一天執行一次

針對這項工作,您必須使用下列範例,在工作流程的基礎 JSON 定義中使用程式代碼檢視來編輯 週期 觸發程式,而不是設計工具:

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

觸發程序週期移位和漂移 (日光節約時間)

為了排程作業,Azure Logic Apps 會將需要處理的訊息放入佇列中,並根據上次作業執行的 UTC 時間,以及排定下一個作業執行的 UTC 時間,指定該訊息何時出現。 如果您指定週期的開始時間,「請務必選取時區」,讓邏輯應用程式工作流程在指定的開始時間執行。 如此,邏輯應用程式的 UTC 時間也會調整以抵消季節性時間變更。 週期性觸發程序會遵守您設定的排程,包括您指定的任何時區。

否則,如果您未選取時區,日光節約時間 (DST) 事件可能影響觸發程序何時執行。 例如,DST 開始時,開始時間會調快一小時,DST 結束時則調慢一小時。 不過,某些時間範圍可能會在時間移位時造成問題。 如需詳細資訊和範例,請參閱日光節約時間和標準時間的週期

下一步