基于工作流引擎的系统框架设计开发

基于工作流引擎的系统框架设计开发[java毕业论文下载]

基于工作流引擎的系统框架设计开发

——工作流引擎子系统

摘 要

工作流就是一系列相互衔接、自动进行的业务活动或任务。工作流引擎是工作流管理系统的核心,它的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。

论文主要讲述了工作流引擎的基本功能及设计方法,介绍工作流引擎的基本原理,具体分析了工作流引擎所包含的内容,详细介绍了相关的信息模型和控制模型。系统采用关系结构的理念来设计工作流引擎,给出了用Microsoft Visual Studio 2005和Microsoft SQL Server2000实现系统的方法。论文中利用本工作流引擎构建系统能适应大多数业务流程的扭转,大大缩短常见信息系统的项目开发周期,提高效率。

 

关键词:工作流引擎;关键业务;关系


The design of information system frame based on workflow engine

---- The subsystem of workflow engine

Abstract

Workflow is a series of interlocking, automatic business activities or tasks. Workflow engine is the work flow management system in the core, and its main function is to define, implement and manage work flow through the support of computer technology as well as co-ordinate work flow process of working implementation and groups of information between members of interaction.

The thesis has mainly described basic functions and design of the workflow engine, introduced the basic theories, and specifically analyzed the content included in the work flow and the details of the relevant information model and control model. The idea of relation structure has been used to design this system and the method to achieve the system function with Microsoft Visual Studio 2005 and Microsoft SQL Server2000 has been given out. Constructing system with the workflow engine can adapt to the majority of the business process reversing that significantly reduce the development cycle of the common information system and improve efficiency.

Key words: Workflow engine; Critical business; Relationship


  

论文总页数:21页

1 引言 1

2 开发概述 1

2.1 Visual C# 语言概述 1

2.2 工作流引擎概述 2

2.3 工作流引擎现状分析 3

3 需求分析 4

3.1 用户需求 4

3.2 工作流引擎的分析 4

3.3 业务流程 5

3.4 开发运行环境 6

4 工作流引擎的设计 6

4.1 模块的划分 6

4.2 功能描述 6

4.3 工作流引擎的详细设计 7

4.4 数据库结构的设计 9

5 工作流引擎的实现 12

5.1 状态图管理的设计 12

5.1.1 功能描述 12

5.1.2 界面设计 12

5.1.3 工作流程和部分代码 13

5.2 任务管理窗体 14

5.2.1 功能描述 14

5.2.2 界面设计 14

5.2.3 工作流程和部分代码 15

5.3 任务指派窗体 16

5.3.1 功能描述 16

5.3.2 界面设计 16

5.3.3 工作流程和部分代码 17

6 测试结果 18

     18

参考文献 18

     20

     21

 

 

随着信息技术的高速发展,越来越多的企业需要建设各种各样的信息系统,为每个系统重复构建框架是一种浪费。这些系统的共性是基于分布式网络环境下的多级别、多用户的数据库系统,每个级别、用户可能拥有不同的权限,需要对不同的业务进行操作,各个业务之间的耦合也不尽相同。并且企业或者部门的计算机应用已不仅仅停留在诸如文档处理、公文流转以及信息发布等这些简单的业务层面上。越来越多的企业或部门要求将信息技术的应用扩展到关键业务中。例如,产品的设计和制造过程,银行的借贷和划账业务,还有物资部门的采购、审批和出入库业务等等,都属于相应企业或部门的关键业务。

《基于工作流引擎的系统框架设计开发——工作流引擎子系统》是采用Visual C#以及Microsoft SQL Server2000来开发的。系统主要由四个模块组成,他们分别是:状态图管理模块、任务列表模块、任务指派模块、任务提交模块。本系统主要包括了一下四个功能:状态图管理:对任务流程进行添加、删除、修改。任务列表:可以查看任务状态、未完成任务列表及已完成任务列表。任务指派:指派人员去完成任务。任务提交:完成任务后,进行提交,激活下一个任务。

由于信息技术的发展和日趋激烈的商业竞争,人们不再满足于独立、零散的办公自动化和计算机应用,而是需要综合的、集成化的解决方案。作为一种对常规性事务进行管理、集成的技术,工作流管理系统的出现是必然的。它可以改进和优化业务流程,提高业务工作效率;实现更好的业务过程控制,提高顾客服务质量;提高业务流程的柔性等。

