云工作流支持通過配置Cron表達式周期性或指定時間來調度工作流執行。本文介紹如何為云工作流配置定時調度。
前提條件
事件總線(EventBridge)
云工作流(CloudFlow)
已成功創建工作流。具體操作,請參見創建流程。
注意事項
創建的自定義總線以及事件規則的數量超過上限后,將無法再創建定時調度。在單個阿里云賬號單個地域維度下,關于創建工作流調度涉及的資源數量的限制,請參見使用限制。
通過控制臺配置工作流定時調度
登錄云工作流控制臺,然后在頂部菜單欄,選擇地域。
在工作流列表頁面,單擊目標工作流。
在工作流詳情頁面,單擊工作流調度頁簽,然后單擊創建工作流調度。
在創建工作流調度面板,調度類型選擇定時觸發,設置相關配置項,然后單擊確定。
配置項
說明
本文示例
名稱
填寫自定義的定時調度名稱。
schedule-test
描述
填寫該定時調度的描述信息。
test schedule
觸發周期
選擇調度時間配置方式,并填寫具體的時間規則。
固定周期:配置調度時間周期,即每過多場時間調度工作流執行一次。
自定義 CRON:輸入標準的Cron表達式,配置調度時間。關于CRON 表達式的說明和示例,請參見調度時間參數說明。
選擇固定周期并設置周期類型為秒,周期時間為30,即每過30秒調度工作流執行一次。
觸發消息
填寫自定義的參數。格式為JSON。
{"key": "value"}
說明首次創建用戶,需要為云工作流調度角色授予AliyunEventBridgeFullAccess的權限,并且還需要開通事件總線EventBrige服務。
創建完成后,您可以在工作流詳情頁面的工作流調度頁簽,根據界面提示查看、編輯、刪除或禁用/啟用工作流。
調度時間參數說明
定時調度的參數格式如下:
{
UserData: "payload"
Schedule: "cronExpression"
TimeZone: "GMT+0:00"
}
UserData:您可以自定義執行定時調度的輸入,必須為JSON對象。
TimeZone:觸發周期執行的時區,默認為UTC(GMT+0:00)。北京時間為UTC+8,即GMT+8:00。
Schedule:工作流被調度的時間,支持Cron表達式。格式見下表。
下表為時間表達式常用示例。例如,您希望工作流在北京時間12:00被調度,對應的Cron表達式為
0 0 12 * * ?
,時區為GMT+8:00
。示例
Cron表達式
時區
每天12:00調度函數
0 0 12 * * ?
GMT+8:00
每天12:30調度函數
0 30 12 * * ?
GMT+8:00
每小時的26分、29分、33分調度函數
0 26,29,33 * * * ?
GMT+8:00
周一到周五的每天12:30調度函數
0 30 12 ? * MON-FRI
GMT+8:00
周一到周五的每天12:00~14:00每5分鐘調度函數
0 0/5 12-14 ? * MON-FRI
GMT+8:00
一月到四月每天12:00調度函數
0 0 12 ? JAN,FEB,MAR,APR *
GMT+8:00
每年3月的每周三的14:10和14:44觸發
0 10,44 14 ? 3 WED
GMT+8:00
每月最后一天23:00觸發
0 0 23 L * ?
GMT+8:00
每月最后一個周五10:15觸發
0 15 10 ? * 6L
GMT+8:00
每月的第三個周五10:15觸發
0 15 10 ? * 6#3
GMT+8:00
字段說明
字段名
取值范圍
允許的特殊字符
Seconds
0~59
, - * /
Minutes
0~59
, - * /
Hours
0~23
, - * /
Day-of-month
1~31
, - * ?/ L W
Month
1~12或JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
, - * /
Day-of-week
1~7或SUN, MON, TUE, WED, THU, FRI, SAT
, - * ? / L #
特殊字符說明
字符名
定義
示例
*
表示任一,每一。
在Minutes字段中:0表示每分鐘的0秒都執行。
,
表示列表值。
在Day-of-week字段中:MON,WED,FRI表示星期一,星期三和星期五。
-
表示一個范圍。
在Hours字段中:10-12表示UTC時間從10點到12點。
?
表示不確定的值。
與其他指定值一起使用。例如指定了一個特定的日期,但您不在乎他是星期幾,那么在Day-of-week字段中就可以使用。
/
表示一個值的增加幅度,n/m表示從n開始,每次增加m。
在minute字段中:3/5表示從3分開始,每隔5分鐘執行一次。
L
月份最后一天或星期六,周位上6L表示月份的最后一個周五。
在Day-of-month字段上使用L,表示取每個月的最后一天,在Day-of-week上使用6L表示月份的最后一個星期五。
W
用于日期字段,表示最近的工作日(周一至周五)。
在Day-of-month上使用1W,表示每月的第一個工作日執行。
#
用于星期字段,表示第幾個星期幾。
6#3表示每個月的第三個周五。
Input格式
定時調度會按照以下Input格式(推送格式為CloudEvents)來調度您的工作流執行。
{
"datacontenttype":"application/json;charset=utf-8",
"aliyunaccountid":"143998900779****",
"aliyunpublishtime":"2022-09-21T05:00:00.035Z",
"data":{
"TimeZone":"GMT+0:00",
"Schedule":"0/30 * * * * ?",
"UserData":{
"key":"value"
}
},
"specversion":"1.0",
"aliyuneventbusname":"Housekeeping-Bus",
"id":"d100262d-90c7-4caf-a3b5-813f3526a1f7-****",
"source":"housekeeping.scheduledevent",
"time":"2022-09-21T05:00:00Z",
"aliyunregionid":"cn-beijing",
"type":"eventbridge:Events:ScheduledEvent"
}{
"datacontenttype":"application/json;charset=utf-8",
"aliyunaccountid":"143998900779****",
"aliyunpublishtime":"2022-09-21T05:00:00.035Z",
"data":{
"TimeZone":"GMT+0:00",
"Schedule":"0/30 * * * * ?",
"UserData":{
"key":"value"
}
},
"specversion":"1.0",
"aliyuneventbusname":"Housekeeping-Bus",
"id":"d100262d-90c7-4caf-a3b5-813f3526a1f7-****",
"source":"housekeeping.scheduledevent",
"time":"2022-09-21T05:00:00Z",
"aliyunregionid":"cn-beijing",
"type":"eventbridge:Events:ScheduledEvent"
}
UserData:您在調度配置里自定義的輸入,在流程定義中可以直接通過$Input.data.UserData來讀取。更多信息,請參見輸入和輸出。
TimeZone:觸發周期執行的時區,默認為UTC(GMT+0:00)。北京時間為UTC+8,即GMT+8:00。
Schedule:工作流被調度的時間,支持Cron表達式。