敏捷流程实施三部曲

前言

我们通过 业务对象、表单、流程引擎 共同协作来解决业务流难实施的痛点

业务对象用来承载、持久化业务数据;表单则是业务数据的展示层;流程则用来驱动业务数据流转。三者共同协作完成流程实施。

  • 业务对象:由实体(表)组成,支持任意数据结构(关联关系),可以跨库来组织业务对象(支持分布式事务),而且难以置信的支持N层。
  • 在线表单:表单完美的支撑了业务对象的展示,并支持丰富的前端组件和字段级权限控制。
  • 流程引擎:高效、解耦、强大、灵活。流程引擎一切功能皆插件。

支持任意结构的业务对象 + 丰富控件易扩展的表单(字段级别的权限控制) + 功能强大的工作流引擎 便是我们完整的流程解决方案

当然、流程也支持 url表单,方便已有业务、异构系统的流程实施

业务对象会贯穿流程的整个生命周期

一、构建业务对象

AgileBPM 的业务对象支持任意数据结构,N 层,并支持跨库构建业务对象。合理设置 实体的实体名、属性名,可以达到与 java bean 无缝转换。

配置实体业务表

表单管理-》业务对象-》业务实体
点击【新增】 创建业务实体,并生成数据库表, 也可以选择外部表来添加一个实体。
前者数据库表由 AgileBPM 维护,后者则通过数据库维护表,并通过同步表结构的形式更新实体。

  1. 定义实体名、表名
  2. 添加属性字段,配置字段的表单展示控件,设置校验规则
  3. 设计预留外键字段(如有关联需求)

我们建议实体名、属性名与真实代码实体名相同,以便于业务对象转换 Javabean

实体特殊属性

  • 数据源: 数据源为该表数据库信息,支持跨库表共同组织成一个业务对象,并支持事物
  • 实体名: 业务实体的名字,属性名则为业务实体属性名字
  • 数据库表名: 数据库对应的表名字,数据库字段名则是表字段名字
  • 是否已经生成表: 如果业务对象持久化方式为 数据库,则必须生成表
  • 隐藏控件: 隐藏控件不会在生成表单的时候展示该字段。但在业务对象中存在该字段数据
  • 分类: 方便检索归类。此系统所有分类皆是此用意

字段控件

业务对象可以在实体配置的基础上重载配置字段控件。

目前支持控件有

  • 单行文本
  • 隐藏
  • 复选框
  • 多行文本
  • 富文本编辑框-百度编辑器
  • 下拉框多选
  • 下拉框
  • 单选按钮
  • 附件上传
  • 数据字典
  • 流水号 (刷新页面可能会浪费流水号,推荐后台通过表单后置脚本对字段赋值)
  • 城市选择
  • 自定义新组件?

如图所示(处于已生成表的状态下,用户可以在数据库找到与之对应的表)

2.配置业务对象

表单管理-》业务对象-》业务对象

点击【新增】 创建业务对象

  1. 定义业务对象描述,对象名
  2. 选择主表
  3. 点击添加新增子表,然后首先请确认 主子表关联类型(一对多,或者一对一)
  4. 配置子表外键,设计子表与主表的关联关系,点击外键的 “+” 也可以新增固定值来对子表数据进行过滤
  5. 如果存在多层关系,可以在子表中的【配置子表】中配置子表的关系表
  6. 点击保存,并在业务对象列表页中查看业务对象 JSON 数据结构,检查是否符合预期
  7. 重新编辑业务对象,并配置 控件与布局 ,为生成表单做准备

至此就完成了业务对象的配置

后期会支持乐观锁,会添加业务对象功能插件如数据日志,目前插件有权限处理插件,格式插件,数据解析插件

业务对象特殊属性

  • 持久化方式: 默认为数据持久化方式,支持 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表单)