Visual C#(读作“C sharp”)是 Visual Studio .NET 中引入的一种新的编程语言。C# 从 C 和 C++ 演变而来,是一种简单、现代、类型安全和面向对象的语言。设计 C# 是为了建立运行于 .NET 平台上的、范围广泛的企业级应用程序。用 Visual C# 编写的代码被编译为托管代码,这意味着它将受益于公共语言运行库的服务。这些服务包括:语言互操作性、垃圾回收、增强的安全性以及改进的版本支持。 在 Visual Studio .NET 中,Visual C# 完全得到项目模板、设计器、属性页、代码助理、对象模型和其他开发环境功能的支持。Visual C# 编程的库是 .NET Framework。

C#语言是一门简单,现代,优雅,面向对象,类型安全,平台独立的一门新型组件编程语言。其语法风格源自C/C++家族,融合了Visual Basic的高效和C/C++强大。其优雅的语法风格,创新的语言特性,因而深受世界各地程序员的好评和喜爱。C#起源于C语言家族,因此,C,C++和Java的程序员能很快熟悉它。C#获得了ECMA和ISO/IEC的国际标准认证,它们分别是ECMA-334标准和ISO/IEC 23270标准。Microsoft用于.NET框架的C#编译器就是根据这两个标准实现的。

工作流技术起源于二十世纪七十年代中期办公自动化领域的研究,由于当时计算机尚未普及,网络技术水平还很低以及理论基础匮乏,这项新技术并未取得成功。1983年至1985年间,在图像处理领域和电子邮件领域出现了早期的含有工作流特征的商用系统。

进入九十年代以后,随着个人计算机、网络技术的普及和推广,以及信息化建设的日益完善,使得工作流技术的研究与开发进入了一个新的热潮。1993年,国际工作流管理联盟(WfMC)的成立标志着工作流技术开始进入相对成熟的阶段。为了实现不同工作流产品之间的互操作,WfMC在工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准。工作流管理联盟给出的工作流定义是:工作流是指整个或部分经营过程在计算机支持下的全自动或半自动化。在应用中可以把由计算机软件系统(工作流管理系统)控制其执行的过程都称为工作流。在工作流参考模型中,工作流引擎是工作流管理系统的核心。工作流引擎是为工作流管理系统在定义提供支持、同时在运行时提供解释和执行服务的一组数据模型和软件。

工作流引擎(Workflow Engine, WfE)的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流引擎来调度、实现。作为工作流的核心应能提供以下几个方面的功能支持:解释过程定义;创建过程实例并控制其执行;调度各项活动;为用户工作表添加工作项;通过应用程序接口(API)调用应用程序;提供监督和管理功能等。

国际工作流管理联盟对工作流的过程模型提出了8种基本单元和6种控制结构。

8种基本单元分别是:开始活动、结束活动、原子活动、子过程、活动块、或节点、与节点、弧。

6种控制结构分别是:顺序结构、与分叉、与合并、或分叉、或合并、重复。

对于8种基本单元中,开始活动和结束活动本身没有实际意义,只是用来标识过程的开始和结束;子过程和活动块也可以分解为原子活动和各种控制结构的组合。这样下来,8种基本活动单元可以提炼出核心的是原子活动节点、与节点、或节点和弧四个基本单元。而6种控制结构,则可以看成是原子活动节点、与节点、或节点和弧的各种组合关系。进一步分析可以得出:6种控制结构是两个原子活动节点之间,由与节点、或节点和弧构成的控制单元。

所以,可以将原子活动单元单独提出来,我们把它称之为活动节点(Activity),将原子活动之间的各种连接方式(与节点、或节点和弧的组合)称之为基于计算机算法控制的由计算机自主完成的控制节点(ControlNode)。

近一步,我们可以在两个相邻的控制节点之间插入“哑活动”节点(是虚拟的,不做任何动作,但在计算机中创建活动实例)。这样任何一个工作流图就可以分解为活动节点和控制节点的前后连接。

这样,在一个流程实例的所有节点的状态图中,活动节点(包括“哑活动”节点)就是控制节点的流转算法的输入条件,控制节点查询状态图,与预制条件对比,就可以激活它的后续节点,从而达到工作流流转。

综上所述,它构建了一般信息系统的框架,在传统的关系数据库基础之上定义工作流数据模型;它利用DBMS内嵌的编程语言来实现工作流引擎的控制逻辑;开发者可以在此框架的基础上搭建自己的具有工作流特性的信息系统。基于工作流引擎的信息系统框架的适用对象并非应用系统的最终用户,而是利用专用开发工具构造相应应用系统的专业开发人员。

