公务员期刊网 论文中心 正文

WF工作流工程设计论文

WF工作流工程设计论文

1.WF简介

目前各大软件厂商都推出了工作流产品。从.NETFramework3.0开始,微软推出了一个全新的基于Windows平台的工作流产品WorkflowFoundation(简称WF),作为.NET中的一个标准组件,目前最新的版本是WF4.5。相对WfMC对工作流的抽象定义,微软对工作流的定义体现了其在WF中的设计思想:工作流是一组存储为模型的名为活动的基本单元,活动用于描述实际进程;工作流提供了一种方法,用于描述多项短期运行或长期运行的工作之间的执行顺序和依赖关系;此工作从头到尾地贯穿模型,并且活动可以人工执行或由系统功能执行。WF的组成主要包括以下几个部分:

(1)活动模型(ActivityModel):活动是构建WF工作流的基本单元,可以通过代码的方式编写活动或用已有的活动组合成一个复合活动。

(2)工作流设计器(WorkflowDesigner):从MicrosoftVisu-alStudio2005开始,VisualStudio提供了一个工作流设计器,开发者也可以根据需要开发设计出完全独立于VisualStudio的工作流设计器。

(3)规则引擎(RulesEngine):可以被工作流所调用,为工作流提供条件转移规则。

(4)工作流运行时(WorkflowRuntime):一个轻量级、可扩展的引擎执行环境,需要运行在宿主程序中。WF在工作流活动状态的持久化、异常处理、事务管理、WebService通信、流程的动态更新等方面都给予了大量的支持,能快速开发Windows平台上C/S或B/S框架的工作流应用。近年来,WF已逐渐成为Windows平台上工作流开发研究的主流方向之一。

2.WF工作流引擎体系结构

WF引擎的体系结构共分四层:工作流模型层、运行时层、宿主层、宿主程序层。

2.1工作流模型层(WorkflowModelLayer)

工作流模型层是WF的应用开发层,支持不同类型的工作流模型,提供了很多开箱即用的活动(OutofboxActivi-ties),以及活动和规则编辑API。开箱即用活动可以分为顺序、状态机和策略三类。此外,用户还可以通过自定义活动的方式,扩充WF的活动库。

2.2运行时层(RuntimeLayer)

运行时层是WF的核心部分,包含执行工作流和管理工作流生命周期必需的关键服务:

(1)执行(Execution):确定流程中活动被执行的时间,并且维持一些公共行为,如事件处理、异常、跟踪和事务等。

(2)跟踪(Tracking):主要是建立经跟踪接口序列化过的跟踪事件。

(3)调度(Scheduler):按调度表执行各种活动。

(4)规则(Rules):提供了策略执行功能和对代码文档对象模型条件值的计算。

(5)状态管理(StateManagement):负责管理经持久化接口持久化的各种状态。

2.3宿主层(HostingLayer)

宿主层提供WF的运行时层与宿主程序之间各种关键服务的接口,包括持久化服务、通信服务、跟踪服务、定时器服务、线程服务和事务服务等。用户也可以根据需要自定义服务。2.3.4宿主程序层(HostProcessLayer)宿主程序是一个调用者,为用户提供交互的图形用户界面。工作流引擎则运行在服务器上为宿主程序提供服务并管理工作流。Windows平台下很多不同类型的应用程序都可以作为WF的宿主程序,比如控制台程序、窗体表单应用程序,

2.4WF支持的工作流类型WF

支持两种工作流:顺序工作流和状态机工作流[5]。

(1)顺序工作流模型(SequentialWorkflowModel)顺序工作流是一个连续的活动序列,流程一旦开始,各个活动将按照流程定义的顺序自我驱动逐个执行,直到整个工作流完成为止。尽管顺序工作流可以使用分支和循环,也可以接收外部事件,但它的执行过程是高度可预测的。顺序工作流模型带有明显的时序性,适用于大多数结构化的工作流应用。

