工作流系统的设计与实现

时间:2022-10-21 01:51:22

工作流系统的设计与实现

摘要:工作流技术在企业级应用开发中越来越受到重视,业界的工作流主要遵循两个标准:WFMC和BPEL。BPEL标准是由IBM、Microsoft等公司联合的标准,其中微软的Windows Workflow Foundation工作流产品给出一种设计方案。

关键词:工作流;工作流管理系统;计算模型

工作流就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间利用计算机,按某种预定规则自动传递文档、信息或者任务。

工作流管理系统的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现,主要组成部分包括:

过程定义工具

过程定义

工作流执行子系统和工作流引擎

工作流控制数据

工作流相关数据

应用程序和应用数据

工作表和工作表处理程序

业界的工作流主要遵循两个标准:WFMC和BPEL。BPEL标准是由IBM、Microsoft等公司联合的标准,他们的工作流产品如IBM Lotus Workflow、Microsoft Windows Workflow Foundation。

对于工作流系统的设计,一个工作流管理系统通常包含3个不同层次的工作流定义,即全局工作流、局部工作流和工作流实例。当系统边界确定之后,整个系统拥有一个全局工作流。对于较为复杂的系统,一个全局工作流可能包含或者可以拆分为多个局部工作流,它们之间通常可以并发或者通过较为松散的关系交织在一起。以OA系统为例,可将OA系统的全局工作流拆分为信息、公文管理、会议管理、用车管理四个局部工作流,再细分下去,公文管理还可以分为收文管理与发文管理。

值得一提的是,相对于静态工作流系统,动态工作流系统的设计要复杂得多。这主要是因为后者需要考虑动态的过程定义,一般来说需要开发平台或开发环境的一定程度的支持并能够很容易地体现在表现层中。

最后,我们讨论一下工作流系统的实现。由于国内外很多软件公司均有各自的工作流产品及成熟的软件开发架构,这里以Microsoft Windows Workflow Foundation为例提出一个可行的解决方案。此解决方案采用多层模式架构,分Web表示层、工作流层、业务层、实体层、数据访问层和数据库。对于非工作流需求(仅面向数据模型)只访问业务层,而对于工作流需求则可能需要同时访问工作流层和业务层,这取决于工作流是否包含对数据模型的访问。采用这种架构的工作流容易变更,业务层作为工作流框架的底层服务更加独立,仅依赖于数据访问层。

以“用车管理”工作流框架为例,首先创建一个用车活动类型:

public sealed class AutomobileActivity : CodeActivity

然后重写AutomobileActivity中的Execute方法,根据传入的上下文,选择具体的子活动(申请、审批、安排出车、交车):

protected override Boolean Execute(CodeActivityContext context)

{

Boolean result = false;switch(ActivityName.Get(context)

{

case“申请”:

……

break;

case审批”:

……

break;

case“安排出车”:

……

break;

case“交车”:

……

break;

}

return result;

}

至于业务层、实体层、数据访问层,这里不再详述。

以上是基于微软WF工作流技术的一种工作流系统解决方案,与很多解决方案相同仅支持静态的工作流定义。

(作者单位 湖北省工业建筑学校)

上一篇:实验课 第9期 下一篇:酸雨危害模拟实验器