ClouisleClouisle

触发器与运行

通过手动、API 和 Webhook 启动工作流

工作流触发方式在工作流设置中配置。发布前可调试草稿,正式调用要求工作流已发布。

手动与 API 运行

编辑器内选择运行,填入输入变量后启动。API 运行使用:

curl -X POST "$CLOUISLE_API/api/v1/workflows/<workflow_id>/run" \
  -H "Authorization: Bearer $CLOUISLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"inputs":{"query":"检查订单状态"}}'

请求体中的 inputs 默认是空对象。响应返回运行 ID;使用运行查询接口获取状态和结果。

Webhook

  1. 在工作流设置选择Webhook。
  2. 保存后生成 Webhook Token 和 URL。
  3. 在访问 API页复制 URL,使用 API Key 的 Bearer 认证调用。
  4. 请求 JSON 直接提供工作流输入字段。

Webhook 工作流必须已发布且启用对应触发器。初始响应包含运行 ID、状态和 stream_url;连接该 URL 可通过 SSE 查看节点事件。

curl -X POST "$CLOUISLE_API/api/v1/workflows/webhook/<webhook_token>" \
  -H "Authorization: Bearer $CLOUISLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"检查订单状态"}'

Cron

在工作流设置 > 触发器中选择定时任务,界面支持按间隔、每天、每周、每月或自定义 Cron 配置。执行频率会换算成一条标准 Cron 表达式(分 时 日 月 周,如 0 9 * * 1-5 表示工作日上午 9 点),间隔预设为 5/10/15/30 分钟与 1/2/3/6/12 小时。

仅保存配置不会自动运行

后端有实现调度逻辑的任务:workflow.check_scheduled(backend/app/services/workflow/tasks.py)挑选已发布且 trigger_type=cron 的工作流,用 croniter 判断当前这一分钟是否命中表达式,命中就以空输入 {}、以工作流创建者的身份触发一次运行。

但随附部署不会调度它,原因有三层,必须全部解决:

  1. 不在 include 列表里:backend/app/core/celery.py 中 celery_app 的 include 不含 app.services.workflow.tasks,任务默认没有注册到 Worker。
  2. 不在 Beat 表里:同一文件的 beat_schedule 只有用量重置、密钥/密码到期检查、沙箱会话清理和 AgentRun 失联扫描,没有 workflow.check_scheduled。随附的 Beat 容器(Compose/Helm/K8s 的 beat 服务,命令为 python main.py beat)只执行这份表。
  3. 键名不一致:调度任务读 trigger_config["cron"],而工作流设置表单写入的是 trigger_config["cron_expression"]。即使调度成功,界面保存的表达式也不会被匹配。

该任务也没有匹配的 task_routes 规则,因此会落到 default 队列——需要确认有 Worker 消费该队列,或在 Beat 条目里用 options.queue 指定队列。

启用自定义部署的 Cron

  1. 把 app.services.workflow.tasks 加进 celery_app 的 include,或在 Worker 启动时导入该模块。
  2. 在 beat_schedule 添加条目(建议每分钟一次):
app/core/celery.py
celery_app.conf.beat_schedule["workflow-check-scheduled"] = {
    "task": "workflow.check_scheduled",
    "schedule": crontab(minute="*"),
}
  1. 统一表达式键名:把界面保存的 trigger_config.cron_expression 改名为 cron,或直接用 API 把表达式写到 cron 键上。
  2. 确认消费 default 队列的 Worker 正在运行,否则任务发出后无人执行。
工作流触发器设置
工作流触发器设置

状态与取消

运行状态包括 pending、running、waiting、success、failed、cancelled 和 timeout;waiting 表示停在暂停节点等待审批或补充变量。运行抽屉可以取消仍在执行的任务;部分已发出的外部 API 请求不能被中断。查看工作流 API获取流式运行事件。

这篇文章对你有帮助吗?

本页目录