Skip to content

流程表单设计 ​

不写业务 DO、不写 list/info,用设计器拖控件,把表单挂到模型并发布,大厅就能填。formType = 10。要台账、附件、审批后回写,走 业务表单开发。四步向导见 流程配置。

默认端口 48080,前缀 /admin-api。定义在 bpm_form,接口 @RequestMapping("/bpm/form"),前端 ruoyi-office-vben/apps/web-antd/src/views/bpm/form/。

示意图:定义在 bpm_form;运行时按分类分流存储。

案例:物品申领 ​

演示库已有「通用表单」(模型 key common-form,绑 leave-form),可先打开对照。下面按「物品申领」教新建一笔。名称和字段以你当时库为准,不要编控件 id。不要用 BPM 模块里的硬编码演示 oa_leave(那是 Vue 页,不是 form-create)。

设计表单 ​

菜单 流程中心 → 流程设置 → 流程表单,官方菜单 id 1187,路由 /bpm/manager/form。

  1. 新建,进设计器 fc-designer-pro。
  2. 拖:单行文本(物品名称)、数字(数量)、多行文本(用途)、附件。
  3. 保存:名称「物品申领」,单据类型编码如 OA199,分类选 normal(只要变量、不要物理表)。bound 再落到指定表,方便 SQL。

按钮权限:bpm:form:create、bpm:form:update、bpm:form:delete。

流程表单列表

本系统截图:流程表单定义。操作列是复制、修改、详情、删除。

表单设计器

本系统截图:左侧组件,中间画布,右侧表单配置。

名称说明仓库路径
confform-create 表单配置 JSONBpmFormDO#conf
fields每个控件一条 JSONBpmFormDO#fields
billCodePrefix单据号前缀发起时生成
categorynormal 或 bound保存弹窗
设计器BpmFormEditor.../views/bpm/form/designer/index.vue

业务侧补了 UserSelect、DeptSelect、DictSelect、FileUpload 等,注册在 src/components/form-create/helpers.ts。控件 field 不要撞流程状态、发起人这类保留键。

BpmFormServiceImpl#updateForm 会按 formId 把最新 conf / fields 写回已发布定义。只改控件不必再发一版流程;改节点和审批人必须再发布。

挂到模型 ​

流程中心 → 流程设置 → 流程模型,新建:

  1. 名称「物品申领」,标识自定且不与已有 key 冲突,流程类型 SIMPLE。
  2. 表单类型选流程表单,下拉选刚保存的表单。父菜单选业务目录,勿挂「发起流程」。
  3. 流程设计:发起人 → 部门负责人 → 结束。
  4. 保存并发布。

到角色「菜单权限」勾上同步出来的列表和创建按钮。打开 发起流程,点卡片本页填写,提交走 POST /admin-api/bpm/process-instance/create。

模型绑表单

本系统截图:通用表单第二步。表单类型锁定为流程表单,下拉为已设计的 leave-form。

发起填写

本系统截图:大厅里流程表单本页填写。用车、用印是业务表单,不要和这类卡片搞混。

bound 提交走 POST /bpm/form-data/v2/save-and-start,索引在 bpm_form_data。

表单类型会锁定

首次发布成功后 formTypeLocked 为真,不能改成业务表单。

表与关键类 ​

sql
CREATE TABLE `bpm_form` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` varchar(64) NOT NULL COMMENT '表单名',
  `status` tinyint NOT NULL COMMENT '开启状态',
  `conf` text NOT NULL COMMENT '表单的配置',
  `fields` text NOT NULL COMMENT '表单项的数组',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `bill_code_prefix` varchar(32) DEFAULT NULL COMMENT '单据类型编码(作为单据编号前缀)',
  `category` varchar(32) NOT NULL DEFAULT 'normal' COMMENT '表单分类:normal / bound',
  PRIMARY KEY (`id`)
) COMMENT='BPM 表单定义表';

发布后 formConf / formFields 冗余到 bpm_process_definition_info,避免改库后老实例找不到当时的字段。bound 绑定在 bpm_form_table_binding。

名称说明仓库路径
Controller@RequestMapping("/bpm/form")ruoyi-office/yudao-module-bpm/.../controller/admin/definition/BpmFormController.java
发起页formType === NORMAL 时 setConfAndFields2.../processInstance/create/modules/form.vue
菜单同步NORMAL 发布时 upsertBpmProcessFormMenuSyncService

节点上的字段显隐、只读,流程表单走 BpmFormFieldPermissionController。

怎么选 ​

名称适用限制
流程表单 normal临时申请、没有独立台账查询、报表、回写都弱
流程表单 bound还想用 SQL 查主表 / 明细要维护绑定和字段映射
业务表单用印、用车等有单据状态和台账按规范写 list / info

配置与操作 ​

管理员先在 流程表单 画控件并保存,再到模型选流程表单、绑 formId、配菜单后发布。员工从发起大厅填同一套控件。开启见 流程功能设计。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版