首页 > 范文大全 > 正文

一种基于二维数据表的审批工作流实现

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

【摘 要】为了使大多数系统中审批流程得以实现和便于维护,本文对工作流技术的深入研究,在设计的过程中结合相关数据库技术,通过对二维数据表设计来动态实现审批流程的配置、管理和使用。

【关键词】数据库技术;工作流;二维数据表;流程模型

1.工作流概述

工作流是一类能够完全或者部分自动执行的业务过程,它根据一系列过程规则,文档信息或任务能够在不同的执行者之间传递和执行。它是实现业务过程管理与控制的一项关键性技术。其要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。简单地说,工作流就是一系列相互衔接、自动进行的业务活动或任务。我们可以将整个业务过程看作是一条河,其中流过的河水就是工作流[1]。

2.审批工作流的过程模型

过程模型用来定义工作流的过程逻辑,包括组成工作流的所有活动以及活动之间的依赖关系。在日常的各项审批活动中,业务处理是按照用户所选择的固定流程进行流转,过程模型如图1。

图1 审批工作流过程模型图

3.审批工作流二维表的设计

通过对功能需求的分析,信息文件按照选择的流程进行流转审批,因此首先得考虑存储流程规则信息的二维数据表,每一个流程信息实体应该包括流程编号(FlInId,主键,数值类型)、名称(FlInName,字符型)、类别编号(FlClId,数值型)、版本(FlInVersion,数值型)、状态(FlInStat,字符型)等字段属性。FlInId 字段存储流程编号信息,作为主键设置,控制流程信息的唯一性。FlClId字段存储流程类别代码信息,考虑系统扩展性,用数字代码的形式进行存储,另设计存储类别信息的二维表,以便于使流程信息可进行多层次分类。FlInVersion字段存储流程版本信息,记录流程修改的次数。FlInState字段存储的流程状态信息,可设计为和停止两种状态。

每个流程按照固定的步骤进行流动,系统必须设计存储相应步骤信息的二维数据表,一个流程可拥有多个步骤,每一个步骤实体应包括步骤编号(AcInId,主键,数值型)、步骤名称(AcInName,字符型)、步骤排序号(AcInSortNo,数值型)和步骤所属的流程编号(FlInId,数值型)等字段属性,为了考虑有的步骤可以有多人处理,系统设计了步骤处理人的数据表,包括序号(AcUsId,主键,数值型),处理人代号(AcUsUserId,字符型)、步骤序号(AcInId,数值型)等字段属性。

当用户添加信息后,系统根据信息的类别选择了相应的流程,使用过程中要考虑信息流动的过程和流动的状态,以提示各个步骤处理人能操作自己需要处理的数据,因此系统设计了与信息相关的表,即任务表,主要用来存储本信息选用的流程、目前的处理的步骤、目前需要处理的用户等信息,每一个人物实体应包括任务序号(TaInId,主键,数值型),信息序号(ItInId,数值型),步骤序号(AcInId,数值型),处理人号(TaInDealUserId,字符型),任务状态(TaInState,字符型),任务版本(任务版本,字符型)等字段属性。

在用户进行审批操作后,应记录相应的任务处理记录,便于用户查看已处理的操作信息或进行撤销操作,因此系统设计了相应的任务操作记录表,每一个人物操作实体应包括任务记录序号(TaHiId,主键,数值型),信息序号(ItInId,数值型),步骤序号(AcInId,数值型),信息类型(ItStClId,数值型),签名数据(TaHiSignData,字符型),任务记录标志(TaHiFlag,字符型),任务记录备注(TaHiBz,字符型)等字段属性。

4.审批工作流核心功能实现

在前面数据库表的设计中,我们已经设计了4个表存储数据流实现的相关信息,通过这些表,可实现多种审批需求的业务。下面以财务报销审批业务为例,展示流程配置管理和信息流审批具体应用及其实现过程。

4.1流程配置管理实现

系统在流程管理模块实现流程的添加、删除、更新等维护工作。具体添加的实现过程是先定义流程信息对象,将界面的表单数据赋予对象的相关属性,通过对象的AdaByObject方法将其写入数据库并返回插入的主键值。再通过循环语句将表单中的步骤和处理人分别插入至相应的表中。主要的实现代码如下:

Dim oAFlowInfo As New AFlowInfo ‘定义流程实体对象

……

根据表单对oAFlowInfo进行赋值

……

For Each nItem As GridViewRow In gvPurview.Rows ‘获取流程访问权限

Dim nCbxChecked As New CheckBox

nCbxChecked = nItem.FindControl("cbxChecked")

……

Next

……

nRetrunFlInId = oAFlowInfo.AddByObject(oAFlowInfo) ‘根据AdaByObject方法将流程信息写入数据库

If nRetrunFlInId > 0 Then ‘大于0表示写入成功,则写入步骤信息

For Each nItem As GridViewRow In gvActorInfo.Rows

Dim oAActorInfo As New AActorInfo

……

nRetrunAcInId = oAActorInfo.AddByObject(oAActorInfo)

If nRetrunAcInId > 0 Then ‘大于0表示写入成功,则写入步骤处理人

Dim oActorUser As New AActorUser

……

oActorUser.AddByObject(oActorUser)

End If

Next

End If

4.2流程审批实现

在工作流的审批过程中,用户主要是通过修改TaInDealUserId字段的值来完成数据的传递操作,TaInDealUserId字段存储的是待处理用户的用户编号,用户登录系统后进入审核模块自动检测用户编号和数据的此字段值是否一致,如果一致表示则显示在待审批信息表中,等待用户的审批,用户审批后,系统根据既定流程修改TaInDealUserId的值。具体的实现过程是先获取当前步骤信息,并检测是否存在下一步骤,再根据结果向任务表写入相关数据完成审批过程。主要的实现代码如下:

……

oActorInfo = oActorInfo.GetToObject("FlInId=" & nFlInId_Present & " and AcInSortNo=" & nAcInSortNo_Present)‘获取当前的步骤实体信息

……

oActorInfo = oActorInfo.GetToObject("FlInId=" & nFlInId_Present & " and AcInSortNo=" & nAcInSortNo_Present + 1) ‘检测下一步骤实体信息

If Not oActorInfo Is Nothing Then ‘判断步骤实体信息是否存在

oTaskInfo.AcInSortNo=nAcInSortNo_Present + 1

oTaskInfo.TaInDealUserId=oAActorUser.AcUsUserId

Else

oTaskInfo.AcInSortNo=0

oTaskInfo.TaInDealUserId=""

end if

oTaskInfo.UpdateByObject(oTaskInfo)

……

Return "审批成功!"

【参考文献】

[1]刘志明.基于工作流技术的项目管理系统设计与实现[D].湖南:湖南大学教育技术学,2009.

[2]闫晓薇.基于数据库表示的工作流管理系统的设计与实现[J].科技资讯,2009(12).

[3]蔡戟,王泽兵,冯雁.基于数据库的工作流技术在电力物资管理系统中的实现[J].计算机工程与应用,2002,(03).