近几年国家非常重视企业的信息化建设,在电子商务(EC),企业资源计划(ERP), 产品数据管理(PDM),客户关系管理(CRM),计算机集成制造(CIMS)等领域投入了大量的人力和物力,力图尽快达到国际先进水平。然而,电子商务(EC),企业资源计划(ERP),产品数据管理(PDM),客户关系管理(CRM),计算机集成制造(CIMS),办公自动化(OA)等信息系统的发展又都离不开工作流技术的支持,它是企业实现管理信息化和技术信息化的关键技术。我国政府充分认识到工作流技术的重要性。本文针对目前国内企业信息化过程中,最重要的两个领域(产品数据管理,企业资源计划)研究工作流管理功能建模、工作流安全、工作流实例监控、以及工作流与PDM,ERP 系统的集成应用等问题。

随着社会生产的流程化,工作流(Workflow)起着越来越重要的作业,工作流管理系统的核心是工作流引擎。对于企业来说,其生产经营活动就是由各种各样业务流程交织在一起组成的。然而,在企业管理中,许多流程在日常操作过程中已被习惯,而不被人们所重视,更不能被有效的管理起来。另外,客户的需求瞬息万变,而产品的生命周期也是在不断缩短,技术在不断创新。企业要在这样一个竞争和变换的外部环境中求得生存,就必须要有随需而变的能力,不断地调整和优化自身的各种业务流程,对流程进行重构和再造。

当前工作流管理系统在全国范围尤其是大中城市的各种企业都得到广泛应用。随着企业的不断发展,充分利用电脑的先进管理方式,将企业管理推向“无纸化”、“现代化”已经成了解决当前企业管理问题的当务之急。

总结:先说明工作流管理系统的对当今企业的重要性,然后再说明工作流管理系统的核心是工作流引擎,最后分析目前我国企业管理的现状,更体现出有一套完善的工作流引擎系统对企业管理的重要性。

  • 用户需求

用户通过工作流管理系统可以更便捷的进行业务管理,而工作流引擎是工作流管理系统的核心部分,所以有必要对工作流引擎进行设计。用户需要通过工作流系统进行任务流程的定制,包括添加、删除、修改流程,并且可以直观的查看出任务的状态,可以通过任务列表察看未完成任务和已完成任务,可以进行任务指派,任务指派需要确认指派的基准和群体。用户在完成任务后,需要提交任务。

  • 工作流引擎的分析

我们把基于工作流引擎的信息系统框架定义为:数据模型和控制模型。其中基于工作流引擎信息系统框架的数据模型又分为框架模型、机构模型和信息模型三类。控制模型将信息模型、机构摩型和框架模型有机的结合在一起,它根据其中定义的业务规则来流转业务流程,控制模型是工作引擎的控制中心。图1是基于工作引擎的信息系统通用框架的结构图。

 

图1工作引擎的信息系统通用框架的结构图 

其中调度中心接受从个性化界面(外部接口)发送过来流程控制的请求(如业务初始化、获取任务以及结束任务等),根据不同的请求类型调用相应的处理模块完成与本次请求相关的操作并将结果返回。该操作是基于DBMS的并发机制和锁机制来实现工作流引擎的控制模型,不需要诸如请求队列等形式的数据结构。从而实现了多个外部请求之间的独立性。调度中心在收到活动节点状态变化触发之后,根据其后继控制节点的类型,调用不同的算法,计算并设置控制节点后继节点的状态,来生成状态图。所涉及到状态图中活动节点的各种状态,他们之间的转换关系见图2。

 

图2状态转换图

任务管理主要根据调度中心的指示完成诸如任务创建、任务状态的转换以及相关数据的维护等工作。每次“结束任务”的外部请求将触发调度中心调用“任务管理”为后继活动(如果存在的话)创建新的实例;同时,其他不同的外部请求也将触发“任务管理”实施任务状态的切换。

任务指派处理只是针对常规交互活动活动,通常情况下,在任务状态由“睡眠状态”切换到“就绪状态”过程中完成任务的指派工作,即处于就绪状态的任务在通常情况下都确定了其执行者。任务指派过程首先根据任务指派基准确定可以执行此任务的群体人员,通常情况下这是一个包含多个人员的集合;然后根据任务指派方法确定由这个群体中的哪些个体来执行任务,执行任务的个体标识记录在相应任务记录的UserID字段中。

任务完成过后,需要将任务提交给调度中心,任务由“执行状态”切换到“处理结束通过状态”或“处理结束未通过状态”,同时激活下一个任务。

l 管理员或者超级用户定制工作流程,详见图3。

 

图3状态图管理流程图

l 管理员或者超级用户进行任务指派,详见图4。

 

图4任务指派流程图 

l 个人、队列或者团队通过查看任务列表了解任务。

l 完成任务后提交。

