定时运行工作流¶
把已经验证的工作流配置为按 Cron 表达式定时运行,并通过工作流详情和工作流作业列表检查调度是否生效。
前提条件¶
已完成一次手动部署和运行,确认 DSL、运行输入和计算实例可用。
已保存工作流 ID。
已明确业务时区、运行频率、并发影响和失败后的处理方式。
不要用定时运行替代首次验证。错误的输入、权限或外部依赖会在每个调度周期重复失败;有写操作的工作流还可能产生重复副作用。
在部署时配置定时运行¶
部署请求中同时设置 execution_mode 和 cron_expression:
{
"workflow_id": "<WORKFLOW_ID>",
"name": "scheduled-catalog-workflow",
"dsl_yaml": "<WORKFLOW_DSL_YAML>",
"execution_mode": "cron",
"cron_expression": "CRON_TZ=Asia/Shanghai 0 */5 * * * *"
}
示例表达式只用于展示字段形态,不是推荐运行频率。时区和 Cron 语法应使用当前部署支持的格式;不要依赖服务器的隐含本地时区。
也可以通过以下接口更新已有工作流:
curl -X PATCH \
"$PRODUCT_API_BASE_URL/workflow/v2/workflow-apps/$WORKFLOW_ID" \
-H "X-API-Key: $PRODUCT_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"execution_mode": "cron",
"cron_expression": "CRON_TZ=Asia/Shanghai 0 */5 * * * *"
}'
字段 |
类型 |
必需 |
说明 |
|---|---|---|---|
|
string |
是 |
定时运行使用 |
|
string |
是 |
调度表达式。应明确时区,并通过当前部署的校验。 |
|
object |
视工作流而定 |
定时运行无法在每次触发前等待用户填写表单,因此必需运行输入应有稳定默认值或由算子自行取得。 |
|
string |
视工作流而定 |
定时任务使用的默认计算实例。变更后应重新检查部署结果。 |
检查调度配置¶
更新或部署后读取工作流详情:
curl "$PRODUCT_API_BASE_URL/workflow/v2/workflow-apps/$WORKFLOW_ID" \
-H "X-API-Key: $PRODUCT_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H "Accept: application/json"
确认响应中的 data.workflow.execution_mode、data.workflow.cron_expression、状态和触发摘要符合预期。配置已保存不表示第一个调度周期已经运行。
第一个预期触发时间过去后,列出工作流作业:
curl --get \
"$PRODUCT_API_BASE_URL/workflow/v2/workflow-apps/$WORKFLOW_ID/executions" \
-H "X-API-Key: $PRODUCT_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H "Accept: application/json" \
--data-urlencode "execution_mode=cron"
保存最新工作流作业 ID,并按运行、查询与取消读取状态和结果。Cron 工作流的一次工作流作业结束后可能回到等待下次调度的状态,不要只根据工作流顶层状态判断最近一次运行成功。
暂停和恢复¶
暂停工作流可阻止创建新的调度工作流作业:
curl -X POST \
"$PRODUCT_API_BASE_URL/workflow/v2/workflow-apps/$WORKFLOW_ID/pause" \
-H "X-API-Key: $PRODUCT_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID"
恢复时将路径末尾改为 /resume。暂停不会取消已经开始的工作流作业;如需停止当前工作流作业,应先查询工作流作业 ID,再使用工作流作业取消接口。
常见问题¶
现象 |
先检查 |
下一步 |
|---|---|---|
表达式校验失败 |
时区前缀、字段数量和当前部署支持的语法 |
从当前产品提供的调度配置重新取得表达式,不照搬其他 Cron 实现。 |
到时间没有运行 |
工作流状态、时区、暂停状态和工作流作业列表 |
先确认换算后的实际触发时间,再检查工作流详情和权限。 |
每次调度都失败 |
默认输入、计算实例和外部依赖 |
暂停新调度,修复并手动验证后再恢复。 |
暂停后仍看到运行中任务 |
工作流作业开始时间和工作流作业 ID |
暂停只影响新调度;按需单独取消已有工作流作业。 |