



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、公文转发流程自定义的数据建模开发比较复杂的企业多用户管理信息系统(MIS),不可能不涉及到系统内多个用户之间的数 据文件的流转、审批等功能的开发。由于企业的需求总是随着时间推移不断发生变化,加之 各个企业内部所设置的办公流程不尽相同,一套通用性比较好的管理信息系统应该能让系统 管理员自己定义公文转发的流程。尽管笔者没有机会在已参与开发了的 MIS中实现出文件转发流程自定义的功能,但是, 早在2002年初就曾深入思考过这方面的设计。当时由于某些原因不能公开自己的设计思 路,现在市面上已经有不少 MIS产品提供这样的功能,笔者又已离职,所以是时候把我的设 计思路整理出来,和大家分享。首先,让我们分
2、析需求,制定目标。1)一般情况下,企业内的公文转发、审批是按部门或职位来转送,即对岗不对人。例 如:某个流程的某个环节需要财务总监审批,日后财务总监换人,该流程应该不受影响。而 且,流程中某个环节可能出现某个部门中的任何一人都能审批,或者需要该部门的所有人员 共同审批。2)流程中转送,审批的公文一般分为文件和表单 2种格式。文件格式的公文应该支持批 处理,即一次可以转发多个文件,审批时可以只退回其中某一个不合格的文件,其他的文件 可以转送到下一个环节继续处理。表单格式的公文应该能让用户自己定义表单格式,确定表 单中的表项。同理,表单也应该支持批处理。3)流程中处理公文的动作应该能让用户自己定义
3、。这样一旦日后增加了新的处理动作, 也不用修改MIS系统的底层数据建模。当然,要实现新的处理动作,还是需要在业务逻辑层 编写相应的代码,不过和修改底层数据建模比起来,工作量要少得多。4)每个流程的环节数不一定相同,应该能让用户设定环节数,指定公文流转中每个环节 的发送部门和接受部门,处理模式,最长等待时间。5)当待处理的公文发出后,系统应该在等待时间中定期向该流程中下个环节的用户(们)发出通知,提醒该用户(们)及时处理,直至公文已被处理。如果超出最长等待时间,公文还未被用户(们)处理,此次流程处理失败。企业管理层可能会要求记录相关信息,以便在日后 业务流程重组(BPR)时参考。6)某些企业由于
4、特殊原因,在某个流程中要求实现跨环节处理。例如,该流程有6步,执行到第二个环节时要求处理后可以跳过中间三个环节,直接转到最后一个环节等候处理。 其实,这种情况下,并不一定要在技术层面上实现其灵活性,这种特例毕竟是少数。用户只 需定义一个新流程,把上面流程的第 1, 2, 6步复制加入进来,2个流程之间用流程名来区 分即可。一个优秀的系统架构设计师应该充分利用现有的工具,不要什么都自行架设开发。上面的需求对灵活性要求较高,抽象化程度较深,所以在表现层和业务逻辑层的开发量 较大,初期投资较多,不过开发完毕后估计不需对底层数据库修改,即可满足日后不断变化 的公文流转需求。如果不需要这么高的灵活性,可
5、以按实际项目简化某些假设条件。下面按 照上面的需求进行用例(use case分析和数据建模。1)由于流程环节的发送方和接受方是对岗不对人,我们应该先描画出整个企业的机构设 置,确定每个部门的权利职责。其中大的部门内可能有若干子部门,每个子部门内又有不同 职位,负责处理相应的事务。所以,可先建立一个树形关系的数据表来保存企业结构,然 后,采用权限表和用户组相结合的方式来保存每个部门每个职位的职能。这块的设计思路见 我之前发布的 浅谈数据库设计技巧(上)、(下)”,我在下面直接给出大致的数据表结构:部门表(Departme nt_table)名称类型约束条件说明Dp idint无重复类别标识,主键
6、Dp n amevarchar(50)不允许为空类型名称,不允许重复Dp fatherint不允许为空该类别的父类别标识,如果是 顶节点的话设定为某个唯一值Dp layervarchar(6)限定3层,初始值为000000类别的先序遍历,主要为减少 检索数据库的次数功能表(Fu nction_table)名称类型|约束条件说明f idint无重复功能标识,主键f namevarchar(20)不允许为空功能名称,不允许重复f_descvarchar(50)允许为空功能描述用户组表(User_group)名称类型约束条件说明group idint无重复用户组标识,主键group namevarc
7、har(20)?不允许为空用户组名称group powervarchar(100)不允许为空用户组权限表,内容为功能 表f id的集合用户表(User_table)名称类型约束条件说明user idint无重复用户标识,主键user n amevarchar(20)无重复用户名user pwdvarchar(20)不允许为空用户密码说明:其中,按部门的不同职位设置不同权限的用户组,如某个用户组为市场部业务员”该用户组的用户可在流程 报销申请”中发送报销申请。2) 尽管流程中的公文分为文件和表单2种格式,但是每个文件/表单都应该有其唯一标识,名称等属性。所以,我们把公文抽象化,把这2种格式的公文
8、的共有属性提取出来建立一张公文表。公文表(Docume nt_table)名称类型约束条件说明doc idint无重复公文标识,主键doc namevarchar(50)不允许为空公文名称doc_typechar(1)?不允许为空公文类型doc_type字段用来辨别公文格式,目前只有 2种格式,可设“ 1表示文件格式,“ 2表示 表单格式。估计未来新增公文格式不会太多,所以该字段只需一位字符。文件格式的公文一 般是在文件内固定好格式,我们可用一个二进制的字段直接保存整个文件的内容。文件格式 的公文需要建一个表来保存相关信息,其大致数据表如下:文件表(File_table)名称类型约束条件说明f
9、ile idint无重复文件标识,主键file namevarchar(50)不允许为空文件名称file valuebin ary?不允许为空文件内容表单格式的公文要让用户自己定义表单格式,确定表单中的表项。有两种方法来实现: 每当用户建立一个新格式的表单时,就新建立一个表,把用户输入的表单表项当作该 表的字段。这种方式的优点是表单查询速度较快方便,业务逻辑层的开发量较小。缺点是不 太灵活,如果企业所使用的不同格式的表单较多(20种),整个数据库的结构显得比较混乱,而且大部分表单中都有相同的字段,这样也增加了数据冗余。这种方式的数据建模如 下:表单总表(Sheet_table)名称类型约束条件
10、说明sheet idint无重复表单标识,主键sheet namevarchar(50)不允许为空表单名称table n amevarchar(20)不允许为空表单子表名,如Sub table1/Sub table2表单子表 1(Sub_table1)名称类型约束条件说明sub idint无重复表单子表标识,主键opti on1varchar不允许为空表单表项1opti on2varchar不允许为空表单表项2opti on3varchar不允许为空表单表项3表单子表 2(Sub_table2)名称类型约束条件说明sub idint无重复表单子表标识,主键opti on1varchar不允许为
11、空表单表项1opti on2varchar不允许为空表单表项2opti on3varchar不允许为空表单表项3对表单再进行一个抽象,把表单看成由若干个表单表项所组合成的一个集合。这种方 式的优点是相当灵活,用户建立新格式的表单时只用从已有表单表项中勾选出需要的表项即 可,而且整个数据库结构清晰,没有数据冗余。缺点是开发比较复杂,工作量和上面相比高 出不少,而且表单查询速度较慢。下面是这种方式的数据建模:表单总表(Sheet_table)名称类型约束条件说明sheet idint无重复表单标识,主键sheet namevarchar(50)不允许为空表单名称表单表项表(Option_table
12、)名称类型约束条件说明op idint无重复表单表项标识,主键op namevarchar(50)不允许为空表单表项名称op lengthint不允许为空表单表项长度op_unitvarchar(10)允许为空表单表项单位表单信息表(Sheetinfo_table)名称类型约束条件说明info idint无重复表单信息标识,主键sheet idint不允许为空?所属表单标识,和Sheet table.sheet i(关联op idint不允许为空?表单表项标识,和Optio n table.op id 关联in fo_valuevarchar()?不允许为空表单信息值3) 我们可以把公文转发的
13、流程抽象化,看作一个实体超类。建表如下:流程表(Flow table)名称类型约束条件说明flow idint无重复流程标识,主键flow n amevarchar(50)不允许为空流程名称flow step numint不允许为空流程步数I flow desc| varchar(200) | 允许为空| 流程描述流程中的每一步都可以抽象化成从发送方至接受方的用例,其数据建模大致如下:处理动作表(Action_table)名称类型约束条件说明a idint无重复动作标识,主键a_n amevarchar(20)不允许为空动作名称a callvarchar(50)不允许为空动作所调用的模块a d
14、escvarchar(200)允许为空动作描述说明:如果米用面向过程的开发方式,如纯脚本语言,可以把每一个处理动作写成一个 函数,调用a_call字段记录的函数,即可完成相应处理动作。如果采用面向对象的开发方 式,可以用COM组件来封装处理动作,则a_call用来记录相应的COM组件的接口方法。如 果是在.NET Framework环境下,可以米用 Web服务的方式。当然,发送方、接受方以及公 文标识是作为输入参数的。流程环节表(Step_table)名称类型约束条件说明step idint无重复环节标识,主键bel ongint不允许为空所属流程标识,和Flow table.flow id
15、关联setp orderint不允许为空所属流程的步骤次序senderint不允许为空发送方标识,和User group.group id关联receiverint?不允许为空接受方标识,和User group.group id 关联a idint不允许为空???处理动作标识,和 Action_table.a_id关联 a typeint不允许为空接受方所需的处理人数max waitint不允许为空最长等待时间wait unitvarchar(5)不允许为空等待时间的单位说明:a_type用来确定接受方所需的处理人数,“0表示需同职位的所有人一起处理,1表示只需该职位的任意一名员工处理,“ 2
16、表示需该职位的任意两名员工一起处理,依次递推一起处理的方式和处理动作有关,例如是投票方式,少数服从多数,还是某人有一 票否决权等等。可能针对某些处理动作还得细化,进行相关的数据建模,这里我就不细分下 去了。4) 下面分析公文转发的流程环节记录。此时相当于实例化一个流程环节的对象,发送方 和接受方应具体联系到管理信息系统的某个(些)用户,而不是某个用户组。每经过一环节,我们除了要保存这方面的信息,还必须保存该环节所转发的公文,以及处理状况等信息。而且,该环节所转发公文数量大于等于一,所以可以参考我之前发布的浅谈数据库设计技巧(下)”中的 简洁的批量m:n设计”建表大致如下:流程环节记录表(Ste
17、p_log)名称类型约束条件说明logdint无重复环节记录标识,主键step idint不允许为空环节标识,和 Step table.step id关联 sendervarchar(1OO)不允许为空发送用户标识,相关用户组的User table.user id 的集合receivervarchar(1OO)不允许为空接受用户标识,相关用户组的User table.user id 的集合doc idint不允许为空转发公文标识,和Document table.doc id关联batch noint不允许为空批量转发公文编号,同一流程环节转发的batch no相同statechar(1)?不允
18、许为空处理状态sub datedatetime不允许为空提交时间res datedatetime允许为空处理回复时间comme ntvarchar(255)允许为空处理回复注释说明: 同一流程环节转发的batch_no和该批第一条入库的logd相同。举例:假设当前最大 log_id是64,接着某用户一次转发了 3件公文,则批量插入的3条流程环节记录的batch_no 都是65。之后另外一个用户通过某个流程环节转发了一件公文,再插入流程环节记录的batchd 是 68。 state字段用来描述其流程环节所处的状态,是正待处理,已被处理通过,已被处理驳 回,还是超出最长等待时间被系统自动收回等等。通过这个字段我们对接受用户发出处理通 知,还可以可以很容易的查询出所有超出最长等待时间被系统自动收回的流程,以便企业管 理层在日后业务流程重组(BPR)时参考。 如果某份公文在某个流程中的某个环节被处理驳回,可以看作该公文在此次流程中被 驳
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国网络安全产品项目创业计划书
- 中国家庭治疗仪项目创业计划书
- 中国姬松茸项目创业计划书
- 中国CAE软件项目创业计划书
- 中国疾病远距检测项目创业计划书
- 中国观赏植物项目创业计划书
- 中国宁夏电子竞技项目创业计划书
- 中国高山反季节蔬菜项目创业计划书
- 安全教育考卷的题库及答案
- 2025年AI医疗行业发展现状、趋势、主要应用领域及相关标的分析报告
- 2024年陕西普通高中学业水平考试通用技术试题
- 供水泵(多级立式离心泵)培训课件2016424
- 走失患者不良事件警示教育内容
- 无人机法律法规与安全飞行 第2版 课件 9 国外无人机管理
- 人工智能技术在化学教育中的应用
- 中国国防历史与国防建设课件
- 本地生活如何玩转抖音引流
- 柔性矿物绝缘电缆技术要求
- PT100与温度对照表
- 销售话术900句(培训资料)
- 国开学习网《小学语文教学研究》形考任务1-5答案
评论
0/150
提交评论