权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】

2010-10-08 23:38  通用C#系统架构  阅读(13985)  评论(51编辑  收藏  举报

 

    几乎没一个公司,什么事情都一个人说了算的,都需要大家一起协商、协调才会最终生效,都需要走一个流程的,这也是管理软件需要流程审批组件的原因。

   大概在2002年左右在公司的门户系统EIP,其中需要一个行政审批流程组件,当时是用PHP实现的数据库用了MySQL,程序功能是按领导的要求,领导说要实现什么功能我们就把什么功能实现好,当时也没什么深刻的感受,反正也没耗费多久就做出来了,感觉也没啥的,用用还比较好用就可以了。

   到了2008年,公司有一个几十万的ERP定制项目需要做,其中需要一个自由审批流程组件,那时候才意识到值钱的软件都需要审批流程组件,而且这个组件当时是由我来负责编写的,大概前后也写了1个月左右吧,又测试了1个月左右,才真正能用起来,而且当时还没能实现并行审批流程功能,一方面是经验不足,另一方面也是能力有限。

   今年是2010年了,又有一个B/S项目需要有审核流程,又耗费了2周时间把审批流程的底层数据库重新设计了一下,又耗费1周时间整体进行测试,终于把这个自由审批流程又重新整理一次,上了一个台阶,把上次没能实现的技术问题、审核时间限制、并行审核的技术问题解决好了,随着对日常工作管理上的要求的进步一加深,对工作环节上的审批的意义又有深入的意识了,管理软件的审批流程是太有必要了,审批流程也是管理软件的一个核心亮点了。

   2002年时,不知道这个审批流程管理组件有多少重要,也不知道其中的经济价值、客户的重视程度。

   2008年时,充分意识到了审批流程管理组件有多少作用,而且要耗费蛮久才能做出好用稳定的自己拿而且还会遇到技术难题、设计上的瓶颈。

   2010年时,把底层数据结构又重新设计一下、把底层代码又完善了一次,界面功能也进行了一次彻底的优化,组件用起来更流畅更舒服了。

 

   其实真正能重复利用的就是数据库设计PDM文件,这个也是业务领域建模,用这个设计不管是开发JAVA的项目,还是开发.NET的项目,都可以重复利用,有一定的参考价值的,从设计上也可以看出一个人的思路是否严谨?是否设计考虑得充分?是否有一定的行业经验等等,其实很多业务领域的建模都是值钱的,这才是软件开发中能沉淀下来的劳动成果积累之重要的方面之一。

    具体数据表效果如下【工作流当前审核状态】表

   具体数据表效果如下【工作流审核历史步骤记录】表

   不管是B/S系统也好,C/S系统也好,有些底层组件、所谓的商业逻辑组件是有很大的重复利用价值,这些代码里封装了很多业务逻辑,这些业务逻辑不管做什么系统,都跑不掉的,这些细节都需要实现一遍的,若这些代码写得比较严谨,有一定的重复利用的价值,这些商业逻辑代码积累越多,积累越严谨,越完善,将来可以赚大钱的机会就越多,因为等机会来了,很快就可以搞定了,因为编写这些商业逻辑往往会耗费几个月时间,一个月工资按1万计算,为了积累这些成熟的组件,至少都好烧掉几万元的成本,若采用了拿来主意,这几万元的开支就节省了。

   从头实现一遍所耗费的时间,往往比拿过来看懂,再改改的时间多很多,可能熟悉代码花费了1周,修改代码也花费了1周,总的时间成本虽然有2周,但是自己从头全部写好,可能需要2个月时间才能写好的,若不信,自己可以写写看,总是会发现很多细节没处理好,写来写去,调试来调试去1个月就不知不觉中过去了。

 

 

接下来,我们进入实战,以C/S的程序为例子,有需要时也可以做个B/S的审批流程例子,界面大致是一样的效果,因为都调用了相同的底层函数处理数据的,数据设计也会是相同的,不会因为B/S,数据设计不一样了,我们假设有这样的一个:自由工作流审批流程(假设请假流程):开发部主管(吉日嘎拉) - 人事主管(涂志刚) - 总经理(胡况明)

用户账户情况如下页面效果

 

首先我们需要启动这个审批流程,让一个单据进入审批流程环节,这里只是做了一个示意图,就是可以显示的是请假单,也可以是请假单的核心参数(当然可以是其他单据,不只限于请假单,还可以是入库单、出库单、付款单、借货单等等一大堆单据)。

 

网友问?
这里的表名   订单代码  为什么要手动输入呢?  有什么特别的好处吗?
Ψ吉日嘎拉:

这个是一个单据的 核心数据的意思,当然从数据库里读也可以的,这个是唯一识别一个单据用的
例如, 请假单,入库单等,都可以走审批流程的嘛,是我们的流程组件,需要知道 有这4个信息,才能进入审核流程里

网友问?

但是这几个让用户输入  有时候会让用户不知所措吧? 就是不知道输入什么?
Ψ吉日嘎拉:
你误会了,不是让用户输入,这个页面,应该是一个请假单页面(例如)程序只关心其中的4个参数,其他信息,就没显示了,可能这4个参数还是隐藏的

 

我们看看第一步审核流程的情况,先用吉日嘎拉账户登录系统,看看会是什么效果?

点待审批流程菜单,查看需要待审批的数据项

 

的确显示出了待审批数据了,我们把请假单递交给下一个审批环节

用下一个审批环节的用户进行登录

正好是我们需要审批的数据显示出来了,同时我们审批通过,可以选择最后又一步的审核环节。

这里是递交审批的效果图

我们再以最后一个审批环节的账户来登录系统

我们可以看到前面2步的审批详细情况,我们这步审核通过后,我们事先假设的3步自由审核流程也走完了。

 

   自由审批流组件,有3个比较关键的功能。

   1:当前需要审批的数据列表获取方法(可以按角色、按账户兼容的)

   2:查看审批流程历史记录(都谁什么时候审批的?有啥批示?)

   3:当起流程监控功能(都有哪些数据在待审核状态?)

   核心功能由2个组件组成

   1:进入审批流程组件。

   2:审批流程组件。

 

 

   自由审批流程组件虽然从严格意义上来讲,不能等同于工作流组件,甚至也不是正规的流程审核组件,但是还是蛮符合实际工作要求,因为不需要事先定义好严格的流程步骤等的定义,也不用定义什么严格的角色、各种审批流程等等,只要有最基础的用户数据,角色配置就可以跑起来了,相对而言是最低的配置要求,最灵活多变的审批流程了,更适合国内的中小企业的审核流程,特别是小公司的审核流程,绝对的。

 

   其实日常生活里,我们大多的审批流程,都是自己的顶头上司审核的,也不大用管是什么审核,大多数都转发到自己顶头上司审核一下,90%都不会有错的。顶多领导再转发给别人审核而已了,或者挨骂一下下,哈哈。

 

   写文章也累,居然从晚上8点多一直写到12点半才结束,得赶紧睡觉了否则会影响的明天的工作了,欢迎大家多批评交流,希望能跟大家多交流,一起提高。

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友