首页 > 范文大全 > 正文

基于工作流的请假审批系统设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于工作流的请假审批系统设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:现代企业的业务分配范围很广泛,各部门之间的统一和协调工作需要大量文档,企业工作效率降低。工作流的产生,为此类问题提供了解决的平台。在此提出了基于工作流技术的请假审批方法,讨论了基于工作流的请假审批系统的设计过程,包括需求分析、系统功能模块设计以及工作流引擎的设计。在开发过程中用Work flow作为工作流引擎,SQL Server 2005作为后台数据库,系统开发环境选用Visual Studio 2008。

关键词:请假审批; 系统设计; 工作流引擎; SQL Server 2005

中图分类号:TN91934; TP311 文献标识码:A 文章编号:1004373X(2012)10001803

基金项目:陕西省教育厅专项科研项目(2010JK595)0 引 言

随着企业社会生产方式的不断深化,工作的流程化也随之而来。但是现代企业的业务范围分布广泛,这样各部门之间为了统一和协调工作,需要大量的文档工作,降低了企业的工作效率,这时办公自动化的需求显得更加迫切。而工作流的产生为此类问题提供了一个解决平台。工作流就是业务过程的部分或整体在计算机应用环境下的自动化,主要解决的是在多个参与者之间按照某种预定的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标[12]。系统结合单位的实际工作情况,应用工作流技术来实现无纸化请假,提供效率,降低成本。文章以学生请假审批系统的详细设计与实现为背景,介绍了工作流技术的实现方法。

1 系统需求分析

本系统主要是做一个基于工作流的软件案例实训系统。该软件案例实训系统主要有3部分需求:课程教学模块、项目案例教学模块、学生请假模块。通过课程教学模块,可以让用户查看到提供与教学计划相应的课程,还可以学习到与软件工程有关的知识与技能;在项目案例教学这个模块,主要由教师来负责项目案例教学器的运转,教师通过教学器可以自定义项目流程,项目案例等,用户登录该系统之后可以查看到其中的项目案例;在学生请假这个模块主要是方便用户请假,用户登录系统后,在网页上填写自己的请假单,就可以让上级看到请假人的申请,并对该申请做出相应的处理。该系统的实现主要是为了提高教学质量,同时也为学校的管理工作提供方便。鉴于篇幅,本文中只讨论请假审批子系统的设计与实现过程。

2 系统功能模块设计

请假审批,需要请假的人先在网页上填写请假单,该申请会按照流程定义自动转向上级审批;请假审批模块主要用于任课老师对学生添加的请假申请单进行同意或驳回,同意则转到系主任审批,驳回则直接结束;院长可以对系主任审批过的请假单再次进行审批,同意或驳回,同意则请假成功,否则请假失败,请假流程结束;而请假统计主要是系统自动按条件(时间或用户)统计用户的请假天数等,其系统功能模块图如图1所示。

图1 请假审批系统功能模块图3 数据库设计

关系数据库物理结构设计的任务包括:确定数据库文件的名称及其所含字段的名称、数据类型和宽度。确定各数据库文件所需建立的索引,在什么字段上建立索引等。

根据该系统所需实现的功能模块设计,系统所需要的数据库应该包括用户信息表、请假单信息表、菜单信息表、角色信息表。数据库主要用于保存和管理个人资料和信息数据。

用户信息表 包括用户的姓名、性别、登录名、登录密码、备注等基本信息,它的主键是用户ID,外键是上级ID和角色ID。

请假单信息表 该表是学生填写请假单时要填写的一些基本信息,包括请假单ID、用户ID、起始时间、终止时间、当前状态、请假类型、请假事由等信息。它的主键是请假单ID,外键是用户ID。

菜单信息表 该表主要记录菜单的名称,包括菜单ID、上级菜单ID、菜单名称、URL和描述等信息。它的主键是菜单ID,外键是上级菜单ID。

角色信息表 该表主要记录每个角色的名称以及分配的相应的角色。

4 系统功能的具体实现

4.1 工作流的流程设计与实现

4.1.1 流程定义

Windows Workflow Foundation支持基本的工作流模式:顺序工作流(Sequential)、状态机工作流(State Machine)、数据岛工作流(DataDriven)。这里主要介绍顺序工作流和状态机的工作流。

顺序工作流提供了一系列有组织的步骤,一般情况下,步骤是逐一执行的。可能有的步骤需要等待某些时间的发生才可以继续执行,但通常情况下顺序工作流一般用于无需人工干预的操作。而状态机工作流提供了一系列的状态,工作流从初始状态开始,到终止状态结束。2个状态之间定义行为进行过渡。通常情况下,状态机工作流对事件做出反应,事件的发生将会使状态发生改变[3]。

状态机工作流的好处在于它可以定义状态,定义工作流如何从一个状态到另外一个状态。当外面的事件发生时,状态机的工作流可以移到不同的状态。外部行为可以是宿主程序引发工作流的内部事件,也可以是宿主程序编程实现的下一个状态,也可以利用SetState Activity移动到下一个状态,该工作流适用于该请假系统[4]。

学生请假流程是学生提交申请请假表单信息(请假类型、事由、请假时间等)。如果请假在3天之内,只需要任课教师审批,如果请假天数在3天以上5天之内,则需任课老师和系主任审批;如果请假天数在5天以上,则需要任课老师、系主任、院长都审批。这个请假流程有些过程需要暂时中止,并等待其他过程的开始,需要与人交互来完成,所以是状态机的工作流。

4.1.2 流程的启动

流程定义完成后,在系统启动(网站第一次被访问)时自动启动工作流并加载持久化到数据库中的工作流实例,主要代码如下:

//加载持久化服务

SqlWorkflowPersistenceService sqlWorkflowPersistenceService = new SqlWorkflowPersistenceService(XGD.QingJia.Entity.DBAccess.ConnectiongString);