简单实用审批流程组件 - 提供源码
2013-05-14 16:53 通用C#系统架构 阅读(13988) 评论(6) 编辑 收藏 举报给某制药厂提供审批流程组件、遇到一些客户的实际需求如下:
在实际使用中,特别是资金的审批,企业会根据金额的大小走不同的审批流,比如100万以内,财务总监审批就可以,大于100万需要总经理审批。
而且在审批流程的各个步骤中可能也会有根据某些条件进入某审批环节,也需要加入口条件。
1)在添加审批流程窗体中增加字段,用于输入入口条件,比如输入Cost > 1000000,表示:如果单据中的Cost字段数值大于1000000,就进入该审批流,否则不进入该审批流。其使用场景:给某个窗体配置两个审批流,再设置不同的入口条件,在送审时系统根据单据中的数据,判断进哪个审批流。
2)在流程定义步骤中也需要添加入口条件,输入某一条件后,自动流转进该步骤,否则自动跳过。
一个功能可以设置多个审批流,但是一笔单据最多只能对应一个审批流实例,也就是说,进不同的审批流程,不是在审批流程中是否进某一步审批。例如,我给窗体FrmRequestAnAccount定义两个审批流,也是通过入口条件区分。举个简单的例子,比如发货申请单的审批;
对于发货公司的管理制度上有两种审批,一种是普通客户的发货申请,一种是VIP客户的发货申请。VIP的判断依据:在客户基本信息表中字段IsVip = 1表示是Vip客户。
普通客户的发货申请的审批流程:
审批流的入口条件:IsVip <> 1
审批节点
1:销售部经理审批。
2:总金额超过5000,需要销售部总监审批。
3:商品价格超过限价需要总经理审批。
VIP客户的发货申请审批流程:
审批流入口条件:IsVip = 1
审批节点
1:VIP部经理审批。
2:总金额超过10000,需要VIP部总监审批。
3:商品价格超过限价需要总经理审批。
两个审批流,但是对应的同一个功能,终极目标是,审批流和功能没有任何关系,随便给任何功能想配审批流就配,不需要修改功能代码,只需要在审批流定义中跟功能建立关系即可。
改进1:可以定义相同编号的审批流程,可以增加入口条件,不同条件的数据按不同的流程进行流转,例如发货申请就可以设置多种流程审核步骤,然后程序自动按设置条件进行流转。
改进2:每个流程审核步骤都可以设置入口条件、结束条件,按用户的设置自动过滤需要走的审核流程。
通用权限管理系统组件 V3.9 版本里审批流程组件的数据库变化如下,流程定义表增加了流程入口条件,流程步骤表定义了入口条件、结束条件字段。
改进了这个功能后,就可以满足客户目前提出的对简易审批流程的需要了。虽然可以满足更复杂的需求,图形化的流转等等,但是目前定位就是对简易流程进行简单高效的审核,安装的组件少,程序调用简单,数据库表结构简单,维护调试简单为目的,满足80%的日常审核单据的需要。
自己的程序中调用的方法,可以参考 http://www.cnblogs.com/jirigala/archive/2013/04/30/3052408.html 文件的底部代码部分。