摘要:通过工作流技术构建软件
项目管理系统的架构
WindowsWorkflowFoundation该技术将系统业务流程的应用逻辑与过程逻辑分开。在不修改具体功能模块的情况下,只需修改过程模型即可改变系统功能,实现系统业务流程的集成管理。 关键词:WindowsWorkflowFoundation;工作流技术;软件
项目管理系统;应用逻辑;过程逻辑; 一、引言 随着信息化进程的推进和软件行业的蓬勃发展,软件系统的规模越来越大。如何高效、高质量地开发计算机软件已成为软件组织必须积极应对的课题。 事实证明,软件开发过程中的
项目管理对提高软件质量起着重要作用。[1]在软件实施过程中,离不开项目管理工具的支持。[2]软件项目管理系统是主要的项目管理工具之一。它取代了传统的管理方法,能够及时准确地收集信息,科学地分析项目实施的动态情况和存在的问题,协调解决,确保项目的顺利进行。但由于其局限性,传统的软件项目管理系统,只能处理特定的开发过程。[3]当开发过程发生变化时,必须修改系统的应用程序或重新开发新的应用程序,不能满足项目开发过程的多样化和需求的不确定性。 本文使用NetFramework3.提供0框架WindowsWorkflowFoundation技术生成工作流,利用工作流技术构建软件项目管理系统,抽象出一系列可以用工作流解释和执行的工作流程定义,通过WindowsWorkflowFoundation该技术将业务流程的应用逻辑与过程逻辑分开,只能修改过程模型而不修改具体的功能模块来改变系统功能,从而实现业务流程的部分或全过程的集成管理。 基于WindowsWorkflowFoundation软件项目管理系统的技术,通过工作流建模可以非常方便、灵活地定义软件开发过程模型。当开发过程需要改变时,流程模型和表单定义可以快速修改以满足需求,具有高度的灵活性和实用性,能有效解决传统项目管理体系的不足。 二、软件项目管理系统的流程结构分析 软件项目管理是管理项目开发的整个过程,而不是管理项目开发的结果。只有管理好整个开发过程,才能取得好的效果。因此,软件项目管理的本质是过程管理。 过程管理的核心理念不能完全依赖于目标管理控制方法,而应注意项目开发各阶段各重要开发过程的正确实施。软件产品的开发是由具体的软件开发过程完成的,软件开发过程的质量在很大程度上决定了软件产品的质量和软件生产效率。 软件过程有时也被称为软件生命周期,因为它描述了软件产品从概念形成、开发、使用和维护到软件项目管理的整个生命过程,实际上是软件生命周期的各个阶段,是软件开发过程的管理。 所以可以这样说,软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本按期、按质的完成软件交付用户使用。 根据软件的状态、特点、软件开发活动的目的和任务,软件生命周期可分为多个阶段。软件项目开发过程中的各个阶段的全面管理,与软件项目各个节点上的管理数据形成一个紧密结合的整体开发过程(如图1所示)。
图1 软件项目开发流程图及主要工作产品 每个阶段都是相对独立和相互关联的,每个阶段可以分为几个子过程。每个子过程密切相关,平行和重复循环的工作内容更频繁。上一阶段的工作结果是下一阶段工作的前提和基础,下一阶段是上一阶段工作的进化和改进,是迭代发展的过程。 无论是车间开发还是团队合作开发,这七个阶段都是必不可少的。有时间顺序,所以图1不包含控制阶段,但软件项目管理过程中的控制无处不在,贯穿整个软件开发过程,使软件开发的每个阶段都能按照预定的计划进行。随着软件质量体系的发展,过程管理的作用将变得越来越明显。从过程管理的角度来看,软件开发应成为评价软件质量的重要标准之一。 三、基于WindowsWorkflowFoundation实现技术工作流的方法 (一)WindowsWorkflowFoundation技术简析MicrosoftWindowsWorkflowFoundation(WWF)工作流框架广泛而通用,应用于Windows平台开发工作流解决方案。WindowsWorkflowFoundation从下到上,在每个级别都针对可扩展性进行了设计。基于WindowsWorkflowFoundation获得解决方案Microsoft.NET代码支持由在宿主应用程序中运行的互连组件组成。就像在定制环境中以视觉方式创建一样Web同样,您需要在视觉设计器中制定特定的工作流程步骤,并添加代码来隐藏工作流程组件,以实现规则并定义业务流程。 WWF工作流主要有两种:顺序工作流(Sequen2tialWorkflow)和状态机工作流(StateMachineWorkflow)。 顺序工作流是为执行由一系列预定义步骤组成的任务而设计的。它只向前运行,也用于重复和相对固定的过程场景。该系统结构模拟基于过程的应用程序。 状态机工作流是为事件驱动的工作场景设计的。状态机工作流包括两个或两个以上的状态,任何时候只有一个处于激活状态。 本系统把工作流建模成一个状态机。工作流本身是由许多状态组成的,其中一个状态指定为起始状态。每个状态能接收一组指定的事件,事件的触发将导致状态的迁移。当状态迁移到终止状态时,工作流就结束了。 (二)基于WWF模型设计和代码实现技术系统工作流 1.工作流模型设计。使用传统程序软件(如ASP)在编写管理系统时,当流程跳转,即页面和页面之间的切换时,通常使用在前一页上制作一个操作按钮。按钮的功能是调用下一页。当具有相应权限的用户点击此按钮时,将激活其功能。然而,如果用户的开发过程发生了变化,则需要访问所有内容ASP在页面上修改大量代码是相当麻烦、耗时和容易出错的。 本系统使用NetFramework3.0所提供的Win2dowsWorkflowFoundation通过使用工作流模型提供的流程控件、状态管理、事务和同步器,框架创建工作流模型,开发人员可以分离应用程序逻辑和业务逻辑。只要他们修改业务逻辑,他们就可以改变应用程序逻辑,而无需修改应用程序逻辑。构建高层次抽象,提高开发者效率。 在软件项目管理系统中,项目维护阶段的总体流程经历了历了。本文以这5页为模型WindowsWorkflowFoundation创建状态机工作流,描述应用程序所需的处理过程。.NET打开上述项目维护阶段对应的项目.NET项目(如图2所示)
图2 项目维护阶段.NET项目 这个窗口现在分为左右两侧,每个页面对应的代码显示在左侧,系统提供在右侧 解决方案资源管理器 (如图3所示) 解决方案资源管理器 下面分别介绍三个部分。
图3 解决方案资源管理器 2.工作流设计和代码实现。根据图4中的工作流结构,项目解决方案中的三种工作流技术实现方法如下: (1)项目程序页面结构。解决方案资源管理器 第一部分以扩展名称为aspx以用户应用程序页面为主的项目程序页面包含上述项目维护阶段的五个页面,即用户需求报告页面(user_xiuqiu.aspx)、部门技术经理确认页(JiShuJingLiinfo.aspx)、项目经理确认页(XiangMuJingLiinfo.aspx)、需求维护项目启动页(XiangMuqidong.aspx)需求验收页(XiangMufinish.aspx),它们对应上述五个流程页面。除了这五个页面,还有一个叫做Web.config连接用户应用页面的文件Workflow工作流的系统配置文件,即连接应用程序逻辑和业务逻辑的系统文件。Web.config文件可视为工作流Mapping,工作流Mapping通过用户应用逻辑和工作流业务逻辑之间的桥梁Mapping将用户访问页面的顺序定义为工作流的过程,即工作流的跳转。在上述代码中pageworkflowmapping页面调用的顺序可以清楚地看到,每个页面的下一个跳转页面没有在用户应用页面中定义。这样,当需要改变用户的应用逻辑时,只需要改变工作流Mapping就可以了。 (2)状态机工作流。解决方案资源管理器 第二部分是工作流Activity项目(PageFlowLi2brary),如图3所示。此工作流定义了5页跳转的工作流。本项目创建状态机工作流。 WWF为创建状态机工作流提供了与状态机相关的活动(图4),这些活动可以看成是构建工作流的控件。它们提供了各种丰富的功能,可以使用这些活动来控制工作流的业务逻辑流程。
图4 WWF为状态机工作流提供的一些相关活动 状态机的工作流可以从StateMachineWork2flow类继承,这类已经实现了状态机工作流的大部分功能。一旦继承了这一类,就可以开始在工作流中添加所需的状态并使用它SetState活动或事件驱动的活动(如EventSink)把这些状态连接起来。工作流类XiangMuProcessingWorkflow这类代码是整个程序的基础,如下所列: usingSystem; usingSystem.Workflow.ComponentModel; usingSystem.Workflow.Runtime; usingSystem.Workflow.Activities; usingSystem.Workflow.Activities.Rules; namespaceMicrosoft.Samples.Workflow. Quickstarts.StateMachine {publicpartialclassXiangMuProcessing2Workflow:StateMachineWorkflow {privatestringXiangMuId; privatestringitemStatus; publicXiangMuProcessingWorkflow() {InitializeComponent();} privatevoidInitializeComponent() {} } } 绑定创建活动和参数: WWF中有两个类ActivityBind和Parame2terBinding,它是专门用来将活动中的变量绑定到方法呼叫所需的参数上的。该方法定义为一个接口,该接口的实现是在工作流中注册的服务。以下代码显示了如何创建和联系工作流的私有变量和参数,将用于根据当前工作流的状态更新宿主。 第一个状态监控来自宿主的事件,通知工作流的新需求已经提交,应立即处理。当你想创建一个状态时,状态的第一个子就活了动必须是StateInitialization活动或实现IEventActivity接口活动。本工作流WaitForXiangMuState采用后者,因为这种状态是由宿主程序的事件激活的。 EventSink活动用于监控注册WWF运营库中的服务事件。宿主程序在此程序中提供此服务。定义工作流IXiangMuingService宿主程序将实现接口。 一旦EventSink活动处理触发事件后,需要通过状态消息IXiangMuingInterface返回宿主程序。工作流需要在接口中调用ItemStatusUpdate并传递方法XiangMuId和newStatues参数。调用接口法的工作交给了它InvokeMethodActivity活动。这里指定活动。InterfaceType参数是系统所需的服务接口,MethodName服务界面中的方法名称设置属性,然后在ParameterBindings添加之前构建的参数绑定,最后是活动MethodIn2voking事件指定了改变当前需求状态的事件处理程序。因为它已经被控制了XiangMuId和newStatus参数绑定到私有变量XiangMuId和itemStatus所以为ItemStatusUpdate通过方法传递参数的过程是由WWF自动完成运行库。 更新完成之后,WaitingForXiangMuState状态已经准备好转移下一个状态,即XiangMuPrecess2ingState状态。SetState该活动专门负责状态转移。SetState活动加入到EventDriven最后一环,当一切都完成后,SetState该活动将执行,并立即跳转到指定的下一个状态。 另外,可以在InvokeMethodActivity在活动执行的前一刻,添加一些额外的逻辑。只是为了MethodIn2voking事件指定处理程序,能做到这一点。MethodInvoking事件的处理程序为itemStatus和XiangMuId变量指定了新的值。事件处理程序的指定已在上述代码中实现。 使用WWF提供的活动可以灵活构建工作流,每个工作流并没有指出其对应的前台用户应用页面,而是定义了业务流程的跳转。WWF这样,应用程序逻辑和业务逻辑就分开了。 (3)工作流服务器。解决方案资源管理器 第三部分是工作流服务器(PageFlowService),如图5所示。工作流服务器为工作流的定义和实施提供了系统数据、工作流活动的定义和外部方法。
图5 工作流服务器 四、结束语 基于工作流解决方案的真正优势是使复杂的过程更容易建模和实现,更重要的是,它更容易改进和扩展。WindowsWorkflowFoundation(WWF)该技术使用户能够直观地设计复杂的算法,从而解决业务问题为过程建模WindowsWorkflow该程序提供了管执行环境,并提供持续时间、可靠性、悬挂/恢复和补偿特征。从某种意义上说,活动类似于中间语言(IL)操作代码或程序语句,但包含特定领域的知识。WWF该技术使程序语义具有声明性和准确性,使用户能够建模接近实际过程的应用程序。 WWFSDK它为复杂业务程序的建模提供了广泛的编程语言。特别是当这些程序可能需要随时改进时,用户可以添加特殊活动来使用工作流,并使用内置行为来控制工作流。 参考文献: [1]高燕、李建华、费耀平等.基于CMM的软件项目管理系统的设计与实现[J].计算机工程,2002(9). [2]钱福培.应用与开发美国
项目管理软件[J].软件,1993(12). 范玉顺,吴澄.工作流管理技术研究及产品现状及发展趋势[J].2000(1)计算机集成制造系统. [4]夏冬,白树仁,邓惠建.基于J2EE工作流管理系统模型[J].2006(3)计算机工程与科学.(本文于2008年在青岛职业技术学院学报发表)