工作流语义化编辑
工作流 CLI 的主要目标是让用户和 AI 用业务语言维护流程图,而不是导入一整份内部 JSON。常规操作包括:进入某个工作流、查看节点、增加或删除节点、从节点 A 连接到节点 B,以及为某条连线增加 condition、validator 或 post function。
:::warning 先确认设计上下文
工作流命令会修改当前 App 的可编辑设计版本。执行任何带 --yes 的命令前,先运行 spark-designer task current 和 spark-designer task workflow current。
:::
1. 选择工作流
spark-designer task app use spark-sample
spark-designer task workflow list
spark-designer task workflow use "Purchase Approval"
spark-designer task workflow current
选择后,后续命令可以省略工作流 ID 或 Key:
spark-designer task workflow describe --lang zh-CN
spark-designer task workflow nodes
也可以在单条命令中显式指定工作流:
spark-designer task workflow describe "Purchase Approval"
2. 理解节点和连线编号
spark-designer task workflow describe --lang zh-CN
describe 按流程顺序显示节点,并为出口连线生成稳定的本次读取编号。后续可以使用编号、transition ID 或精确名称操作连线:
例如,Purchase Approval 会输出类似下面的流程描述:
| 节点 | 类型 | 出口流转 |
|---|---|---|
| Start | 开始 | 1. Submit Request → Department Review |
| Department Review | 人工环节 | 2. Approve → Amount Gateway、3. Reject → Rejected |
| Amount Gateway | 排他网关 | 4. Low Amount → Approved、5. High Amount → Finance Review |
| Finance Review | 人工环节 | 6. Approve → Approved、7. Reject → Rejected |
| Approved | 结束 | 无 |
| Rejected | 结束 | 无 |
这张表就是流程在命令行中的可读表示:节点是行,出口流转显示操作名称和目标节点,前面的数字用于继续查看或修改对应连线。需要交给脚本或 AI 处理时使用结构化输出:
spark-designer task workflow describe --json
JSON 会返回 workflow 摘要、按流程顺序排列的节点,以及每条 outgoing transition 的编号、ID、来源、目标、表单、优先级和 condition/validation/function 数量。
spark-designer task workflow transition 2
spark-designer task workflow rules 2
查看节点入线和出线数量:
spark-designer task workflow nodes
spark-designer task workflow node "Department Review"
在执行多次图修改后,应重新运行 describe,因为连线编号可能随图结构变化。
3. 增加和删除节点
增加人工环节,并绑定一个已存在的可复用 Step:
spark-designer task workflow add-node \
--type status \
--name "Manager Review" \
--step "Manager Review" \
--yes
增加结束节点:
spark-designer task workflow add-node \
--type end \
--name Approved \
--yes
支持的节点类型:
| 类型 | 说明 |
|---|---|
start | 开始节点;一个工作流只能有一个 |
status | 人工处理环节,可绑定 MANUAL_ACTIVITY Step |
end | 结束节点,可绑定 END Step |
timer | 定时节点 |
sub-task | 子任务节点 |
exclusive | 排他网关 |
parallel | 并行网关 |
gather | 汇聚网关 |
swimlane | 泳道展示元素 |
comment | 注释展示元素 |
删除节点会同时删除与它相连的 transition:
spark-designer task workflow remove-node "Manager Review" --yes
开始节点受保护,不能删除。
4. 从节点 A 连接到节点 B
spark-designer task workflow connect \
Start \
"Manager Review" \
--name Submit \
--yes
从人工环节连接到结束节点,并为操作绑定表单:
spark-designer task workflow connect \
"Manager Review" \
Approved \
--name Approve \
--form managerReview \
--yes
删除连线:
spark-designer task workflow disconnect 3 --yes
CLI 会提前检查常见非法结构:节点不能连接自己、不能连接回开始节点、开始节点只能有一条出口、泳道和注释不能作为 transition 端点。
5. 查看连线规则能力
每个 Spark 环境可能注册不同的规则扩展。不要依赖静态名单,先读取服务端 Catalog:
spark-designer task workflow rules 2
spark-designer task workflow rule-types
spark-designer task workflow rule-types condition CustomFieldCondition
spark-designer task workflow rule-types validation FieldRequiredValidation
spark-designer task workflow rule-types function SetTaskDetailFunction
rules <transition> 同时展示:
- 当前连线已经配置的规则。
- 可添加的 condition、validation 和 post function 类型。
- 每种规则需要的字段、数据来源以及是否允许重复。
字段、表单、节点、角色、部门和用户等引用会按当前 App 的业务名称、Code 或 ID 解析。
6. 配置 Condition
Purchase Approval 的高金额分支可以这样配置:
spark-designer task workflow add-condition 5 \
--type CustomFieldCondition \
--label "Amount at least 10000" \
--field-id Amount \
--operator ge \
--origin-value 10000 \
--yes
对于 Catalog 中没有专用 flag 的字段,可以重复使用 --set:
spark-designer task workflow add-condition 5 \
--type CustomFieldCondition \
--set fieldId=Amount \
--set operator=ge \
--set originValue=10000 \
--yes
删除第 1 条 condition:
spark-designer task workflow remove-condition 5 1 --yes
7. 配置 Validator
要求部门审批必须填写意见:
spark-designer task workflow add-validator 2 \
--type FieldRequiredValidation \
--label "Department review comment is required" \
--field-name "Department Review Comment" \
--error-message "Please enter the department review comment." \
--yes
删除 validator:
spark-designer task workflow remove-validator 2 1 --yes
Validator 在允许流转前执行;校验失败时不会进入目标节点。
8. 配置 Post Function
部门审批通过后,将结果字段设置为 Approved:
spark-designer task workflow add-post-function 2 \
--type SetTaskDetailFunction \
--label "Set Department Review Result" \
--field-id "Department Review Result" \
--origin-value Approved \
--yes
驳回连线可以使用同一规则类型把值设置为 Rejected。删除 post function:
spark-designer task workflow remove-post-function 2 1 --yes
Post function 在 transition 执行过程中改变任务数据、处理人、父子任务状态或触发扩展动作。具体字段以 rule-types function <type> 返回的 Catalog 为准。
9. 完整检查流程
spark-designer task current
spark-designer task workflow current
spark-designer task workflow describe --lang zh-CN
spark-designer task workflow rules 2
spark-designer task workflow rules 5
spark-designer task check workflow-config --yes
spark-designer task package export --output purchase-approval-backup.json
低层级的 workflow save --file 和 update-* --file 仍可用于包迁移、备份恢复和精确 JSON round trip,但不应作为正常编辑工作流的首选方式。
继续阅读:任务运行期与 Worklist。