l 执行下一个任务。

安装此系统所需的基本软、硬件环境为:

l Windows98 或WindowsNT/2000/XP。

l Microsoft Visual Studio 2005。

l Microsoft SQL Server2000数据库。

l 512M以上内存。

l 5G以上可用硬盘空间。

l VGA显示器。

本程序在Windows XP操作系统下,以Microsoft Visual Studio 2005为前台开发工具,用Microsoft SQL Server2000为后台数据库开发实现的。

总结:以一个某省电信部门的物流信息系统为分析对象,确定该部门的组织结构和业务流程后最后确定工作流引擎系统应该具备的功能,以确定系统的主要模块,也简单介绍了该系统的开发环境和运行条件。

通过对用户需求调研并分析,确定系统应具备的功能,所需模块包括:状态图管理,任务管理,任务指派,任务提交。

这个系统主要涉及到状态图管理、任务管理、任务指派、任务提交。

状态图管理:包括添加、删除、修改流程。对流程进行控制,包括无条件转移、与分支控制、与合并控制、或分支控制、或合并控制、投票合并控制。查看任务的状态,包括了睡眠状态、就绪状态、执行状态、完成通过状态以及完成未通过状态,不同的任务状态显示为不同的颜色。

任务管理:从数据库中读取出任务列表,其中包括未完成任务和已完成任务,任务列表中包括了任务建立的时间,预计完成任务的时间,完成任务人员,任务完成时间。同时可以添加新任务。

任务指派:包括等待指派的任务,任务指派的基准以及任务指派的人群。其中任务指派的基准包括基于部门进行任务指派、基于团队进行任务指派、基于角色进行任务指派、基于自定义的方式进行任务指派。任务指派的人群包括将任务分配指定的所有人员,将任务分配给指定群体中的工作量最少的人员,将任务队列中最早创建的任务分配给相应群体中最先提出执行任务请求的个体,基于优先数分配。

任务提交:任务结束后提交系统。

根据工作流引擎的工作流程,综合上述的各功能模块,设计出的系统模块图如图5所示:

 

图5系统模块图

状态图管理如图6:

 

图6状态图管理

用户通过对活动节点进行操作,主要操作动作有以下表1所示:

表1控制节点类型

控制类型名

中文名

说明

DIRECT

无条件转移

不做任何动作,直接激活下一个节点。

AND_BRANCH

与分支控制

流经此处的任务将进行与分支,通过查找TaskStatus表来决定下一动作。

AND_MERGE

与合并控制

流经此处的任务将进行与合并同步,通过查找TaskStatus表来决定下一动作。

OR_BRANCH

或分支控制

流经此处的任务将进行或分支,通过查找TaskStatus表来决定下一动作。

OR_MERGE

或合并控制

流经此处的任务将进行或合并同步,通过查找TaskStatus表来决定下一动作。

VOTE_MERGE

投票合并控制

通过查找TaskStatus表来决定投票结果。

上面所定义的6种控制类型的节点,若不能满足业务要求,可以自定义其他的控制节点类型。

一个流程实例产生之时一并产生所有活动节点的初始状态,生成以后则由控制节点来动态修改其状态。任务状态主要有6种:睡眠状态、就绪状态、执行状态、完成通过状态以及完成未通过状态。睡眠状态:流程实例创建时统一设置所有活动节点为该状态,等待唤醒。就绪状态:前趋控制节点将活动唤醒,等待人工处理。执行状态:表示正在进行人工处理,等待处理结果。完成通过状态:表示人工处理结束,移交给控制节点继续下一步处理。完成未通过状态:表示人工处理结束,处理意见为“否决”,同时移交给控制节点继续下一步处理。

任务列表用于记录那些已经创建但尚未完成的任务以及已完成的任务,它们之间用CompletionFlag标记。

任务指派是指依照某种规则将任务分配给具体人员来执行。只有常规交互活动才涉及到任务指派的问题;其他活动要么在前台不具备实际的应用逻辑,要么由工作流引擎自动调用,因此与任务指派无关。任务指派的基准是:基于部门进行任务指派、基于团队进行任务指派、基于角色进行任务指派、基于自定义的方式进行任务指派。任务指派的基准确定以后,再确定执行任务的群体,具体指派到哪些实际人员还取决于任务指派方法。指派方法有四种:ALL:表示任务将分配给由BasedOn指定的群体中的所有人员。LEAST_WORKING_LIST:表示任务将分配给指定群体中的工作量最少的人员,工作量的多少可以通过ToDoTaskList的统计数据得到。FCFA:表示先来先分配, 即将任务队列中最早创建的任务分配给相应群体中最先提出执行任务请求的个体,任务的创建时间由DateCreated指示。PRIORITY:表示基于优先数分配, 只适合于ROLE_BASED任务指派基准。在表UserInRole中有个字段PriorityNo用于指定相应人员的优先级。用户也可以根据具体需要来添加新的任务指派方法。

