定时运行工作流

把已经验证的工作流配置为按 Cron 表达式定时运行,并通过工作流详情和工作流作业列表检查调度是否生效。

前提条件

  • 已完成一次手动部署和运行,确认 DSL、运行输入和计算实例可用。

  • 已保存工作流 ID。

  • 已明确业务时区、运行频率、并发影响和失败后的处理方式。

不要用定时运行替代首次验证。错误的输入、权限或外部依赖会在每个调度周期重复失败;有写操作的工作流还可能产生重复副作用。

在部署时配置定时运行

部署请求中同时设置 execution_modecron_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 * * * *"
  }'

字段

类型

必需

说明

execution_mode

string

定时运行使用 cron

cron_expression

string

调度表达式。应明确时区,并通过当前部署的校验。

default_values

object

视工作流而定

定时运行无法在每次触发前等待用户填写表单,因此必需运行输入应有稳定默认值或由算子自行取得。

compute_resource_id

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_modedata.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

暂停只影响新调度;按需单独取消已有工作流作业。

下一步

最后更新于