前言
我们通过 业务对象、表单、流程引擎 共同协作来解决业务流难实施的痛点
业务对象用来承载、持久化业务数据;表单则是业务数据的展示层;流程则用来驱动业务数据流转。三者共同协作完成流程实施。
- 业务对象:由实体(表)组成,支持任意数据结构(关联关系),可以跨库来组织业务对象(支持分布式事务),而且难以置信的支持N层。
- 在线表单:表单完美的支撑了业务对象的展示,并支持丰富的前端组件和字段级权限控制。
- 流程引擎:高效、解耦、强大、灵活。流程引擎一切功能皆插件。
支持任意结构的业务对象 + 丰富控件易扩展的表单(字段级别的权限控制) + 功能强大的工作流引擎 便是我们完整的流程解决方案
当然、流程也支持 url表单,方便已有业务、异构系统的流程实施
业务对象会贯穿流程的整个生命周期
一、构建业务对象
AgileBPM 的业务对象支持任意数据结构,N 层,并支持跨库构建业务对象。合理设置 实体的实体名、属性名,可以达到与 java bean 无缝转换。
配置实体业务表
表单管理-》业务对象-》业务实体
点击【新增】 创建业务实体,并生成数据库表, 也可以选择外部表来添加一个实体。
前者数据库表由 AgileBPM 维护,后者则通过数据库维护表,并通过同步表结构的形式更新实体。
- 定义实体名、表名
- 添加属性字段,配置字段的表单展示控件,设置校验规则
- 设计预留外键字段(如有关联需求)
我们建议实体名、属性名与真实代码实体名相同,以便于业务对象转换 Javabean
实体特殊属性
- 数据源: 数据源为该表数据库信息,支持跨库表共同组织成一个业务对象,并支持事物
- 实体名: 业务实体的名字,属性名则为业务实体属性名字
- 数据库表名: 数据库对应的表名字,数据库字段名则是表字段名字
- 是否已经生成表: 如果业务对象持久化方式为 数据库,则必须生成表
- 隐藏控件: 隐藏控件不会在生成表单的时候展示该字段。但在业务对象中存在该字段数据
- 分类: 方便检索归类。此系统所有分类皆是此用意
字段控件
业务对象可以在实体配置的基础上重载配置字段控件。
目前支持控件有
- 单行文本
- 隐藏
- 复选框
- 多行文本
- 富文本编辑框-百度编辑器
- 下拉框多选
- 下拉框
- 单选按钮
- 附件上传
- 数据字典
- 流水号 (刷新页面可能会浪费流水号,推荐后台通过表单后置脚本对字段赋值)
- 城市选择
- 自定义新组件?
如图所示(处于已生成表的状态下,用户可以在数据库找到与之对应的表)
2.配置业务对象
表单管理-》业务对象-》业务对象
点击【新增】 创建业务对象
- 定义业务对象描述,对象名
- 选择主表
- 点击添加新增子表,然后首先请确认 主子表关联类型(一对多,或者一对一)
- 配置子表外键,设计子表与主表的关联关系,点击外键的 “+” 也可以新增固定值来对子表数据进行过滤
- 如果存在多层关系,可以在子表中的【配置子表】中配置子表的关系表
- 点击保存,并在业务对象列表页中查看业务对象 JSON 数据结构,检查是否符合预期
- 重新编辑业务对象,并配置 控件与布局 ,为生成表单做准备
至此就完成了业务对象的配置
后期会支持乐观锁,会添加业务对象功能插件如数据日志,目前插件有权限处理插件,格式插件,数据解析插件
业务对象特殊属性
- 持久化方式: 默认为数据持久化方式,支持 ServiceBean 、远程 HTTP 接口、Feign接口 三种持久化方式
- 子表关系 一对多 : 意味着主表下,该子表是多条的,对应业务对象中属性名为 xxxList 结构(与真实J avaBean 实体约定相同)
- 子表关系 一对一 : 意味着主表与子表是一对一的数据结构。对应属性名为 xxx
- 配置子表: 配置与子表单条数据关联的业务数据
业务对象数据结构
我们举一个例子来描述业务对象的数据结构,以及一对多、一对一对象名的特殊之处
假设 一个老师Teacher 带多个班级Class,每个班级存在多个学生。 班级与老师其实是多对多关系。 我们在老师和班级中添加一条 关系表ClassRel
一个ClassRel 对应一个班级,一个班级对应多个学生Student
业务对象数据结构如下:Teacher:{
id:id,
name:name,
ClassRelList:[{ // teacher与之一对多
id:id,
relType:"临时\代课\正式",
Class{ // ClassRel与之一对一
id:xxx,
name:xxx,
....
studentList[ // Class与之 一对多
{},{}...
]
}
}]
}
如图所示(里面可以灵活地配置所需要的外键关系):
视频讲解
该视频讲解了实体配置、业务对象配置、Vue版本表单生成、表单模板、表单插件演示、表单开发说明等内容
开源版本【业务对象、表单讲解】请参考https://www.bilibili.com/video/av54295253/ (angular表单)