(2)状态机工作流模型(StateMachineWorkflowModel)状态机工作流完全依赖外部事件驱动来执行,因此也称事件驱动工作流。它包含一系列状态(包括初始状态和结束状态)和事件。状态机一开始总是停在一个预设的状态中,直到事件触发之后才会跳转到新的状态上。状态机工作流模型是为事件驱动的工作场景设计的,有事务特征,适合于非结构化面向人或角色相关的工作流场景。

3工程设计管理系统实现

3.1系统整体架构

随着Internet的快速发展,Web以其简便的信息获取方式、统一的客户端界面和丰富的功能日益为人们所接受,因此目前绝大部分的应用系统都以B/S架构实现。微软开发的ASP.NET框架已成为Web开发的利器。本文利用ASP.NETWeb应用程序作为WF宿主应用程序,为工程设计企业构建工程设计工作流管理系统。系统的整体架构是在典型的三层架构基础上加入工作流引擎层,成为四层架构,如图2所示。四个层次分别是:

①表现层,采用基于ASP.NET的Web客户端,呈现系统的用户界面;

②业务逻辑层:实现包括市场经营管理、工程项目管理、设计过程管理、质量管理等功能的业务逻辑;

③工作流引擎:包括WF定义、WF执行和WF监控,实现业务逻辑层中各类业务的流程定义、执行和监控;

④数据访问层:实现对数据库的访问和操作,为其他三层提供数据服务。

3.2工作流设计

在电力工程设计中,设计成品分很多种类和级别。不同种类和级别的设计成品按照不同的流程进行校审,从而达到保证设计质量的目的。以某设计院的A类工程三级施工图为例,其校审过程如下:设计人设计出成品后,登录工程设计工作流管理系统,在线填写设计成品相关信息,递交设计成品校审中请。递交的申请需要经过校核、审核和批准共三级校审。每一级校审如有修改意见,则直接退回给设计人,由设计人修改后重新递交校审申请。这是一个结构化的业务流程,其执行过程是高度可预测的,带有明显的时序性,因此,采用顺序工作流模型进行流程建模,其流程图在。

3.3系统开发关键技术

3.3.1持久化服务

相对于计算密集型的技术,工作流技术,特别是人工工作流技术,处理的大部分是等待,因此对持久化提出了特殊的要求。工作流的持久化,关键之一是如何以及何时把一个流程实例存储到数据库中并从内存中移除。WF引擎宿主层的SqlWorkflowPersistenceService服务类是持久化服务的核心。它可以将流程实例保存到数据库中,也可以从数据库中加载流程实例。当流程实例空闲时,WF运行时会触发一个WorkflowRuntime.WorkflowIdled事件,宿主程序发现这个事件时会在事件处理器中调用WorkflowIn-stance的TryUnload方法,将空闲的流程实例持久化存储到数据库中。

3.3.2工作流调用本文实现的系统以ASP.NETWeb应用程序为宿主。在宿主程序中调用工作流分两种情况:

(1)在流程实例初次被创建时,在ASP.NET页面中初始化工作化,关键代码如下:WorkflowRuntimeruntime=newWorkflowRuntime;…//添加相应的服务runtime.StartRuntime;//启动工作流引擎WorkflowInstanceinstance=runtime.CreateWorkflow(typeof(WF.Checked));instance.Start;//启动流程实例

(2)当宿主程序发生的事件触发某个已被持久化的流程实例时,需要重新加载此实例,关键代码如下:WorkflowRuntimeruntime=newWorkflowRuntime;GuidWorkflowId=newGuid(tbNo.Text);//tbNo.Text用来获取要处理的工作流实例IDruntime.GetWorkflow(WorkflowId);其中第二种情况用得更多,因为每一个流程实例只需在开始时进行一次初始化,而之后每一个活动的流转和操作都要重新加载被持久化的实例。

4结束语

本文提出一个结合了WF和ASP.NET技术的Web工作流系统四层架构体系,使用顺序工作流模型设计业务流程,开发了一个工程设计工作流管理系统,很好地解决了工程设计管理中业务流程在不同人之间的自动流转问题。该系统目前已投入使用,为企业创造了很大的价值。

作者:李绪光 单位:广州电力设计院

相关文章阅读