审批链的一种设计

审批链模型需求分析与系统设计说明书

审批链模型提供了一个通用的、可配置的审批功能操作方案。

业务角色说明

审批链模型中共设计有两类角色:提交人、审批人。

提交人可以执行提交操作、撤回审批两种操作。提交操作将创建一个新的审批事项,并开启一个新的审批流程。撤回审批操作将终止一个审批流程。

审批人可以执行审批操作。审批操作通常包括“通过”和“驳回”两种。每个审批操作将变更审批事项的“审批状态”,并变更下一个审批人或终止审批流程。

审批人可以继续递归细化为多个子审批人。审批人之间以“审批角色”作为区分。

业务用例说明

用例名称提交审批事项-
前置条件-
用户前端界面系统后台
1、填写审批表单;发送“提交审批”请求2、数据校验;如果校验未通过,则返回1;否则进入33、数据校验;如果校验未通过,则返回1;否则进入4
--4、新增一个审批事项;将该审批事项的状态设定为“已提交”;审批链中增加记录“提交人-提交审批”
5、页面提示“提交成功”。--
后置条件1、该审批事项应进入提交人的“我的审批”中;
2、该审批事项应进入对应审批人的“等待审批”中
-
用例名称撤销审批事项-
前置条件1、审批事项当前状态必须是“已提交”;
2、操作人必须是该审批事项的提交人
-
用户前端界面系统后台
1、选择审批事项,提交“撤销审批”请求2、数据校验;如果校验未通过,则返回1;否则进入33、数据校验,并校验前置条件;如果校验未通过,则返回1;否则进入4
--4、设定指定审批事项的审批状态为“已撤销”;审批链中增加记录“提交人-撤销审批”
5、页面提示“提交成功”。--
后置条件1、该审批事项应退出对应审批人的“等待审批”列表-
用例名称执行审批操作-
前置条件操作人必须是该审批事项的对应审批人-
用户前端界面系统后台
1、选择审批事项,提交审批操作请求2、数据校验;如果校验未通过,则返回1;否则进入33、数据校验,并校验前置条件;如果校验未通过,则返回1;否则进入4
--4、根据审批事项当前状态、审批操作、审批角色,设定指定审批事项的“新审批状态”;审批链中增加记录“审批人-新审批状态”
5、页面提示“提交成功”。--
后置条件1、该审批事项应退出对应审批人的“等待审批”列表
2、该审批事项应进入对应审批人的“完成审批”列表
3、该审批事项应进入下一对应审批人的“等待审批”列表
-

当前系统中应用到的审批流程图如下所示。

系统当前审批流程 图示:系统当前审批流程

上图中,圆角方框内“已提交”、“撤销申请”、“风控管理员审批通过”、“领导审批通过”、“审批驳回”、“审批通过”等是审批事项的不同状态;线条上“员工”是系统用户的默认角色,“风控管理员”、“审批领导”是审批人的不同审批角色;线条上“提交审批”、“撤销申请”、“审批通过”、“审批驳回”等是可执行的审批相关操作。

系统设计说明

系统设计重点是处理不同角色、不同操作引发的不同状态转换,即根据当前状态、审批角色、审批操作来获取新状态的业务逻辑。下文重点针对此设计进行文档说明,其它部分略去。

执行审批操作用例

执行审批操作用例的基本设计思路是,采用表驱动法,将数据转换逻辑转变为查表逻辑。通过把审批操作规则放置在数据库中,保证此设计方案的通用性和可配置性。

  1. 流程图/描述 步骤说明

a) 前端提交审批人用户代码、审批事项代码、操作类型代码。
b) 根据审批事项代码,获取审批事项当前状态。
c) 根审批人用户代码和审批事项当前状态,获取审批人的审批角色代码。
d) 根据审批角色代码、审批事项当前状态、操作类型代码,从审批操作规则库表中找到对应的操作规则,从而找到审批事项的新审批状态。
e) 将审批事项当前状态更新为新审批状态;插入新的审批链信息。

步骤c中,由于可能存在一个审批人用户对应多个审批角色代码的问题,因此需要为审批角色配置“优先级”属性。当审批人-审批角色出现1对多映射时,该步骤只选取可对选定审批事项进行审批、且优先级最低的审批角色进行操作。该步骤要求审批角色和审批角色优先级之间一一对应,没有重复或空值。

步骤d要求审批角色、当前状态、操作类型三个数据可以唯一确定一个新审批状态。这是本模型的限制。

  1. 类图/描述 略

  2. 时序图/描述 略

  3. 其它说明 略

数据库设计说明

数据实体描述

数据库实体包括两个部分:审批事项相关实体,和审批规则相关实体。

审批事项相关的数据实体包括审批事项;审批内容;审批链。

  1. 数据实体_关系图 (ER图)

审批事项、审批内容和审批链数据实体概念模型图 上图:审批事项、审批内容和审批链数据实体概念模型图

审批规则相关的数据实体包括用户信息、用户-审批角色映射、审批角色信息、审批规则信息。 审批规则相关数据实体概念模型图 上图:审批规则相关数据实体概念模型图