python审批系统开发_通用审批流程快速开发系统案例分享

公司组织机构是一个树形架构,先前新加盟公司时都是总部直接添加在某个子公司下,因审计需要,要求通过下面公司申请,逐个角色处理来完成新公司的开通,开发任务最后落到我这里,时间紧,任务重,先前也没接触多少审批流程的开发,好在我们的系统是基于通用权限管理系统的底层来做的开发,角色,权限控制已没什么问题,而且底层也集成有一个审批流程引擎组件,只是先前没多少人使用过,通过与吉日嘎拉老师的沟通,大致了解了这个组件的思想,就像其它系统调用权限功能一样,我只需要完成业务功能的开发,实现审批流的接口即可,经过将近3周的开发,终于完成了新公司创建的审批流程。下面整理一下利用通用审批流程组件进行审批流开发的一些经验:

1、需求分析

根据全国省份划分,每个省份设有专人审批下级公司申请创建公司的单据,其中某些省份需要经过片区经理再审核,如下图

注:其中的"网点管理员"是由系统默认的各个公司的在所有系统中具有最大权限的人员,由其提交新开其下级公司的申请,片区文员是各个省份的负责审批该省所有公司提交新开公司的申请单据的人员。

从图上可以看到,新开一个公司根据告诉管理员所在省份的不同会有两个流程中的其中一个处理(流程入口条件),因此我们需要创建两个审批流。

在审核过程中,审核状态有待审、通过、退回、完成四种状态,这个是很好理解的。

2、创建审批流程

通过分析流程,在通用审批组件中创建对应的流程:两个审批流程。

已经创建好的审批流程,打开其中一个看看,如下图:

下图是其中一个流程的定义,可以看到流程与表、程序集、类之间的关系,在具体实现时要继承流程处理接口实现

审核步骤是需要先定义的:

定义审核步骤

审核步骤先创建好,创建审核流程时选择其中的几个审核步骤构成一个流程,创建流程过程中,可设置在流程处理过程中可编辑的字段,这一块我没使用,字段控制我直接在权限中处理了。

3、创建角色

根据上面的流程,我在系统中创建了对应的角色,因为直接是在通用权限系统中开发的,角色配置起来就非常容易了。

在子系统中创建的用于流程审批的角色

4、设置角色人员

上面的角色创建好以后,就需要向角色中添加人员了,根据提供的人员配置到各个角色中,操作也是很简单的

选中角色,点击成员,向角色中添加成员即可。

5、配置菜单权限

通过对整个处理流程的分析,定义了以上与审批流程有关系的权限菜单。注意其中将全部要审核的字段也作为菜单项控制了,这样在分配角色权限时处理方便,每个角色能够修改哪些字段,其中菜单的编号也进行了一些处理,按照实体的名字来命名,这样前后台判断权限时也很方便。

6、配置角色权限

角色及菜单创建完毕后,可以配置各个角色具有的菜单权限了,如下截图:

如上图,是配置片区审核具有的菜单权限,这样片区审核这个角色里的人进入系统就有了对应的权限,只需勾选上要分配的权限菜单即可。

===================================

至此,审批流程、角色、菜单、角色人员,角色菜单权限都配置完毕了,接下来开始具体审批业务功能的开发,可以看到,有了这个通用权限及审批流程的底层管理系统,我们只需关注业务功能即可。

===================================

7、流程处理前端

上图是公司管理员进入申请创建新公司的界面,可以看到,在界面上控制了哪些项目是必填的,哪些项目是没有权限填写的。填写完毕,可以在“申请进度查询”中看到流程进入哪个阶段。

上图是其中一个角色进入审核界面的显示内容,点击审核,就可以处理:通过或者退回

点击上面的提交或者退回,就可以对这个审批单据进行处理了

8、审批流程接口实现

底层中处理工作流的业务类

上图是开始申请的处理流程:将申请单据保存起来,启动审批流程,这是在数据库中存储的结果如下,可以看到当前申请的流程要走的步骤:按ACTIVITYID的顺序。

审批过程中的拒绝操作:不再保存修改记录,退回到上一步。

审批过程中通过审批的处理:可以保存当前人员对单据的修改,同时提交到下一步来处理,如果是最后一步,审核通过时,当前审核单据的状态将变为完成。

可以看到,在处理审批流程时,后台审核部分只需要调用底层接口即可,开发人员只需关注业务功能开发,下面把主要的底层接口提供出来,供参考:

8、部分后台代码

权限判断,实现前后端输入项的验证,前端如果有权限,对应的文本框处于可编辑状态,否则不可编辑,后端也会再次验证,有权限必须填写的都需要经过后端再次验证,这样安全问题就可以解决了。

usingSystem;usingSystem.Collections.Generic;usingSystem.Collections.Specialized;usingSystem.Linq;usingSystem.Net;usingSystem.Text;usingSystem.Web;usingSystem.Web.Script.Serialization;namespaceInfrastructure

{usingDotNet.Business;usingDotNet.Model;usingDotNet.Utilities;///

///

///修改纪录///

///2016-03-02

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值