Appearance
第 3 章 · 表单:发起时填什么,审批时看什么
流程要能跑,必须先有表单:发起人填的那张 和 每个审批节点看的那张。 本章讲怎么建、怎么绑、怎么控制字段能不能改。
1. 两种表单,先用第一种
| 类型 | 怎么来 | 适用 |
|---|---|---|
| 元数据表单 | 在线开发 → 数据模型 + 模型字段,无需写代码 | 绝大多数业务表单,推荐 |
| 自定义 Vue 组件表单 | 前端工程里放一个 wf-form / tf-form 组件,由开发提供 | 复杂交互、需要前端逻辑 |
净装镜像里可选的表单有限:流程级能看到 请假表单、元数据表单;节点级另有 元数据表单、测试任务节点自定义表单。选自定义 Vue 组件时,设计器会提示"当前表单为自定义 Vue 组件,如需修改请直接编辑对应的 Vue 文件"。
2. 元数据表单:数据模型 + 模型字段
在线开发 → 数据模型。

一个数据模型 = 一张表 = 一张表单。行操作里 模型字段 是配表单字段的地方:

每个字段关心四列:
| 列 | 说明 |
|---|---|
| 字段名称 | 落库列名,同时是流程变量名(加 f_ 前缀,如 days → f_days),条件表达式引用的就是它 |
| 字段注释 | 表单上显示的标签 |
| 组件名称 | 控件类型:Input、InputNumber、Textarea、ApiDict(字典下拉)、ApiSelect(用户下拉)、ApiTreeSelect(部门树)、DatePicker、TableLink 等 |
| 允许为空 | 关掉后发起时该字段必填,前端和引擎都会拦 |
发起页看到的就是这张表:请假类型(ApiDict)、请假天数(InputNumber)、请假事由(Textarea),三个都标了必填星号。
3. 把表单绑到流程上
3.1 流程级:实例启动表单
设计器里在画布空白处点右键 → 流程属性 → 实例启动表单 选 元数据表单。

选完出现 设计表单 按钮。点它会先让你选怎么开始:

| 入口 | 行为 |
|---|---|
| 直接编辑(空白表单) | 从零拖一张内嵌表单,表单结构随流程定义一起存 |
| 从数据模型导入 | 把某个数据模型的字段拉进来当表单,最省事 |
| 跳转到表单设计页 | 去 在线开发 的独立表单设计页 |
没选实例启动表单时,抽屉底部会给出提示"未选择表单:请选择实例启动表单。选择【元数据表单】后可直接编辑内嵌表单。"
3.2 节点级:任务表单
选中节点 → 表单配置 → 任务表单,从下拉里选。不选则该节点办理时只有审批意见区,没有业务表单。

下拉里的候选来自前端注册的节点表单组件,唯一编码 就是组件名。任务表单的表名约定是 _,按这个规则给不同节点配不同表单最清晰。
4. 字段权限:谁能改哪几栏
先在 流程属性 里把 启用字段权限 打开,然后每个节点都能对该表单的字段单独设权限:
| 取值 | 界面 | 效果 |
|---|---|---|
| 1 | 只读 | 看得到、改不了(审批页表单整片变灰就是这个) |
| 2 | 可编辑 | 正常填写 |
| 3 | 不可见 | 该节点上不出现这个字段 |
典型配法:发起节点把业务字段设为可编辑,审批节点全设只读,只有"财务复核"节点把 amount 单独放开可编辑。
演示数据里 请假申请 就是这么配的:发起节点三个字段可编辑,部门经理与分管领导节点三个字段只读。
5. 表单与条件分支的关系
条件分支的表达式引用的是流程变量,即 f_ + 字段名称。请假申请的两条分支:
f_days <= 3 → 直接结束
f_days > 3 → 进分管领导审批所以字段名称改过一次,分支表达式也要跟着改,否则条件恒不成立、流程会走默认分支。
6. 已知缺陷
在线开发 → 数据模型 → 表单设计 这个独立页面,在当前前端镜像里会白屏,控制台报 NotFoundError: Failed to execute 'insertBefore' on 'Node'(Vue 补丁竞态,与发起页提交后偶发崩溃同源)。
绕开方式:字段用 模型字段 维护(§2),表单结构用 设计表单 → 从数据模型导入 生成(§3.1),不要走那个独立页。
7. 卡住了看这里
| 现象 | 原因 | 处理 |
|---|---|---|
| 发起抽屉里是空的 | 实例启动表单没选,或选了元数据表单但没有对应数据模型 | 按 §3.1 选表单;确认关联业务表在数据模型里存在 |
| 办理弹窗只有审批意见 | 节点没绑任务表单 | §3.2 选上再部署 |
| 审批页字段能改,本该只读 | 未启用字段权限,或该节点该字段设成了可编辑 | §4 |
| 表单加了字段但流程里看不到 | 只改了数据模型,没重新导入并部署 | 设计表单 → 从数据模型导入 → 保存 → 部署 |
| 条件分支不按预期走 | 表达式里的变量名与字段名不一致 | §5,字段名区分大小写 |
| 独立表单设计页白屏 | 已知前端缺陷 | §6 |