🌊 工作流与任务编排
👤 适合谁:业务负责人 / 流程设计者 / 复杂业务架构师
⏱️ 阅读时长:约 8 分钟
💡 一句话:单个工作流是单条线,多个工作流编排起来才是企业级业务。
工作流是 YingCore 执行单个任务的路径图——从触发到完成,按节点一步步走完。但真实业务远比单条工作流复杂:客户入职要走 4 个工作流(注册→配置→培训→激活),还要在不同部门间传递数据。任务编排就是把这些工作流按业务关系组合成完整流程,既能复用又能治理。
核心理念:从单条路径到流程网络
YingCore 的工作流是基础积木,任务编排是把积木拼成城堡:
任务编排的三大价值:复用(工作流可独立维护)/组合(复杂业务可拆解)/治理(跨流程可监控)。
五种编排模式
任何复杂业务流都是这五种基本模式的组合:
| 模式 | 关系 | 适用场景 | 典型例子 |
|---|---|---|---|
| ➡️ 顺序 | A → B → C | 强依赖的串行 | 注册 → 审核 → 通过 |
| ⚡ 并行 | A | B | C | 无依赖的同时 | 同步邮件、短信、IM 通知 |
| 🔀 条件 | A → 条件 → B/C | 根据结果分支 | 通过走 B,不通过走 C |
| 🔁 循环 | A → 循环 → A | 反复执行至达标 | 审核不通过反复重写 |
| 🛑 异常 | A → 异常处理 | 失败兜底 | 任意步骤失败走应急流程 |
模式 1:顺序执行
工作流按定义顺序依次执行,上一步的输出作为下一步的输入:
orchestration:
type: sequence
steps:
- workflow: customer-register
output_to: register_result
- workflow: customer-verify
input_from: register_result
- workflow: customer-activate
input_from: verify_result
模式 2:并行执行
多个工作流同时启动,结果汇合后再走下一步:
orchestration:
type: parallel
steps:
- parallel:
- workflow: send-email
- workflow: send-sms
- workflow: send-im
join: all_completed
- workflow: log-notification
input_from: parallel_results
模式 3:条件分支
根据条件选择不同分支,支持嵌套:
orchestration:
type: branch
steps:
- workflow: credit-check
- branch:
if: score >= 80
then: workflow: fast-approve
else:
if: score >= 60
then: workflow: manual-review
else: workflow: reject
模式 4:循环重试
反复执行直到满足退出条件,达到上限后走兜底:
orchestration:
type: loop
workflow: auto-fix-bug
condition: build_status == success
max_iterations: 5
on_exhausted: workflow: notify-human
模式 5:异常兜底
任意步骤失败时走应急流程,避免业务中断:
orchestration:
type: try-catch
try:
- workflow: pay-order
- workflow: deduct-inventory
catch:
workflow: rollback-and-notify
notify: [财务, 客服]
核心机制:编排的四块基石
任务编排的稳定运行依赖四个机制:
1️⃣ 变量传递
工作流之间的数据通过变量传递,支持嵌套和映射:
{
"outputs": {
"register_result.customer_id": "C-2025-001",
"register_result.email": "user@example.com",
"register_result.created_at": "2025-09-01T10:00:00Z"
}
}
下游工作流引用:
- workflow: send-welcome
inputs:
customer_id: $outputs.register_result.customer_id
email: $outputs.register_result.email
2️⃣ 上下文继承
子工作流自动继承父编排的上下文(项目、客户、环境),无需重复传递:
3️⃣ 错误传播
子工作流失败时,错误向上传播并附带完整上下文:
{
"error": {
"workflow": "credit-check",
"step": "query-database",
"message": "数据库连接超时",
"context": {
"customer_id": "C-2025-001",
"retry_count": 3
}
}
}
4️⃣ 资源隔离
每个编排实例拥有独立的资源配额,避免相互影响:
| 资源 | 隔离方式 |
|---|---|
| 数据库连接 | 每个编排实例独立连接池 |
| 内存 | 单实例内存上限 1GB |
| 并发数 | 单租户编排并发上限可配置 |
| 超时 | 全局超时 + 单工作流超时双层保护 |
完整场景示例:客户入职全流程
某 SaaS 产品新客户入职需要 4 个工作流协同,外加延迟触发的分析工作流:
YAML 完整编排配置:
# customer-onboarding.yaml
orchestration:
name: 客户入职
trigger: webhook
timeout: 24h
on_error: notify-admin
steps:
- id: register
workflow: customer-register
input: $trigger.payload
output: customer_info
- id: provision
workflow: resource-provision
input: $steps.register.output
output: resource_info
depends_on: register
- id: training
workflow: user-training
input: $steps.provision.output
output: training_record
depends_on: provision
timeout: 8h
- id: activation
workflow: activation-campaign
input: $steps.training.output
depends_on: training
delay: 1d
- id: analysis
workflow: usage-analysis
input: $steps.activation.output
depends_on: activation
delay: 7d
error_handling:
catch_all:
workflow: notify-admin
notify: [运营, 客服, 技术]
retry_policy:
max_attempts: 3
backoff: exponential
执行流程一览:
| 步骤 | 工作流 | 输入 | 输出 | 耗时 | 异常处理 |
|---|---|---|---|---|---|
| 1 | customer-register | webhook 载荷 | 客户信息 | ~10s | 进入 notify-admin |
| 2 | resource-provision | 客户信息 | 资源 ID | ~5min | 自动重试 3 次 |
| 3 | user-training | 资源 ID | 培训记录 | ~8h | 超时进入 notify-admin |
| 4 | activation-campaign | 培训记录 | 触达日志 | ~1min | 延迟 1 天触发 |
| 5 | usage-analysis | 触达日志 | 分析报告 | ~30s | 延迟 7 天触发 |
关键参数
| 参数 | 类型 | 说明 |
|---|---|---|
orchestration | object | 编排配置根 |
trigger | string | 编排触发方式 |
steps[].id | string | 步骤唯一标识 |
steps[].depends_on | array | 依赖的上游步骤 |
steps[].delay | duration | 启动延迟 |
steps[].timeout | duration | 单步骤超时 |
on_error | string | 全局错误处理 |
retry_policy | object | 重试策略 |
error_handling | object | 异常分支配置 |
最佳实践
| 实践 | 说明 |
|---|---|
| 🎯 编排粒度适中 | 单次编排 3-7 个工作流,超出要拆 |
| ➡️ 关键路径用顺序 | 强依赖必须保证时序 |
| ⚡ 独立任务用并行 | 节省时间,提高吞吐 |
| 🔁 异常分支必须 | 每个编排都有兜底流程 |
| 👤 关键节点留审批 | 涉及金额、合规等必须有人审 |
| 📊 全链路可视化 | 编排状态实时可查,出问题秒定位 |
| 🛑 双层超时 | 全局 + 单步骤双层保护,避免单点卡死 |
| 💰 资源配额治理 | 限制单租户编排并发数,避免资源抢占 |
| 🔍 失败时记录上下文 | 出错时把上下文快照存下来,便于排查 |
| 🔄 可重入设计 | 同一编排支持幂等重跑,不出副作用 |
下一步
任务编排让多个工作流组合成完整业务。深入了解 🛡️ 平台管理 中如何管控编排的权限、审计和资源配额。