[硕士论文精品]基于osworkflow与轻量级j2ee的工作流管理系统的设计与实现_第1页
[硕士论文精品]基于osworkflow与轻量级j2ee的工作流管理系统的设计与实现_第2页
[硕士论文精品]基于osworkflow与轻量级j2ee的工作流管理系统的设计与实现_第3页
[硕士论文精品]基于osworkflow与轻量级j2ee的工作流管理系统的设计与实现_第4页
[硕士论文精品]基于osworkflow与轻量级j2ee的工作流管理系统的设计与实现_第5页
已阅读5页,还剩57页未读 继续免费阅读

[硕士论文精品]基于osworkflow与轻量级j2ee的工作流管理系统的设计与实现.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要摘要工作流是一类能够完全或者部分自动执行的业务流程,它根据一系列过程规则,使文档、信息或任务能够在不同的执行者之间进行传递与执行,是业务流程的计算机化和自动化。工作流管理系统则是支持工作流运行的软件环境。随着INTERNET与JAVA开源技术的蓬勃发展,基于轻量级J2EE平台的WEB工作流管理系统已成为工作流技术研究的一个热点。当今的轻量级J2EE框架支持并实现了如“控制反转”、“面向切面”等先进的编程理念,使系统的权限分配、事务处理、日志记录、异常管理等功能的实现都大大的简化,结合丌源工作流引擎OSWORKFLOW,我们能高效快速地开发出一个稳定且可维护性良好的工作流管理系统。本文在全面介绍工作流及其相关的概念的基础上,对JAVA开源工作流引擎OSWORKFLOW以及它与轻量级J2EE系统的整合方法做详细讨论,并在此基础上联系实际,结合北京联通总部的合作伙伴业务受理系统中的一个工作流业务,从设计目标到具体实现,详细阐述一个具体的工作流业务流程在轻量级J2EE系统中的实现方法,展现了以简单的系统架构和配置实现松耦合、高灵活性的复杂的工作流管理系统的方法。涉及的方面包括体统架构、功能模块、设计目标、实现方案、引入设计模式简化描述和实现复杂业务等等。关键词工作流;工作流管理系统;J2EE;OSWORKFLOW分类号TP31152ABSTRACTABSTRACTAWORKFLOWISATYPEOFBUSINESSPROCESSOFMANAGEMENTBPMWHICHCANBEAUTOMATICALLYEXECUTEDPARTLYORFULLYACCORDINGTOASERIESOFPROCESSRULES,AWORKFLOWMAKESDOCUMENTS,INFORMATIONANDTASKSTOBEDELIVEREDANDEXECUTEDAMONGDIFFERENTOPERATORS,ITISTHECOMPUTERIZATIONANDAUTOMATIZATIONOFBUSINESSPROCESSAWORKFLOWMANAGEMENTSYSTEMISTHESOFTWAREENVIRONMENTSUPPORTINGTHEEXECUTIONOFWORKFLOWSWITHTHERAPIDDEVELOPMENTOFTHEINTERACTANDJAVAOPENSOURCEPROJECT,THEIMPLEMENTATIONOFWORKFLOWMANAGEMENTSYSTEMBASEDONTHELIGHTWEIGHTJ2EEPLATFORMHASBECOMEANISSUETODAYSLIGHTWEIGHTJ2EEFRAMEWORKSSUPPORTANDIMPLEMENTTHEADVANCEDCONCEPTSOFPROGRAMMINGNOWADAYSSUCHASIOC,AOP,MAKETHEREALIZATIONOFCOMMONFUNCTIONSOFASYSTEMTHOSEARE,FOREXAMPLE,AUTHORITYASSIGNMENT,TRANSACTIONMANAGEMENT,LOG,EXCEPTIONMANAGEMENT,ETC,MOSTLYSIMPLIFIEDBYINTRODUCINGANOTHEROPENSOURCEFRAMEWORKCALLEDOSWORKFLOWINTOOURWORK,WECANDESIGNANDIMPLEMENTASTABLE,MAINTAINABLEWORKFLOWMANAGEMENTSYSTEMQUICKLYANDEFFECTIVELYWESTARTWITHINTRODUCINGTHEBASICANDRELATIVECONCEPTIONSOFWORKFLOW,ANDDISCUSSJAVAOPENSOURCEFRAMEWORKOSWORKFLOWANDITSINTEGRATIONWITHJ2EESYSTEMTHENWELINKTOTHEREALITY,SPECIFYTHEIMPLEMENTATIONOFAWORKFLOWBASEDONJ2EEPLATFORMUSINGANEXAMPLEOFAPRACTICALWORKFLOWPROJECTFROMTHESPOASYSTEMOFCHINAUNICOM,SHOWINGHOWTODEVELOPALOWCOUPLING,COMPLICATEDANDFEXIBLEWORKFLOWMANAGEMENTSYSTEMOURSPECIFICATIONINVOLVESTHESEASPECTSSYSTEMARCHITECTURE,FUNCTIONMODULES,DESIGNGOALS,IMPLEMENTATIONPLAN,DESCRIBINGCOMPLICATEDBUSINESSPROCESSUSINGDESIGNPATTERNS,ETCKEYWORDSWORKFLOW;WORKFLOWMANAGEMENT;J2EE;OSWORKFLOWCIASSN0TP31152独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。躲懈一期研哪F日59学位论文版权使用授权书本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索,提供阅览服务,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国家有关部门或机构送交论文的复印件和磁盘。保密的学位论文在解密后适用本授权说明学位论文作者签名签字日期叶下翩躲锄妙奶签字日期Z口。7年7月F日么J日择引一碉致谢本论文的工作是在我的导师杨少波教授的悉心指导下完成的,杨少波教授给我的科研工作和论文都提出了许多的宝贵意见,并且他严谨的治学态度和科学的工作方法给了我极大的帮助和影响,在此表示衷心的感谢在此衷心感谢两年来杨少波老师对我的关心和指导。在实验室工作及撰写论文期间,吕平、乐元任等同学对我论文中的框架研究以及系统实现工作给予了热情帮助,在此向他们表达我的感激之情。另外也感谢我的父母,他们的理解和支持使我能够在学校专心完成我的学业。1引言11工作流技术的历史工作流的概念川【2】起源于上个世纪70年代的生产组织和办公自动化领域。它是针对同常工作中具有固定程序的活动而提出的一个概念。提出的目的是通过将工作分解成定义良好的任务,角色,按照一定的规则和过程来执行这些任务并对他们进行监控,达到提高办事效率,降低生产成本,提高企业生产经营管理水平和企业竞争力的目标。最开始,工作流系统还只是某些企业为了提高生产效率、节约成本而创建的基于计算机的“无纸化“的工作环境。而到了20世纪90年代,随着计算机与网络技术的发展,特别是在INTERNET应用日益普及的情况下,现代企业信息系统的分布性,异构性和自治性的特征越来越显著,相应的信息资源也分布在异构的计算机环境中。在这种大规模的分布式环境下,高效地调度相关联的任务并密切控制它们的执行,已经成为一种发展趋势。在这种背景要求下,工作流管理系统得到了长足的发展,从最初的“无纸办公环境“转而成为了为企业统一复杂信息环境、实现业务流程自动执行的必要工具。这样一个转变把工作流技术带入一个崭新的发展阶段。1993年,工作流管理联盟WFMC的成立标志着工作流技术在计算机研究领域中被明确的划出一席之地。12工作流技术的研究现状在工作流技术应用日益得到重视的今天,对工作流技术的研究也正在向更深层次进行。当前,工作流技术研究的主要目的有两个1为工作流技术的发展解决理论上的问题,探讨工作流模型和语义的形式化表示方法等。包括过程建模理论与建模方法、模型验证和模型仿真方法、分布式环境下的资源协调和任务优化调度策略、过程模型和其他模型的集成方法等等。2从工作流实现技术的角度探讨利用先进的技术提高工作流管理系统的性能和可靠性。包括分布式工作流的实施问题、异常错误和错误恢复问题、融入事务管理概念、应用集成问题等等。目前在工作流技术的研究中,比较著名的有IBM公司ALMADEN研究中心的基于持久消息队列的分布式工作流管理系统EXOTICA,佐治亚大学计算机系的具有自适应能力的工作流管理系统METEOR和基于分布式主动数据库技术的工作流管理系统WIDE,以及基于状态与活动图的工作流管理系统MENTOR。13主要的问题尽管工作流从提出至今已经历了三十余年的发展,并取得了相当的成果,但仍存在很多问题。概括起来,主要有以下几个1缺乏标准带来的产品异构性由于在工作流管理系统的丌发的最初阶段缺乏统一的、普遍遵循的标准,以及限于当时软件支撑技术的水平,不同公司的工作流系统在功能上,所采用支撑技术上,开发技术上和接口上都呈现出非常大的不同。这种情况下,用于一旦选定一种产品之后,就很难再过渡到其他同类产品之上了,而不同的系统之间缺乏互操作的接口,尽管WFMC的成立有助于改善这种情况,但若想实现类似于SQL这样的统一标准,仍有很长的路要走。2实现的复杂性将工作流管理系统在企业进行应用不仅仅需要完成过程定义,还需要做很多其他工作。总的来说,工作流管理系统在企业的应用是一个复杂的实施过程。这个复杂的实施过程中需要完成的任务包括对外部的应用系统进行包装以便工作流能够在必要的时候激活它,建立工作流运行所必须的分布计算环境,设计相应的用户界面,还包括制定相应的管理规程和用户操作规范等等。3系统的安全性目前的工作流管理系统对系统运行中出现的并发访问和异常错误缺乏正确和可靠的支持。14轻量级J2EE架构下工作流系统的实现1999年,SUN公司提出了以JAVA2为核心的J2EE平台,该平台以各个“组件”为基础,集设计、开发、组装和调度为一体,定义了一系列企业级的大型分布式系统的解决方案。这些组件包括JAVASERVLET、JSP、JNDI、JDBC、JTA、JMS、RMI等等。在架构方面,J2EE采用“MVC,即MODELVIEWCONTROL的概念,将应用系统划分为业务模型层、视图层与控制层,并用各个J2EE组件实现不同层次的功能,降低了整个系统的耦合度和维护成本。2到今天,J2EE已经经历了近LO年的磨砺,伴随着JAVA开源事业的发展,J2EE自身也在不断的演进,在保持自身基本架构和思想的前提下,一些重量级的高侵入式的组件被日新月异的具有相同功能的轻量级开源框架所取代,不断走向“敏捷,和“轻量级”。在这些优秀的JAVA开源框架中,最有代表性的就是STRUTS2、SPRING、HIBERNATE以下简称SSH等等。基于SSH的系统不但秉承了MVC的思想和特性,而且融入了控制反转、面向切面等等先进的理念,使权限分配、事务处理、日志记录、异常管理等功能的实现都大大的简化。所以,在开源轻量级J2EE架构下的工作流系统的实现也就有了一个很高的起点,结合JAVA的另一个丌源工作流引擎OSWORKFLOW,我们能在工作流系统开发过程中将工作流逻辑部分与具体业务部分相分离,使得我们可以把关注的重心放在对具体业务的实现上,极大提高开发效率。不但如此,这样的系统也可以良好的应对需求变更。15本文的工作与内容组织本文诣在讨论工作流管理系统的一种实现方案。即以轻量级J2EE框架结合OSWORKFLOW工作流引擎作为基本平台,并在此基础上根据工作流管理系统参考模型与具体业务需求做进一步设计与开发,最终完成系统。之后章节的内容都将围绕这一主题展开,以下是各章简介。第二章首先介绍工作流的基础知识然后重点讲述OSWORKFLOW,包括其基本概念、描述工作流的方式以及运行机制;最后介绍OSWORKFLOW与SSH的整合。在第二章之后,我们以中国联通SPOA系统的相关工作流业务为背景,讲述如何将工作流相关理论、OSWORKFLOW引擎与实际应用相结合。作者在这个项目中独立负责“违约处理业务流程的设计与实现,论文将以此模块作为实例进行深入讨论。第三章介绍了SOPA系统的项目背景以及其中“违约处理”业务流程的需求。我们将依照工作流管理系统参考模型将待完成的系统功能分为几个模块,并结合OSWORKFLOW的相关概念对每个模块进行初步的分析与设计。第四章在第三章的基础上进一步讨论了系统各个模块的具体设计。对于在设计中遇到的一些问题,如HIBEMATE对于复杂查询效率低、违约处理底层业务复杂等等,我们根据不同的情况,运用SSH架构的优点并遵循面向对象设计的原则,为它们提出了不同的解决方法。第五章是系统上线前的功能测试。最后一章为论文总结与展望。32工作流相关基础与JAVA工作流引擎OSWORKFLOW21工作流与工作流管理系统工作流是从英文单词“WORKFLOW”翻译的来的。单词WORK表示工作或者任务,单词FLOW的含义是流动、流程等,反映了一种变化以及变化的过程。所以从词面上我们就能大致看出,工作流表示的是由一系列活动以及活动之间的变化过程所组成的业务流程。而工作流管理系统则是实现并支持工作流运行的软件环境。211工作流的定义、基本元素不同的研究者和工作流产品供应商从不同的角度给出了工作流的定义。以下是其中比较具有代表性的定义1工作流管理联盟WFMC给出的定义工作流是能够完全或者部分自动执行的业务流程,它根据一系列过程规则,使文档、信息或者任务能够在不同的执行者传递与执行【31141。2IBMALMADENRESEARCHCENTER给出的定义工作流是业务流程的一种计算机化的表示模型,定义了完成整个过程所需要的各种参数,这些参数包括对过程中每一个步骤的定义、步骤之间的执行顺序、条件以及数据流的建立、步骤负责人以及每个活动所需要的应用程序。3其他一些定义工作流是将一组任务TASK组织起来完成某个业务流程。工作流是一个用来实施业务流程实践的机制。以上的这些工作流的定义,包括其他一些未罗列的工作流定义,虽然在表述方式上略有不同,但它们基本上都说明了工作流是“业务流程的一个计算机实现。所谓业务流程,是指企业为了提供一种产品或者服务,按照企业的管理规章和业务流程所组织的一系列相关任务。这些任务顺序或并行地执行,在其参与者和组织机构之间进行文档、信息、决策的传递,从而实现预定的目标。工作流要反映一个业务流程,必须具备下列基本元素1活动,对应于业务流程中的任务,主要是反映业务流程中的执行动作或操作。42活动之间的连接关系,代表了业务流程的规则和业务流程。3角色、组织单元,对应参与操作的人员、组织、部门等,描述企业的业务流程是由谁来完成的。4数据、采用程序,说明采用了什么手段来完成业务流程。212工作流举例我们以中国联通总部的“合作伙伴业务受理系统”中一个较为简单的业务流程“SP资质申请举例,它的目标是为联通SP无线增值服务提供商提供一个统一的资质资格获取办法,它对应了如下图的业务流程图21中国联通SPOA系统“SP资质申请”流程FIGURE21THEFLOW“SPQUALIFICATIONAPPLICATIONOFSPOASYSTEM从上面我们可以清楚地看到工作流的基本元素,椭圆代表活动,左边的人物代表业务流程中涉及的各个角色,椭圆之间的箭头表明了活动之间的连接关系。5213工作流管理系统的定义与体系结构WFMC给出的关于工作流管理系统WFMS的定义是工作流管理系统是一个软件系统,它定义、管理工作流,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行【5】。由此可见,工作流管理系统是一个定义工作流,并为其提供执行环境的软件系统,或者说它更像是一个工作流的“容器”。如图为WFMC提出的WFMS参考模型的体系结构图。这个参考模型的体系结构给出了抽象的工作流管理系统的功能组成部件和接口,它能够满足工作流管理系统和产品所应该具有的主要功能特征。囹软件构件FQ系统控翩数据口外部产品数据图22工作流管理系统体系结构FIGURE22ARCHITECTUREOFWORKFLOWMANAGEMENTSYSTEM上图涉及到如下的一些基本概念【6】【7】1体系结构中的三类构件可以看出,工作流管理系统主要由三类构建组成,这三类构件分别是软件构件,完成工作流管理系统不同组成部分功能的实现6系统控制数据,工作流管理系统中的一个或多个软件构件使用的数据应用与应用数据,对于工作流管理系统来说,他们不是工作流管理系统的组成部分,而是属于外部系统和数据,它们被工作流系统调用来完成整个和部分工作流管理的功能。2过程定义工具过程定义工具PROCESSDEFINITIONTOOLS提供一套对业务流程的描述方法,并能将其计算机化。它可以是基于形式化的过程定义语言,也可以是图形工具。3过程定义过程定义在这里并非一个动词而是一个名词,它是WFMS在建立阶段的最重要的产物,在这个阶段,WFMS设计者通过分析、建模和使用过程定义工具,把实际中的业务流程转变成形式化的、计算机可以处理的定义。通常把这个过程的结果称为“过程定义PROCESSDEFINITION”。所以过程定义PROCESSDEFINITION实际上是企业业务流程的计算机化模板,它可以多次实例化执行从而使多个实例同时运行。过程定义包含了工作流执行的所有必需的信息,包括它启动和结束的条件、组成的活动、活动间导航的准则、活动参与的用户、用户的任务和权限、需要激活的应用程序的引用、需要用到的工作流相关数据的定义等等。下图为WFMC定义的过程定义源模型图23过程定义源模型FIGURE23SOURCEMODELOFPROCESSDEFMITION4工作流引擎工作流引擎为过程实例和活动的执行提供运行环境,主要完成以下功能过程定义的实例化解释已由过程定义工具产生的需要执行的过程定义,根据过程定义和过程执行所需要的初始条件和执行参数,初始化过程执行环境。7控制活动的实例的状态转换。为过程执行导航依据过程定义和工作流相关数据来导航过程实例,如根据过程定义中的起始和结束条件启动和结束过程实例,根据活动间的关联和转移条件决定需要丌始执行的下一个或多个活动等等。与外部资源的交互工作流执行服务与外部资源的交互方式主要有两种,即活动参与者应用接口和应用程序调用接口,对于活动参与者应用接口,工作流引擎通过图中所示的工作列表管理器,基于工作列表和活动参与者进行数据交换。而对于需要调用相应应用程序、组件或WEBSERVICE自动化完成的情况,应该采用标准化的接口或中间件性质的代理方式,其中代理方式更为灵活。不同的应用只需进行相应的二次开发即可实现自动调用。维护工作流控制数据和相关数据过程实例在执行的过程中需要维护不同过程和活动实例的内部状态信息、以及工作流引擎用于协调和恢复的各种检查数据和恢复重启信息等,还包括需要向用户传递和用户输入的相关数据。5任务表管理器工作列表管理器WORKLISTHANDLER是工作流管理系统用来管理活动参与者与工作流执行服务之间交互的一个组件,它最基本的功能就是负责向用户列出需要其参与的活动和用户关心的进展中的过程实例,并负责通过工作列表与工作流执行服务进行交互。在一些更高级的系统中,工作列表的处理可能更智能化,工作列表管理器可以控制任务在具有相同角色的用户问基于负载平衡、个人能力、人员在位情况等进行分配或重分配。6用户界面用户界面是一个单独的软件组件,负责提示和处理用户对话框,并控制用户的本地接口。在某些系统中,用户界面可能会与工作列表管理器组合到一起,构成一个简单的功能实体一一客户端应用程序,可能希望一些客户端应用程序能够和几个不同的工作流服务器进行交互,从而把服务器中的任务以统一的格式通过公共用户接口提供给用户。可能会需要调用本地应用程序来辅助用户完成特殊的任务,这由工作列表管理器来负责。在工作列表管理器用户界面中调用应用程序与工作流执行软件直接调用应用程序,有明显的不同。22JAVA工作流引擎OSWORKFLOW介绍221OSWORKFLOW概述OSWORKFLOW是OPENSYMPHONY组织开发的一个用纯JAVA语言编写的工作流引8擎,并且开放源代码。它最大的特点就是十分灵活。用户可以以最小的代价把OSWORKFLOW整合到自己的程序中来【8】91。OSWORKFLOW主要基于有限状态机FINITESTATEMACHINE实现对工作流的管理。简单的说,就是在OSWORKFLOW管理下的每一个工作流实例在其生命周期中都处于一种状态STATE,每一种状态被描述成为步骤号STEPID、状态STATUS,有时还包括所有者OWNER。从一种状态STATE转移到另一种状态要通过动作ACTION,动作的执行会产生结果RESULT而导致流转TRANSITION。这些思想表现在OSWORKFLOW引擎核心包罩面。OSWORKFLOW通过一个简单的工作流描述文件来描述业务流程,帮助设计者完成过程定义,并提供了相应的API来实现对工作流实例的管理。请特别注意“STATE”和“STATUS”的区别,这两个单词的中文都被翻译成“状态”,但是在OSWORKFLOW的概念中,STATUS是描述STATE的元素。后面当我们提到“状态“时,都会加括号以区分。使用OSWORKFLOW有以下一些好处1OSWORKFLOW遵循标准的WFMC工作流参考模型架构,提供了工作流引擎和过程定义工具的功能,可以使开发者方便在此基础上实现工作流管理系统。OSWORKFLOW提供了在我们描述工作流的过程中可能会用到的各种元素,例如步骤STEP、条件CONDITIONS、循环100PS、分支SPLITS、合并JOINS、角色ROLES、函数FUNCTION等等,通过定义XML格式的流程描述文件以及调用相应的API,我们就可以在一个J2EE系统中实现工作流的过程定义、执行服务以及与用户的基本交互功能,从而实现一个基于J2EE的工作流管理系统。2业务逻辑和工作流逻辑相分离。OSWORKFLOW提供了完整的工作流引擎的实现,自动维护工作流相关数据,使得在开发过程中,用户可以根据自己的实际需求,把工作重心放在业务和规则的定义上,设计出完全符合自身业务逻辑的系统,而并不需要使用复杂的代码去实现工作流部分的逻辑。222OSWORKFLOW的工作流描述文件OSWORKFLOW的核心是工作流描述文件,它将OSWORKFLOW对工作流的描述用XML的形式表现出来,描述了针对一个特定工作流的所有的STEPS、ACTIONS、TRANSITIONS、FUNCTIONS,其意义完全对应了工作流的各个基本元素,通过对这个文件的编写,我们就可以完成特定工作流的过程定义。下面是这个XML文件的主要元素的内容模型9这个XML文件的根元素的内容模型为META宰,REGISTERS,TRIGGERFUNCTIONS,GLOBALCONDITIONS,INITIALACTIONS,GLOBALACTIONS,COMMONACTIONS,STEPS,SPLITS,JOINS其中,的子元素的内容模型为META丰,PREFUNCTIONS,EXTERNALPERMISSIONS,ACTIONS,POSTFUNCTIONS其中,的子元素的内容模型为META宰,RESTRICTTO,VALIDATORS,PREFUNCTIONS,RESULTS,POSTFUNCTIONS其中,元素的子元素的内容模型为RESULT,UNCONDITIONALRESULT从以上的内容模型中,我们能看到一个不考虑分支与合并的工作流描述文件的结构大致如下讶XML需DOCTYPEWORKFLOW国圄WORKF1OW。霉囤|照T主曼二篓_T宴煦J国圈STEPS事固STEPIDI|国囤ACTIONS嗣圈STEPID2I溺豳ACTIONS;冒圄ACTIONID2;国固RESTRICTTOLI喾圄PREFAMETIONS;国圈RESULTSL翰圜ACTIONID3霸闺RESTRICTTOI固圄PREFUNCTIONE;嗣圈RESULTS|_一圈URICONDITIONALRESULTOLDSTATUSYINISHED零围STEPID3图24OSWORKFLOW工作流描述文件结构FIGURE24STRUCTUREOFTHEWORKFLOWDESCRIPTIONFILEOFOSWORKFLOW下面是这些常用元素的意义【9】1每个流程都至少需要定义一个INITIALACTIONS,这是流程的起点。2步骤。虽然它的名称是“步骤“,其实我们将它视为“流程位置更为恰当,它相当于代表了工作流基本元素中的“活动“。每个STEP都有ID编号,且不能重复。3动作。它的执行会导致“流程状态”STATUS和STEPLD的变更,每个ACTION都LO有ID编号,且不能重复。4函数。他们通常代表游离于工作流实例自身之外的业务功能,是工作流状态逻辑和业务逻辑的接口。函数可以被定义在不同的地方,STEP中和ACTION中通常是ACTION中,本身又可以分为前置PRE和后置POST函数。下面是两个PREFCUNTION的例子STATUSFELLBACKFUNCTIONAIFELLBACK20204OPINIONFUNCTIONAIFELLBACK我们从上下文中就能看出这两个FUNCTION的大致意义,当这个ID3的ACTION执行时,OSWORKFLOW就会根据的配置,通过”BEANNAME找到SPRING配置文件中对应的FUNCTIONBEAN并运行执行其EXECUTE方法。补充说明一下,这两个BEAN的具体类都实现了OSWORKFLOW的FUNCTIONPROVIDER接口,接口的EXECUTE方法拥有两个MAP类型的参数,它们都是用来传递数据的。第一个MAP是在用户通过OSWORKFLOWAPI调用步骤时传入的,第二个MAP由OSWORKFLOW自己传入,对应包含了在该标签中配置的所有子元素。5结果。在ACTION执行后,OSWORKFLOW将参照其RESULT流转流程状态STATE,RESULT有两种,即CONDITIONALRESULT和UNCONDITIONALRESULT,每个RESULT一定有UNCONDITIONALRESULT,当CONDITIONALRESULT的条件都不满足时,就执行UNCONDITIONALRESULT。一个UNCONDITIONALRESULT通常如下可以看到,这个UNCONDITIONALRESULT清楚地说明了工作下一步将是STEP3,状态STATUS为“UNDERWAY“,OWNER为“OPERATOR”STATUS工作流在执行完某个ACTION后的状态。其值储存在表OSCURRENTSTEP的STATUS字段中。OLDSTATUS流程在执行某个ACTION后的状态。储存在表OSHISTORYSTEP的STATUS字段中。OWNER表明下一步可以执行此工作流的USER,即如果要执行下一步,需要有WORKFLOWWORKFLOWNEWBASICWORKFLOW“OPERATOR这样的代码,即在建立工作流时指定用户,也可以使用WORKFLOWSETCALLER方法。其值储存在表OSCURRENTSTEP的OWNER字段中。OSWORKFLOW会根据以上这些元素数据更新工作流的状态,以此实现工作流的“流转“。6限制。一个工作流中涉及到了许多动作,这些动作通常由具有对应权限的人员执行,其他人员是无法执行的。这就是说步骤必须有某些条件CONDITIONS来限制RESTRICT动作的执行。7条件限制和条件结果都要用到“条件”CONDITIONS。OSWORKFLOW在其UTIL包中提供若干了许多内置的条件类,如下瀚公ALLOWOVTNEROFSTEPCONDITIONCLASS窜硷A110TOVMERONLYCONDITIONCLASS黟协DENYOWAARCONDITIONCLASS交珏ISUSEROWNERCONDITIONCLASS审公OSUSEROROUPCONDITIONCLASS宙禽STATUSCONDITIONCLASS图25OSWORKFLOW的内置条件类FIGURE25DEFAULTCONDITIONCLASSESOFOSWORKFLOW通过配置文件描述中元素的设置,我们可以比较容易的使用这些类。下面是一个的例子COMOPENSYMPHONYWORKFLOWUTILSTATUSCONDITIONUNDERWAY12COMOPENSYMPHONYWORKFLOWUTILALLOWOWNERONLYCONDITION以上配置的意义是显而易见的,即只有在当前工作流的STATUS是“UNDERWAY”并且OWNER匹配API中的设定时,才能执行这个ACTION。STATUS和OWNER数据库表OSCURRENTSTEP中记录当前工作流状态的字段,下面会马上提到。23OSWORKFLOW的工作方式为了全面领会OSWORKFLOW,较为全面地掌握OSWORKFLOW的特性,就必须结合它的主要API,理解组成OSWORKFLOW的基本概念之间的关系以及运作机制。231数据库支持下的状态机制OSWORKFLOW为我们提供了一套完整的基于有限状态机的工作流逻辑的表述与实现方式,并通过FUNCTIONS与所嵌入系统的业务逻辑结合,为了实现有限状态机,OSWORKFLOW需要数据库支持以维护工作流实例的相关数据,包括工作流入口、状态STATE,当前工作流步骤STEP_ID、状态STATUS,历史步骤、状态STATUS等等。这些数据被储存在相应的数据表中,主要有如下几个OS_WFENTRY记录各个工作流实例的名称。表结构如下NAMETYPELENGTHDECIMALSALLOWNULIIDBIGINT200囵NAMEVARCHAR600阐STATEINT1I;0阐OS_CURRENTSTEP具体信息。OS_HISTORYSTEP图26OS_WFENTRY表结构FIGURE26STRUCTUREOFTABLEOS_WFENTRY记录各个工作流实例当前执行到的步骤的当前状态STATE的记录各个工作流实例执行过的步骤的历史状态STATE的具体13信息。以上两张表具有相同的结构,如下图27OS_CURRENTHISTORYSTEP表结构FIGURE27STRUCTUREOFTABLEOS_CURRENTHISTORYSTEP下面是表结构中几个主要字段的意义ENTRYID是外键,参考OSWFENTRY的主键。STEPID表明了工作流实例当前执行到了哪个步骤,只有属于当前步骤的ACTION才能被OSWORKFLOW的API合法调用。OWNER指当前步骤的合法调用者,通常结合配置文件中设置的以及在API中设置的调用者来判断当前调用是否合法。OSCURRENTSTEP表中的OWNER字段的值与标签的“OWNER”属性值对应。配置数据库的相关内容我们将在后面介绍。232工作流实例化与操作这里我们必须首先明确,所谓的“工作流实例”并非某个代表工作流的JAVA类的实例,OSWORKFLOW没有提供这样的类。“工作流实例“实际上是通过OSWORKFLOW的API来产生和逐步执行的,OSWORKFLOW会根据工作流描述文件在对应的数据库的各张表中参考上一节插入和修改相应的记录,以此来代表一个工作流实例并记录其相应的状态。OSWORKFLOW提供了COMOPENSYMPHONYWORKFLOWWORKFLOW接口及其实现类,用于管理工作流实例。我们可以以如下的方式构造这些管理类的实例WORKFLOWWFNQWBASICWORKFLOW”USERNAME”7上面的参数“USEMAME”指明了当前的使用者CALLER。我们经常使用工作流配置文件中的“条件标签,用ALLOWOWNERONLYCONDITION配合CALLER来判断当前调用者是否可以合法执行某个动作。具体可见332节最后的例子。在新建了WORKFLOW类的实例后,我们可以用其新建并初始化在配置文件中定14义好了的工作流,或者执行已存在的工作流实例。1新建并初始化LONGWFIDWFINITIALIZE”WFNAME”,ACTIONID,PARAMMAP;参数WFNAME是要执行的工作流的名称,这个名称是在0SWORKFLOW的配置文件WORKFLOWSXML中指定的,参数ACTIONID是工作流描述文件中元素的某个子元素的ID属性值,在在执行了INITIALIZE方法后,表OSWFENTRY新增一条表示这条工作流实例的记录。表OSPURRENTSTEP中也将新增一条记录,记录当前工作流实例的具体状态STATE信息如STEP、_IDSTATUSOWNER等,其ENTRYID字段是外键,对应表OSWFENTRY中新增的记录。2执行已存在的工作流WFDOACTIONWFID,ACTIONID,PARAMMAP;参数WFLD是OSWFENTRY中某条记录的ID,参数ACTIONLD是工作流描述文件中元素的某个子元素的ID属性值,这条语句意思很明确,就是“执行指定工作流实例的某个动作“。在执行了DOAETION方法后,0SWORKFLOW会根据执行ACTION的更新表OS中属于这个工作流的具体状态_CURRENTSTEPSTATE信息包括STEP、等等、并把更新前的数据作为新纪录插入IDSTATUSOWNEROS,并把字段改为中的“一“。这个过程实际HISTORYSTCPSTATUSOLDSTATUS上就代表了工作流的流转3关于“PARAMMAP“我们注意到上面的INITIALIZE方法和DOACTION方法都的第三个参数比较特殊,实际上这是一个MAP类型的参数,如果在运行过程中有FUNCTION参与,这个MAP会被传递到FUNCTION的EXECUTE方法的第一个参数。所以我们可用PARAMMAP来传递业务数据,这是非常有用的。24OSWORKFLOW与SSH的整合241SSH概述“SSH“即STRUTS2、SPNNG与HIBERNATE,当前十分流行并且成熟的3个J2EE开源框架。其实,就JAVA目前出现的这些框架而言,其最终目的都是为了解除耦合,不论是SPRING、HIBERNATE或STRUTS2,其目的都是为了解除耦合增加复用。STRUTS2实现了基于MVC思想的解耦,使系统具有良好的总体架构;SPNNG实现了基于IOC控制反转思想的解耦,使系统更容易符合“依赖倒置“的OO设计原则并易于整合其他框架;HIBERNATE实现了基于01MAPPING思想的解耦,以15OO的思想将JAVA域模型与数据库中的关系模型对应起来,极大简化了数据库访问代码的编写。整合SSH框架的方法是以SPRING核心容器为中心,运用其控制反转的特性对STRUTS2和HIBERNATE所需要的BEAN进行配置管理。鉴于目前这方面的资料已经非常丰富,做法也较为统一,我们对此不做介绍。并在接下来的讨论中假设目前已经有了基础的SSH架构的系统。OSWORKFLOW也可以比较容易地同SPRING容器整合到一起,这样做的优势是,OSWORKFLOW可以作为一个”钩子HOOK”渗透到容器中,并且很容易地得到依赖解析,组件装配,还有生命周期管理的支持。242整合中所需的类以下是将0SWORKFLOW整合到SPRING中所需的组件1SPRINGHIBERNATEWORKFLOWSTORE,用于配置0SWORKFLOW所需的数据源。让工作流程实例如果需要的话分享当前事务。2SPRINGWORKFLOWFACTORY,这是一个XMLWORKFLOWFACTORY封装包,它可以允许从容器中注入CONFIGURATION,从而不再从其它的XML配置文件中读取它们。3SPRINGCONFIGURATION,这是一个WORKFLOWCONFIGURATION接口的实现类,它包含指向STORE和FACTORY的引用,这样可以在SPRING中注射或者连接。4SPRINGTYPERESOLVER,允许OSWORKFLOW从SPNNGAPPLICATIONCONTEXT中获得业务逻辑组件CONDITIONS,FUNCTIONS等等。以上这四个类确保OSWORKFLOW紧密地整合到SPRINGFRAMEWORK中去。243SPRING配置文件写法通常我们可以将工作流的相关BEAN单独写在一个SPRING配置文件里边。首先必须为WORKFLOW实例配置一个STORE,OSWORKFLOW将通过这个STORE与数据库交互,实现有限状态机。另外还必须配置一个读取工作流配置文件的FACTORY,如下16WORKFLOWSXML上面的配置中的“SESSIONFACTORY就是之前配置好的HIBERNATE的SESSIONFACTORYBCAN“WORKFLOWSXML”就是于类路径下。基本结构如下指明OSWORKFLOW工作流描述文件的配置文件,放置其中的W也XML就是一个工作流描述文件。“NBLLE“属性指定了该工作流的实例在OS_WFENTRY表中NAME字段的值。定义这两个BEAN之后,我们可以定如果需要,可以配置SPRINGTYPERESOLVER,允许OSWORKFLOW使用SPRING管理的BEAN来作为业务逻辑17如果不需要拦截器,这个文件就算定义完成了,OSWORKFLOW可以和SPRING一起被使用了。244HIBERNATE配置相关为了让OSWORKFLOW能通过HIBERNATE访问数据库,我们还必须为其提供相应的HIBERNATE映射类以对应数据库中的OSWORKFLOW相关的表。所以我们必须在HIBERNATESESSIONFACTORY的配置罩边加上对应的MAPPINGRESOURCES,如下COMOPENSYMPHONYWORKFLOWSPISPRINGHIBERNATE3HIBERNATEWORKFLOWEN七RYHBMXMLCOMOPENSYMPHONYWORKFLOWSPISPRINGHIBERNATE3一HIBERNATECURRENTSTEPHBMXMLCOMOPENSYMPHONYWORKFLOWSPISPRINGHIBERNATE3HIBERNATEHISTORYSTEPHBMXMLCOMOPENSYMPHONYMODULEPROPERTYSETSPRINGHIBERNATE318PROPERTYSETITEMHBMXML25本章小结本章首先讲述了工作流和工作流管理系统的基础知识,包括工作流的定义、基本元素,工作流管理系统的定义,然后详细阐述了工作流管理系统体系结构的组成和主要部分的功能。之后介绍了JAVA开源工作流引擎OSWORKFLOW,讲述了OSWORKFLOW的基本原理、优点,然后分析了XML格式的工作流描述文件的基本结构和配置方法。同时也展现了OSWORKFLOW通过配置文件和数据库表管理工作流实例的方式。最后讲述了OSWORKFLOW与流行的J2EE轻量级框架SSH的整合方法。193联通SPOA系统“违约处理”业务需求及分析31SOPA系统概述311项目背景SPOA中文名称是“中国联通增值业务SP合作受理管理系统”,其中的“SP“是指SERVICEPROVIDER,即无线增值业务服务提供商。该系统根据中国联通无线增值业务合作管理办法制定,其建设目的是实现中国联通增值业务部对其SP及SP所提供的增值业务的电子化管理,实现了包括合同签署、投诉违约处理及信用体系管理等业务流程的“全生命周期式“管理,规范了管理方式、提高了管理效率、整合了管理数据,为合作政策的制定、执行提供了基于完整、准确数据的统计分析支持,并增强了合作伙伴的满意度。在加强中国联通无线增值业务合作管理,繁荣增值业务市场、规范经营行为、提高合作效率、优化配置合作资源、确保服务质量,促进无线增值产业健康持续发展等方面起到了积极的作用。随着增值业务市场的R趋成熟、产业的不断壮大,以及增值业务在新兴技术领域的持续发展和不断丌拓,相应的业务规范和管理办法也在不断进行调整,以满足对新业务丌展的支持,SPOA系统也随之变化与调整。目前此系统已进入第三期工程的开发。本期工程的目标是满足用统一系统实现总部和省分公司两级管理全网和本地合作,以达到规范统一、数据统一、监督统一,并按照新的合作管理政策的需要对系统进行改造,以支持该政策的实施。具体包括对SP的接入管理、合同管理、信用管理、违约投诉管理等。具体的工作包括1对原SPOA进行两级管理改造,在一套统一的系统中实现总部管理中心和31个虚拟省中心,总部和省份间建设系统内部接口以自动完成业务数据和管理数据的采集和下发,实现总部对全国增值业务的统一监督、统一分析。2建设系统对外的标准数据接口,以支持对省分本地自建SP合作受理管理平台的有效接入。3对SPOA进行系统功能改造,以支持新的合作管理政策的实施,包括按SPCPAPIS四种模式进行合作管理,调整系统流程设置及相应的违约和信用管理体系,加强全局统计分析功能等。4针对新业务需求实现结算管理、全网违约处理、综合查询、全网信息发布等功能。20312系统关系如下图所示,SPOA三期系统将建设成为包括面向总部全网合作管理和面向31个省分本地合作管理的统一系统。理人员心人员一遥矽图31SPOA系统总部和分省的系统关系FIGURE31TLLEHEADQUARTERSANDPROFINCEPARTSOFSPOASYSTEM总部服务中心人员可以通过总部管理中心对全网SP的合作进行受理,总部合作管理人员能够通过总部管理中心对全网及各省的合作情况进行监督和统计;各省管理人员可以通过本省省中心对本地SP的合作进行受理,同时也能获得总部全网SP的合作情况和相关管理规范通报。各省省中心通过在总部SPOA系统中统一建设的方式实现,因此称为虚拟省中心如上图中的A省和B省的省中心。考虑到各省对数据本地存储和利用的要求不尽相同,SPOA系统也支持将某个省中心部署在该省当地符合条件的PC服务器上,作为物理省中心存在。同时,对于已经自建SP合作受理管理系统自建省中心并且经总部同意可以使用本地自建省中心的省分,SPOA在总部提供与其对应的虚拟省数据中心,并通过标准化的虚拟省数据接口与该省自建省中心同步数据,以尽可能地实现总部对自建省数据的统一采集、监督和分析。同时,SPOA作为独立于生产环节之外的离线合作办公系统,在今后可以与BSS等在线业务系统实现对接统一。21313逻辑结构系统建设符合分层分模块原则。在数据层实现各独立数据库视图,以支持物理省中心的独立部署,并为今后系统扩建满足省分个性化管理需求提供基础架构。其逻辑结构如下I摘蔓磊蔷、否芰运弄亩、I飞否蔓运养孟、表示罢统一管理框架,、,、接R商业模式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论