根据前面的模块功能设计,系统所需要的数据库应包括“活动节点表”,“业务过程表”,“控制节点表”,“任务指派规则表”,“任务状态表”,“任务列表”等,各部分各自作为一个表存在。

具体设计如下:

1.活动节点表

用于存放活动节点信息,具体设计如表2所示:

表2 活动节点表

字段名

数据类型

说明

ActID

Int

活动编号

ProcID

Int

业务编号

ActName

Varchar(20)

活动名称

ActType

Varchar(20)

活动类型

TimeAllowed

Datatime

接受时间

PreCtrNodelist

varchar(20)

前面的控制结点表

NextCtrNodelist

varchar(20)

后面的控制结点表

 

2.业务过程表

用于存放业务过程,具体设计如表3所示:

表3业务过程表

字段名

数据类型

说明

ProcID

Int

业务编号

ProcName

varchar(20)

业务名称

ProcDesc

varchar(20)

 

 

3.控制节点表

用于存放控制节点,具体设计如表4所示:

表4 控制节点表

字段名

数据类型

说明

CtrNodeID

Int

控制节点编号

ActID

Int

活动编号

ProcID

Int

项目编号

CtrNodeName

varchar(20)

控制节点名

CtrNodeType

Varchar(20)

控制节点类型

CtrNodeDesc

varchar(20)

 

PreActNodelist

varchar(20)

前次的活动结点目录

NextActNodelist

varchar(20)

下次的活动结点目录

ExecCtrFunc

varchar(20)

实行的控制关系

PassedPercentage

float

通过的百分率

Parameterlist

varchar(20)

参数目录

 

4.任务指派规则表

用于存放任务指派规则,具体设计如表5所示:

表5 任务指派规则表

字段名

数据类型

说明

TeamID

Int

团队编号

DeptID

Int

部门编号

ActID

Int

活动编号

BasedON

varchar(20)

任务指派的基准

Method

Varchar(20)

任务指派的群体

ExeFuncID

Int

可执行的关系编号

 

5.任务状态表

用于存放任务状态,具体设计如表6所示:

表6 任务状态表

字段名

数据类型

说明

SerialNo

Int

流水号

TaskID

Int

任务编号

ActID

Int

活动编号

ProcID

Int

业务编号

TaskStatus

varchar(20)

任务状态

EntityID

Int

实体编号

 

6. 任务列表

用于存放为完成任务和已完成任务,具体设计如表7所示:

表7 任务列表

字段名

数据类型

说明

SerialNo

Int

流水号

TaskID

Int

任务编号

EntityID

Int

实体编号

UserID

Int

用户号

TaskStatus

varchar(20)

任务状态

DateCreated

Datatime

创建时间

DateAccepted

Datatime

开始执行时间

DateCompleted

Datatime

完成时间

CompletionFlag

Int

任务的状态

 

数据库关系图如图7所示:

 

图7数据库关系图

总结: 对整个工作六引擎系统的功能模快的详细设计和所运用的Microsoft SQL Server2000数据库表的详细介绍。

授衔做了个登陆界面,以方便测试用,然后添加了一个窗体,使用了一个tabControl控件,将tabPage1、tabPage2、tabPage3、tabPage4、tabPage5分别命名为:公司简介、状态图管理、任务管理、任务指派、提交任务。其中状态图管理、任务管理、任务指派是工作流引擎的核心部分,状态图管理中主要完成的是任务的定制,包括的功能有添加、删除、合并和分支,可以直接察看任务的状态。任务管理部分主要完成的是对任务的添加、删除,同时可以查看任务列表。任务指派部分主要完成的是对指派的基准和指派的群体进行确定。下面我们将主要对状态图管理、任务管理、任务指派进行介绍。

这个窗体主要用来定制工作流程和察看任务状态,包括添加流程,删除流程,流程合并,流程拆分,状态统计以及详细状态显示。

在这个窗体上用了4个ComboBox控件,6个GroupBox控件,17个label控件,5个Button控件,1个DataGridView控件,1个TextBox控件,1个panel控件。添加完毕后的窗体运行后如图8所示:

 

图8 状态图管理页面截图

基于工作流引擎的系统框架设计开发[点击下载]

如需要全部源码,联系QQ:2812491287如需要全部源码,联系QQ:2812491287

评论