公文转发流程自定义的数据建模

本文探讨了如何在多用户管理信息系统(MIS)中设计文件转发流程自定义功能,允许系统管理员定义公文流转路径。通过分析需求,提出数据建模方案,包括企业机构设置、公文格式、处理动作、流程环节记录等,旨在实现灵活的流程管理,适应企业不断变化的需求。
摘要由CSDN通过智能技术生成

  开发比较复杂的企业多用户管理信息系统(MIS),不可能不涉及到系统内多个用户之间的数据文件的流转、审批等功能的开发。由于企业的需求总是随着时间推移不断发生变化,加之各个企业内部所设置的办公流程不尽相同,一套通用性比较好的管理信息系统应该能让系统管理员自己定义公文转发的流程。
  尽管笔者没有机会在已参与开发了的MIS中实现出文件转发流程自定义的功能,但是,早在2002年初就曾深入思考过这方面的设计。当时由于某些原因不能公开自己的设计思路,现在市面上已经有不少MIS产品提供这样的功能,笔者又已离职,所以是时候把我的设计思路整理出来,和大家分享。

  首先,让我们分析需求,制定目标。
  1)一般情况下,企业内的公文转发、审批是按部门或职位来转送,即对岗不对人。例如:某个流程的某个环节需要财务总监审批,日后财务总监换人,该流程应该不受影响。而且,流程中某个环节可能出现某个部门中的任何一人都能审批,或者需要该部门的所有人员共同审批。
  2)流程中转送,审批的公文一般分为文件和表单2种格式。文件格式的公文应该支持批处理,即一次可以转发多个文件,审批时可以只退回其中某一个不合格的文件,其他的文件可以转送到下一个环节继续处理。表单格式的公文应该能让用户自己定义表单格式,确定表单中的表项。同理,表单也应该支持批处理。
  3)流程中处理公文的动作应该能让用户自己定义。这样一旦日后增加了新的处理动作,也不用修改MIS系统的底层数据建模。当然,要实现新的处理动作,还是需要在业务逻辑层编写相应的代码,不过和修改底层数据建模比起来,工作量要少得多。
  4)每个流程的环节数不一定相同,应该能让用户设定环节数,指定公文流转中每个环节的发送部门和接受部门,处理模式,最长等待时间。
  5)当待处理的公文发出后,系统应该在等待时间中定期向该流程中下个环节的用户()发出通知,提醒该用户()及时处理,直至公文已被处理。如果超出最长等待时间,公文还未被用户()处理,此次流程处理失败。企业管理层可能会要求记录相关信息,以便在日后业务流程重组(BPR)时参考。
  6)某些企业由于特殊原因,在某个流程中要求实现跨环节处理。例如,该流程有6步,执行到第二个环节时要求处理后可以跳过中间三个环节,直接转到最后一个环节等候处理。其实,这种情况下,并不一定要在技术层面上实现其灵活性,这种特例毕竟是少数。用户只需定义一个新流程,把上面流程的第126步复制加入进来,2个流程之间用流程名来区分即可。一个优秀的系统架构设计师应该充分利用现有的工具,不要什么都自行架设开发。
  上面的需求对灵活性要求较高,抽象化程度较深,所以在表现层和业务逻辑层的开发量较大,初期投资较多,不过开发完毕后估计不需对底层数据库修改,即可满足日后不断变化的公文流转需求。如果不需要这么高的灵活性,可以按实际项目简化某些假设条件。下面按照上面的需求进行用例(use case)分析和数据建模。
  1)由于流程环节的发送方和接受方是对岗不对人,我们应该先描画出整个企业的机构设置,确定每个部门的权利职责。其中大的部门内可能有若干子部门,每个子部门内又有不同职位,负责处理相应的事务。所以,可先建立一个树形关系的数据表来保存企业结构,然后,采用权限表和用户组相结合的方式来保存每个部门每个职位的职能。这块的设计思路见我之前发布的浅谈数据库设计技巧()()”,我在下面直接给出大致的数据表结构:
部门表(Department_table)

名称

类型

约束条件

说明

Dp_id

int

无重复

类别标识,主键

Dp_name

varchar(50)

不允许为空

类型名称,不允许重复

Dp_father

int

不允许为空

该类别的父类别标识,如果是顶节点的话设定为某个唯一值

Dp_layer

varchar(6)

限定3,初始值为000000

类别的先序遍历,主要为减少检索数据库的次数

功能表(Function_table)

名称

类型

约束条件

说明

f_id

int

无重复

功能标识,主键

f_name

varchar(20)

不允许为空

功能名称,不允许重复

f_desc

varchar(50)

允许为空

功能描述

用户组表(User_group)

名称

类型

约束条件

说明

group_id

int

无重复

用户组标识,主键

group_name

varchar(20) 

不允许为空

用户组名称

group_power

varchar(100)

不允许为空

用户组权限表,内容为功能表f_id的集合

用户表(User_table)

名称

类型

约束条件

说明

user_id

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值