流程定义与设计器
流程定义是工作流的可发布模板。设计器负责维护基础信息、表单来源、流程节点、分支条件和流程级高级设置;流程定义列表负责分类筛选、发布、禁用、复制、导入导出、版本管理和另存为模板。
入口
| 入口 | 用途 |
|---|---|
工作流引擎 → 流程管理 → 流程定义 | 查看定义列表,创建、编辑、复制、发布、禁用、删除、导入导出、查看版本 |
| 流程定义列表左侧「流程分类」栏 | 维护分类:新增、重命名、删除(分类下仍有流程时不可删除);点击分类过滤定义列表 |
/workflow/designer/:id | 编辑已有流程定义 |
/workflow/designer/new | 新建流程定义 |
工作流引擎 → 流程管理 → 流程模板 | 从模板创建流程,或维护可复用模板 |
设计步骤
设计器按四步组织:
- 基础信息:流程名称、描述、分类、发起人范围。
- 表单设计:选择表单库表单、自定义业务表单或业务系统主导表单。
- 流程设计:配置审批节点、办理节点、抄送、分支、延迟、触发器、子流程等。
- 更多设置:撤回、重新提交、评论、通知、审批人自动去重、业务编号和审批单打印。
基础信息
| 配置 | 说明 |
|---|---|
| 流程名称 | 用户发起和审批时看到的名称 |
| 流程分类 | 用于定义列表、发起工作台和模板筛选 |
| 流程描述 | 展示用途和使用说明 |
| 发起人范围 | 支持全部人员、指定用户、指定部门、指定角色 |
发起人范围在用户发起时校验。用户不在范围内时,该流程不会成为可发起项或会被后端拒绝。
表单来源
| 类型 | 说明 |
|---|---|
designer 表单库设计器 | 绑定「表单库」中的可视化表单,通过内置渲染器发起、查看和审批 |
custom 自定义业务表单 | 绑定 packages/web/src/pages 下的 React 组件,数据存入流程实例 formData |
external 业务系统主导 | 业务模块保存数据,流程通过 bizType + bizId 关联;业务表单内预览审批链和查看实际流程,查看组件只渲染业务资料,见业务接入规范 |
表单字段、变量、远程数据源和自定义业务表单契约见 表单与远程数据源。
流程节点
设计器以类钉钉/飞书的纵向流程树呈现。点击节点下方的加号添加节点,点击节点卡片打开右侧配置抽屉。
流程图使用统一的 nodes/edges/settings 契约,树式界面是编辑时生成的投影。导入、模板和 API 均使用此图结构。循环、异常边等无法转换成树的流程使用完整图查看和 JSON 编辑;修改经校验应用后保存。实例详情读取运行实例中冻结的流程图。
发起预览默认显示预计路径,可切换「全部结构」查看已排除分支。条件缺失或后续节点可修改条件值时显示「条件未定」;固定人选展示预计姓名,随机、矩阵和动态表单选人说明解析时点。预览不执行触发器或决策副作用。已排除分支无需自选审批人;条件未定的自选分支需在提交前预选,只有实际进入时才分派。
| 分组 | 节点 |
|---|---|
| 审批节点 | 审批人、办理人、抄送 |
| 分支节点 | 条件分支、并行分支、包容分支、路由分支 |
| 其它节点 | 延迟器、触发器、子流程 |
节点配置详情见 节点配置。
分支设计
| 分支 | 执行方式 |
|---|---|
| 条件分支 | 按分支顺序命中第一条满足条件的路径;默认分支作为兜底 |
| 并行分支 | 所有分支同时执行,全部完成后汇聚 |
| 包容分支 | 执行所有满足条件的分支;没有显式命中时进入默认分支 |
| 路由分支 | 通过规则中心决策表、评分卡、决策流输出或运行时数据决定路径 |
条件规则可读取表单字段或发起人维度。发起人维度包含本人、部门、角色、岗位;部门匹配按包含子部门语义处理。路由分支的「决策资产」先选择类型(决策表 / 评分卡 / 决策流),资产下拉只展示对应类型的已发布规则中心资产;运行时通过 decide() 求值,并把返回的 outputs 合并到实例 formData,随后再按路由字段或出边条件选择分支。
发布前工具
| 工具 | 说明 |
|---|---|
| 发布前体检 | 校验流程结构、审批人可解析性、分支覆盖、超时策略和表达式引用;画布仅对「严重」问题显示节点角标并阻断发布,警告/提示集中在此查看 |
| 流程仿真 | 使用表单数据、发起人和预设审批决策模拟路径,生成时间线、阻塞点和分支命中 |
| 仿真用例 | 按定义保存常用测试用例,后续可复用和覆盖 |
| 审批链路预览 | 发起前根据当前表单数据计算预期审批链路 |
| 版本对比 | 对比两个发布版本,或与当前定义对比,展示节点增删、部分节点配置和连线条件差异;不比较表单 schema 或全部高级设置 |
规则中心资产的可用性由规则中心自身维护;设计器仅选择已发布资产,不复制规则内容进流程定义。
仿真结果与边界
仿真复用 Token 路径计算,输入可指定当前设计或已保存定义、表单数据、发起人和预设人工决策。结果包含时间线、预计处理人、分支命中、节点状态、阻塞点、路径签名、健康问题和估算耗时;API 缺省最多执行 100 步,设计器提交 160 步,允许范围为 1–500 步,达到上限时返回 stepLimit。
人工节点按预设意见模拟,延迟节点使用模拟等待。触发器不发送真实外呼,子流程不创建真实实例;仿真不会生成运行实例和持久化待办。预计耗时来自模拟设置与默认值,只用于评估路径,不能当作真实服务性能。
仿真抽屉支持时间线播放、单步查看、断点和保存用例。用例保存输入与预设决策,可用于反复检查同一设计。外部接收方、邮件 / 短信发送和实际回调仍需在配置完成后通过真实流程验证。
发布与版本
发布流程会校验 flowData 并执行体检硬门禁(存在「严重」问题时拦截),保存版本快照后把定义状态置为 published。发布版本保存流程图、表单类型、业务表单配置和当时的表单 schema,供版本查看使用。
实例发起时从当前已发布定义及当前绑定表单建立实例快照;草稿提交、退回发起人后的重提也会重新读取定义与表单。已进入运行的实例使用自己的快照。表单库的修改不会改写这些运行快照,但会影响之后新发起或重提的申请。
| 操作 | 说明 |
|---|---|
| 保存 | 保存为草稿;已发布/已禁用的定义被修改后自动回到草稿,需重新发布 |
| 发布 | 保存当前快照并允许用户发起;体检存在「严重」问题时阻断发布并引导修复 |
| 禁用 / 启用 | 控制是否允许新发起;启用(含批量启用)同样要通过体检门禁,防止带病上线 |
| 复制 | 复制定义为新的草稿 |
| 导入 / 导出 | 以自包含 JSON 迁移定义 |
| 历史版本 | 定义列表打开侧边抽屉,分页浏览每次发布的版本快照 |
| 恢复版本 | 将发布版本的定义配置与表单绑定恢复为草稿,再编辑发布;此操作不回滚表单库中的 schema |
设计器带未保存更改守卫:点击「返回列表」时对当前设计(基础信息、表单绑定、流程图、高级设置)与最近一次加载/保存的快照做比对,存在未保存改动时弹出确认(放弃更改并离开 / 留在此页),防止误触丢失设计。
更多设置
| 设置 | 说明 |
|---|---|
| 允许撤回 | 发起人可撤回运行中的实例 |
| 允许驳回后重新提交 | 被驳回或撤回后可克隆为新草稿重新提交 |
| 流程结束后通知发起人 | 控制通过、驳回、撤回和退回时的结果通知;邮件和短信还受流程通知渠道及收件人偏好控制 |
| 自动去重 | 同一审批人在流程中重复出现时可不处理、全部后续自动通过或仅连续节点自动通过 |
| 允许流程中评论 | 实例详情显示沟通区,参与人可留言和提及 |
| 列表摘要字段 | 选择 ≤3 个表单字段,「待我审批」「我的申请」列表在标题下直接展示字段值(钉钉式卡片摘要) |
| 业务编号 | 在设计器选择「系统管理 → 编号规则」中已发布的规则版本;未选择或清空专用选择时,发布采用当前业务类型默认规则(优先本租户覆盖,否则继承平台)。高级模板支持多个 {FORM.字段编码或名称},发布时自动匹配或显式选择字段,并冻结实际字段映射;账号、部门与租户来自真实发起人。修改默认或发布新编号版本不会改变已发布流程,需重新发布流程才采用新的选择 |
| 通知渠道 | 站内信始终可用,可额外开启邮件和短信 |
| 审批单打印 | 绑定审批单实体打印模板;不绑定时按表单快照自动排版。可按当前表单新建模板、限制仅通过后打印、启用通过 / 驳回后的自动归档以及打印水印(支持 {printer} / {time} / {serialNo})。来源选择、脱敏与验真见审批单打印与存证 |
设置项中「模板绑定」存在流程定义列 printTemplateId(外键,模板删除时自动解绑),其余打印选项与撤回 / 评论等设置一样随 flowData.settings 保存。
设计建议
- 为关键节点设置稳定
key,便于事件订阅、诊断、退回和业务集成引用。 - 条件分支保留默认兜底,包容分支避免所有分支都无命中。
- 并行分支不要保留空路径,避免运行时等待永远无法汇聚。
- 对外呼、回调和子流程节点先用仿真和健康体检验证,再发布给业务用户。