




已阅读5页,还剩48页未读, 继续免费阅读
(计算机科学与技术专业论文)基于有限状态机的工作流引擎的设计和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示了谢意。 申请学位论 本人签名: 实之处,本人承担一切相关责任。 日期:竺! :兰! 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释:本学位 本人签名: 导师签名: 适用本授权书。 2 日期:妒l 、门- 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 基于有限状态机的工作流引擎的设计和实现 摘要 工作流是自动运行的业务过程,是经营过程的一个计算机实现,而工作流管 理系统则是这个实现的软件环境。企业应用工作流可以达到提高工作效率、降低 生产成本、提高企业生产经营管理水平和竞争力的目标。 论文首先介绍工作流的基本概念、相关规范和参考模型等相关理论,在此基 础上,提出基于有限状态机的工作流模型,该工作流模型根据业务过程的特点, 建立业务实体的有限状态机模型,通过接受的事件和状态机的当前状态来推动状 态机在各个状态之间转移,以此来控制业务流转。这种建模方式极大地降低了业 务建模的复杂度,适用于处理复杂多变的业务过程,有效地解决了现有工作流模 型在实际应用中的诸多问题。 在介绍工作流模型的基础上,论文重点研究了基于有限状态机的工作流引 擎,该工作流引擎运行于j 2 e e 环境中,以关系数据库支撑,采用状态机的思想进 行过程和活动的调度。在具体实现时,采用b e a n s h e l l 脚本解释技术负责条件解 析。采用q u a r t z 作业调度组件进行自动活动的处理,处理采用异步方式,有效地 提高了工作流引擎服务器的性能。论文将给出各个模块的设计和实现方案。 最后,论文介绍设计的工作流引擎与实际的业务系统如何结合的问题,并且 给出一个应用实例。 关键词:工作流模型工作流引擎有限状态机b e a n s h e l l 脚本解析 4 北京邮电大学研塞生望些丝奎二茎王查里鉴查墼塑三堡鎏! ! 兰堕望盐塑塞墨 一 - _ - _ i - _ _ - _ _ _ _ _ _ - _ _ _ _ _ _ - _ - _ i _ - _ - _ - i - 一一一 。 t h ed e s i g na n dr e a l i z a t i o no ft h ew o r k f l o w e n g i n e b a s eo nt h ef i n i t es t a t em a c h i n e a b s t r a c t w o r k f l o wi sab u s i n e s sp r o c e s st h a te x e c u t e sa u t o m a t i c a l l y , a n dac o m p u t e r r e a l i z a t i o no fb u s i n e s sp r o c e s s t h ew o r k f l o wm a n a g e m e n ts y s t e mi s t h es o f t w a r e a 口咖n m e i l to ft h i sr e a l i z a t i o n t h ee n t e r p r i s ea p p l i n gw o r k f l o wc a nr a i s et h ew o r k e f f i c i e n c y , l o w e rp r o d u c t i o nc o s t ;r a i s et h em a n a g e m e n tl e v e l a n ds t r e n g t h e nt h e c o m p e t i t i o na b i l i t y t h ep a p e rf i r s ti n t r o d u c e sb a s i cc o n c e p t , r e l a t e ds t a n d a r da n dr e f e r e n c em o d e lo f t h ew o r k f l o w , i nt h i sf o u n d a t i o n ,p r o p o s eaw o r k f l o wm o d e lb a s e o nf i n i t es t a t e m a c h i n e ( f s m ) t h i sw o r k f l o wm o d e lb u i l du pt h ef s m m o d e lo fb u s i n e s se n t i t y a c c o r d i n gt ot h ec h a r a c t e r i s t i c so f t h eb u s i n e s sp r o c e s s , p u s hf s mo fb u s i n e s st r a n s f e rb e t w e e n e a c hs t a t et h r o u g ht h ea f f a i r sa c e p t e da n dt h ec u r r e n ts t a t eo ff s m ,a n dc o n t r o lt h eb u s i n e s sb y t h i s t h i sm o d e ll o w e rt h ec o m p l e x i t yo fb u i l d i n gu pp r o c e s s m o d e l ,i ss u i t a b l ef o r t h e c o m p l e xb u s i n e s sl o g i c ,s o l v em a n yp r o b l e m so fa p p l y i n gw o r f l o we f f e c t i v e l y b a s eo nt h ei n t r o d u t i o no fw o r k f l o wm o d e l ,t h ep a p e r w i l li n t r o d u c et h ew o r k f l o w e n g i n eb a s eo nf s m t h i sw o r k f l o we n g i n er u ni nt h ej 2 e ee n v i r o n m e n t ,n e e d i n g r e l a t i o n a ld a t a b a s es u p p o r t ,a n da d o p tf s ma l g o r i t h mt os c h e d d et h ep r o c e s sa n d a c t i v i t y ,u s eb e a n s h e l ls c r i p ta n a l y s i st e c h n o l o g y t oa n a l y z et h ec o n d i t i o n ,a n du s et h e q u a r t zj o bs c h e d u l i n gm o d u l et oc a r r yo na u t o m a t i ca c t i v ea c i t i v i t y , p r o c e s s i n ga d o p t t h ea s y n c h r o n o u sm o d e ,e n h a n c e dt h ep e r f o r m a n c eo ft h ew o r k f l o we n g i n e s e r v e r e f f e c t i v e l y ,t h ep a p e rw i l lg i v et h ed e s i g na n d r e a l i z a t i o np l a no fe a c hm o l d u l e f i n a l l y , t h ep a p e ri n t r o d u c et h ei n t e g r a t i o no ft h ew o r k f l o we n g i n ea n d t h ea c t u a l b u s i n e s ss y s t e m ,a n dg i v ea l la p p l i c a t i o ne x a m p l e k e yw o r d s :w e r k f i o wm o d e iw o r k f l o we n g i n o f i n i t es t a t em a c h i n o b e a n s h e i is c r i p ta n a l y s i s 6 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 第一章绪论 1 1 工作流及工作流管理系统 工作流的概念起源于生产组织和办公领域,它是针对工作中具有固定程序 的常规活动而提出的一个概念。提出的目的是通过将工作分解成定义良好的任务, 按照一定的过程和规则来执行这些任务并且监控,以达到提高工作效率、降低生 产成本、提高企业生产经营管理水平和企业竞争力的目标。在计算机网络技术和 分布式数据库技术迅速发展、多机协同工作技术日益成熟的基础上,于2 0 世纪 8 0 年代中期发展起来的工作流技术为企业更好的实现经营目标提供了先进的手 段。工作流技术一出现就得到了广泛的重视和研究,至今工作流技术已经运用到 了图书馆、银行、工业制造领域。 工作流管理乜1 的目的是根据预定目标,找到合适的方法和手段来优化工作流 程,其在企业的应用会给企业带来巨大的效益。采用工作流管理将使企业改变传 统的按照功能来配置人员组织结构的思想,变成按照企业要实现的主要业务流程 来配置组织结构,这样可以大大缩短主要业务的处理时间,提高对市场的响应能 力,组织结构的改变将大大减少在企业内的不必要的物料、信息传递时间。工作 流技术综合了计算机科学和管理科学等诸多领域的原理、方法和技术。近年来, 企业对过程建模、b r p 工具、敏捷制造、并行工程的需求为工作流技术的运用提 供了一个广阔的市场,使工作流产品得以迅速发展。虽然目前得工作流产品还存 在诸多问题,但随着工作流技术的进一步发展,它必将在提高了企业的竞争力、 使企业更好地适应市场变化等方面起到举足轻重的作用。 工作流管理系统【3 】是以规格化的流程描述作为输入的软件组件,它维护流程 的运行状态,并在人和应用之间分派活动,推进工作流实例的执行,监控工作流 的运行状态。它可以描述不同覆盖范围和不同时间跨度的经营过程,根据经营过 程以及组成活动的复杂程度,工作流管理系统可以采取多种实施方式。在不同实 施方式中,所应用的信息技术、通信技术和支撑系统结构会有很大的差别,工作 流管理系统的实际运行环境可以在一个工作组内部,也可以在全企业所有业务部 门。 工作流管理系统在实际系统中的应用一般分为三个阶段:模型建立阶段、模 型实例化阶段和模型执行阶段。在模型建立阶段,通过利用工作流建模工具,完 成企业经营过程模型的建立,将企业的实际经营过程转化为计算机可处理的工作 流模型。模型实例化阶段完成为每个过程设定运行所需的参数,并分配每个活动 l o 北京邮电大学研究生毕业论文基于有限状态机的工作流引擎的设计和实现 执行所需要的资源。模型执行阶段完成经营过程的执行,在这一过程中,重要的 任务是完成人机交互和应用的执行,下图为典型的工作流管理系统结构图: 1 3 论文背景 厂、 ,、 。j 图卜1 工作流管理系统图 要澜 豸霪缀。, ;鬻鬻荔鬻 f 蒜南一一j 囊 ? ;:誊豢? 重7 懑 o m 噼自2 e b r 焉囊燃i 鬻缵鬟雾缓 k _ 坶_ 斛口 现在流行的工作流系统存在很多问题,给企业应用工作流带来了很大的局限 性,主要有: 表达不够直观:例如基于p e t r i n e t 的建模方法,由于图形元素较多,建 模方式复杂,即使是专业的建模人员掌握起来也不太容易。 组织模型单一:单一的基于角色的权限模型难以适用于企业的复杂组织 &蝌麴复&窝峰 舅叔t高一 l ,。塑 藿 霉l; 藿 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 结构 兼容性不好:在j 2 e e 广泛应用的今天,很多企业已经有了自己的应用, 在应用工作流系统时不能够很好的兼容这些已有的功能和组件。 监控粒度不够:国内企业在应用工作流系统时,非常重视工作流系统的 监控粒度,但是很多工作流产品只专注于流程的流转,不关注监控。 针对这些问题,本课题结合e 5 工作流开发平台项目研究如何用有限状态机 的思想去建立工作流模型,这个工作流模型在业务建模阶段将有效的解决上述问 题,然后基于这个模型研究工作流引擎的设计和实现。本课题提出的工作流模型 和基于其上的工作流引擎将主要面向媒体办公领域,同时也为其他领域应用工作 流系统提供了一个参考方案。 1 4 论文主要工作 论文主要进行了以下几个方面的工作: l 、工作流相关理论、规范的学习、总结。 首先是对工作流、工作流管理系统的基本概念的学习,然后研究工作流相关 规范、重点对x p d l 规范和w f m c 参考模型进行了研究,为后一个阶段的工作 流模型设计和工作流引擎的设计和实现提供了理论基础。 2 、对工作流建模理论进行研究,参与工作流模型的设计。 研究了目前主要的建模理论,并且对各个建模理论的优缺点进行了比较,在 此基础,根据业务需求特点,提出用有限状态机来进行业务建模,参与模型各个 实体的设计和讨论。 3 、工作流开源引擎研究,设计和实现了基于有限状态机的工作流引擎。 首先研究学习工作流引擎的设计和实现方式,对o b e 、o s w o r k f l o w 等 开源工作流引擎的结构和实现进行了学习。在此基础上,根据提出的模型的特点, 确立工作流引擎的设计目标和原则,最后搭建开发环境,实现工作流引擎。 4 、对理论以及实践的总结。 对理论研究和实践工作流进行总结,确立下一步的研究和学习方向。 1 5 论文结构 本论文组织如下: 第一章绪论介绍工作流、工作流管理系统的基本概念、课题开展的背景和 课题研究的主要工作。 第二章论文关键技术介绍工作流相关规范、工作流参考模型以及课题实践 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 要用到的相关技术。 第三章工作流模型与工作流引擎设计介绍模型与引擎的设计。 第四章工作流引擎实现与应用重点介绍工作流引擎的实现。 第五章总结总结论文开题以来所做的工作和今后的研究计划。 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 第二章论文关键技术 2 1 工作流及工作流引擎 2 1 1 工作流规范 由于对工作流基本概念的共识较少,工作流本身的概念会和其他相关概念和 技术混淆在一起,并且它的应用又千差万别,所以各个组织和生产厂商相继推出 了一系列规范,这些规范之间相互重叠,又都有自己的优势和劣势,没有标准被 大范围的采用,所以整个工作流标准还处于制定阶段,下面将介绍几个比较有代 表性的规范和标准。 x p d l :w m f c ( 工作流管理联盟) 在1 9 9 3 年成立之后,颁布了一系列工 作流管理系统相关标准和技术规范,包括工作流术语表、工作流参考模型、工作 流管理系统各部分间协作的五个接口规格、工作流产品的互操作性标准等。其中 接e 1 一早期的标准为w p d l ( w o r k f l o wp r o c e s sd e f i r f i t i o nl a n g u a g e ) ,后来这一 接口的规范变更为x p d l ( x m lp r o c e s sd e f i n i t i o nl a n g u a g e ) 。x p d l 是至今工 作流领域最为重要的一个标准,目前很多工作流引擎是依据该标准设计开发的。 b p m l t 4 】:b p m i ( b u s i n e s sp r o c e s sm a n a g e m e n ti n i t i a t i v e ,业务流程管理促 进会) 一直在积极推动b p m 的标准化。它的目标是使各种类型以及不同行业的 公司都可以跨越i n t e m e t 、透过防火墙开发与操作涉及多个业务伙伴和应用的业 务流程,通过建立流程设计、部署、执行、管理和优化的相关标准来促进b p m 的发展。b p m i o r g 依l j 定了许多开放标准,如业务流程建模语言b p m l ( b u s i n e s s p r o c e s sm o d e l i n gl a n g u a g e ) 、业务流程查询语言b p q l ( b u s i n e s sp r o c e s sq u e r y l a n g u a g e ) 、业务流程建模标注b p m n ( b u s i n e s sp r o c e s sm o d e l i n gn o t a t i o n ) 等。 b p m i 和w f m c 在2 0 0 2 年6 月2 6 同宣布将合作制定业务流程和工作流标准,采用 b p m l 来描述工作流过程,同时采用x p d l 所定义的工作流模型。 b p e l 5 j :2 0 0 2 年8 月9 日,m i c r o s o f t 、 b e a 、i b m 、s a p & s i e b e l 联合提 交发布了b p e l 规范。2 0 0 3 年4 y j b p e l 规范提交给7 o a s i s ( o r g a n i z a t i o nf o rt h e a d v a n c e m e n to fs t r u c t u r e di n f o r m a t i o ns t a n d a r d s ,结构化信息标准促进组织) 更 名为w s b p e l ( w e bs e r v i c e sb u s i n e s sp r o c e s se x e c u t i o nla n g u a g e ) 规范, s u n m i c r o s y s t e m s 和甲骨文公司也相继加入t o a s i s 组织。此规范描述如何处理输入 的消息,它不是一个关于业务流程规格化定义的规范。简单的说,可以将它看作 1 4 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 x m l 形式的编程语言,提供将w s d l s e r v i c e s 组合成控制流的能力。 除了上述三个主要的规范以外还有,o m g 、w s c i 、w s f l 等规范,在此就 不在赘述。工作流规范的制定主要是为了一致化流程定义,解决不同应用系统之 间业务流程互通的问题。虽然整个工作流领域还没有一个统一完整的规范,但是 上述规范的提出从一定程度上解决了业务流程的相互协作问题:遵守同一个规范 的工作流系统可以比较容易的实现流程互通。另外,即使某些具体的工作流应用 没有遵循上述任何规范,它仍然在整个工作流技术的研究、实践等方面具有指导 意义。 2 1 2 工作流参考模型 在上- d , 节提出的工作流规范中,w f m c 提出的工作流管理系统参考模型 被广泛研究和应用,如下图所示: 图2 - 1 工作流管理系统参考模型图 上图是w f m c 提出的工作流管理系统参考模型【6 】包括5 个接口和1 个核心 引擎,其中各个接口的具体含义如下: i n t e r f a c e l ( 接口1 ) :工作流定义接口,为用户提供一种可视化的,可以对 实际业务进行建模的工具,并生成业务过程的可被计算机处理的形式化描述。此 接口的规范有w p d l 、x p d l 、b p e l ( b p m 定义规范) 大多数的工作流产品都 实现了此接口。 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 i n t e r f a c e 2 ( 接口2 ) :工作流客户应用接口,它给用户提供一种手段,以处 理流程运行过程中需要人工干预的任务( 实际上就是工作项w o r k i t e m ) 。t 作流 管理系统负责维护这个工作项列表。 i n t e r f a c e 3 ( 接口3 ) :工作流调用应用接口,工作流引擎调用外部业务应用 的规范,例如在流程执行的过程中去调用业务系统提供的接口处理业务数据等。 此接口各个工作流产品实现的不尽相同,它和具体的工作流产品的实现语言和架 构相关。目前大部分工作流产品可以支持对j a v a b e a n 的调用,对w e b s e r v i e e 的 调用( 通过w e b s e r v i c e 技术可以调用任何异构的,不同语言实现的业务应用) , 对x m lb e a n 的事件调用,对s p r i n gb e a n 的调用等。 i n t e r f a c e 4 ( 接口4 ) - 工作流引擎协作接口,是不同的工作流引擎之间进行 协作的接口规范,此接口w f m c 定义的不是很详细,不同厂商的工作流引擎直 接进行协作也存在大量的困难,因此实现此接口规范的工作流引擎产品也极少。 i n t e r f a c e 5 ( 接口5 ) :管理监控接口,其功能是对工作流管理系统中所有实 例的状态进行监控与管理,如组织机构管理、实例监控管理、统计分析管理、资 源控制等。 w o r k f l o we n g i n e ( i 作流引擎) 是工作流管理系统的核心,负责实例化流程定 义,根据流程定义驱动业务流程的运行,根据定义及运行时的动态信息计算任务分 配条件。 2 1 3 工作流引擎 2 1 3 1 主要功能 工作流引掣7 】是工作流管理系统的中枢,实现工作流模型解释识别并转换为 自定义模型,为工作流实例提供运行时的执行环境,其功能包括: 解释过程定义。 控制过程实例的创建、激活、挂起、终止。 为过程的活动导航,一般包含顺序或平行的操作、最后时间期限。 对工作流相关数据进行解释。 参与者签名和退出。 确定任务项目,实现用户意图,提供接口,支持用户交互。 维护工作流控制和工作流相关数据,在应用程序间或用户问传递工作流 相关数据。 提供调用外部程序的接口,连接所有工作流相关数据。 提供控制、管理和审查功能。 1 6 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 2 1 3 2 引擎关注的主要问题 根据前面提到的工作流引擎需要实现的功能,将实现工作流引擎需要关注 的主要问题整理如下: ( 1 ) 流程定义问题:这里的流程定义问题不是如何图形化的定义流程,而是 如何用一套定义对象,来诠释所定义的流程。工作流引擎本身就是一种基于模型 的组件,流程实例的执行都是依赖于所定义的“流程定义”,而工作流引擎则是 提供了这样一种环境,来维持流程实例的运行。所以工作流引擎,必须提供一套 定义对象来描述“流程定义”,并且这些定义对象必须反映出一种模型。 ( 2 ) 流程调度问题:提供什么的机制,可以确保流程能够处理复杂的流程图 结构,诸如串行、并行、分支、聚合等等,并在这复杂结构中确保流程从一个节 点运行到另一个节点。引擎的另一个重要功能,就是保证流程实例准确的从一个 节点运行到另一个节点,而这需要依赖于一套调度机制。引擎的调度机制有很多 种实现方法,大部分与所依赖的模型有关。 ( 3 ) 流程执行问题:当流程运行到某个节点的时候,需要一套机制来解决是 否执行此节点、如何执行此节点的问题,如何维护节点状态生命周期的问题。经 过引擎的调度,实例运行到某个节点了,此时必须提供一套机制,来判断当前节 点是否可执行,如果可执行,那么需要提供一套r u n t i m ee n v r i o m e n t ( 运行时环 境) 来执行节点,这就是引擎的执行机制。复杂的流程引擎会依赖于流程实例状 态或活动实例状态的约束和变迁来进行处理。 ( 4 ) 流程实例对象:需要一整套流程实例对象来描述流程实例运行的状态和 结果。一个流程实例,必须维护一套属于自己的运行环境和数据,这是实例对象 的责任。基本上实例对象会包含如下信息:1 、与流程实例的状态或控制信息。2 、 活动实例的状态或控制信息。如果某些引擎不支持活动实例,那么必然会有某些 其他实例信息,可以维护当前节点的状态或控制信息。3 、一些临时的执行信息, 便于引擎针对某种情况进行处理。 2 2 论文实现技术 论文的主要实践工作是实现一个基于有限状态机的工作流引擎,其中工作流 相关条件的解析和流程、活动的调度是实现工作流引擎的重要一环。论文实现的 工作流引擎基于b e a n s h e l l 组件完成条件解析功能,基于q u a r t z 组件完成过程、活 动的调度,下面分别介绍这两种技术。 1 7 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 2 2 1b e a n s h e l l 条件解析 b e a n s h e l l 是一个小型的、可嵌入式的、具有面向对象脚本语言特性的j a v a 代 码解释器,是用j a v a 语言实现的。它能执行标准的j a v a 语句和表达式,还自带简 单的脚本命令和语法。它把编程对象当成一个简单的方法,这很像p e r l 和 j a v a s c r i p t 。可以在写j a v a 测试或调试时使用b e a n s h e l l ,也可以用它作为应用程序 的脚本引挚。总之,b e a n s h e l l 可以动态的解释j a v a 语言。 b e a n s h e l l 在许多方面对于j a v a 的用处就像t c l t k 对于c 的用处一样。 b e a n s h e l l 是可嵌入式的,可以在运行时从应用程序调用b e a n s h e l l 去动态的执行 j a v a 代码或是为应用程序提供脚本扩展。相反,也可以从b e a n s h e l l 调用应用程序 及其对象,它可以让j a v a 对象和a p i 动态运行。正因为b e a n s h e l l 是用j a v a 实现 的,所以它可以和应用程序运行在同一个j v m 空间内,也可以自由的传递实时对 象的参照( r e f e r e n c e s ) 至u 脚本代码中并且作为结果返回。 在实现工作流引擎时需要用到条件判断,比如开始条件,结束条件,转移条 件,这些条件如果用j a v a 代码来写会比较方便,通过b e a n s h e l l 可以对j a v a 代码片 段进行解析,得到结果。 2 2 2q u a r t z 作业调度 q u a r t z 是一个开源的作业调度框架,它完全由j a v a 写成,并设计用于j 2 s e 和 j 2 e e 应用中。它提供了巨大的灵活性而不牺牲简单性,能够用它来为执行一个 作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持、集群、插件、 e j b 作业预构建、j a v a m a i l 、支持c t o n 1 i k e 表达式等等。课题研究的工作流引擎将 使用q u a r t z 的作业调度实现自动活动的执行和流程的定时启动等功能,下面介绍 q u a r t z 的原理和使用方法。 q u a r t z 调度器 q u a r t z 框架的核心是调度器。调度器负责管理q u m z 应用运行时环境。调度 器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。q u m z 不仅 仅是线程和线程管理。为确保可伸缩性,q u m z 采用了基于多线程的架构。启动 时,框架初始化一套w o r k e r 线程,这套线程被调度器用来执行预定的作业,这就 是q u a r t z 怎样能并发运行多个作业的原理。q u a r t z 依赖一套松耦合的线程池管理 部件来管理线程环境。 1 8 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 作业 用q u a r t z 的术语来讲,作业是一个执行任务的简单j a v a 类。任务可以是任何 j a v a 代码。只需实现o r g q u a r t z j o b 接1 2 并且在出现严重错误情况下抛出 j o b e x e c u t i o n e x c e p t i o n 异常即可。j o b 接口包含唯一的一个方法e x e c u t e ( ) ,作业从 这里开始执行。一旦实现 j o b 接1 2 1 和e x e c u t e ( ) 方法,当q u a r t z 确定该是作业运行 的时候,它将调用实现的作业,e x e c u t e ( ) 方法内就完全是要实现的逻辑。 有效作业存储 作业一旦被调度,调度器需要记住并且跟踪作业和它们的执行次数,q u a r t z 通过一个称之为作业存储( j o b s t o r e ) 的概念来做作业存储和管理。它提供两种 基本作业存储类型,第一种类型叫做r a m j o b s t o r e ,利用通常的内存来持久化调 度程序信息。这种作业存储类型最容易配置、构造和运行。对许多应用来说,这 种作业存储已经足够了。然而,因为调度程序信息是存储在被分配给j v m 的内存 里面,所以,当应用程序停止运行时,所有调度信息将被丢失。如果需要在重新 启动之间持久化调度信息,则将需要第二种类型的作业存储。 第二种类型的作业存储实际上提供两种不同的实现,但两种实现一般都称为 j d b c 作业存储。两种j d b c 作业存储都需要j d b c 驱动程序和后台数据库来持久 化调度程序信息。这两种类型的不同在于是否想要控制数据库事务或者释放控制 给应用服务器例如b e a sw e b l o g i c 或j b o s s 。( 这类似于j 2 e e 领域中,b e a n 管理的 事务和和容器管理事务之间的区别) ,这两种j d b c 作业存储是: j o b s t o r e t x :当想要控制事务或工作在非应用服务器环境中是使用。 j o b s t o r e c m t :当工作在应用服务器环境中和想要容器控制事务时使用。 j d b c 作业存储为需要调度程序维护调度信息的用户而设计。 作业和触发器 q u a r t z 设计者做了一个设计选择来从调度分离开作业。q u a r t z 的触发器用 来告诉调度程序作业什么时候触发。框架提供了二组触发器类型,但两个最常用 的是s i m p l e t r i g g e r 和c r o n t r i g g e r 。s i m p l e t r i g g e r 为需要简单打火调度而设计。典 型地,如果需要在给定的时间间隔重复触发某个作业,那s i m p l e t r i g g e r 适合。 另一方面,如果有许多复杂的作业调度,那么或许需要c r o n t r i g g e r 。 c r o n t r i g g e r 是基于c a l e n d a r - l i k e 调度的。当需要在除星期六和星期天外的每 天上午1 0 点半执行作业时,那么应该使用c r o n t r i g g e r 。正如它的名字所暗示的那 样,c r o n t r i g g e r 是基于u n i x 克隆表达式的。下面的q u a r t z 克隆表达式将在星期一 1 9 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 到星期五的每天上午1 0 点1 5 分执行一个作业:01 51 07 木m o n f r i ,下面的表达 式:01 51 07 宰6 l2 0 0 2 2 0 0 5 ,将在2 0 0 2 年至u 2 0 0 5 年的每个月的最后一个星期五 上午1 0 点1 5 分执行作业。 用调度器调用作业 为使作业能被调度器调用,需要向调度程序说明作业的调用时间和频率。这 个事情由与作业相关的触发器来完成。 作业和触发器通过q u a r t z 调度器接口而被调度。我们需要从调度器工厂类取 得一个调度器实例。最容易的办法是调用s t d s c h e d u l e r f a c t o r y 这个类上的静态方 法g e t d e f a u l t s c h e d u l e r ( ) 。使用q u a r t z 框架,需要调用s t a r t ( ) 方法来启动调度器。下 面的代码遵循了大多数q u a r t z 应用的一般模式:创建一个或多个作业,创建和设 置触发器,用调度器调度作业和触发器,启动调度器。 b l i cc l a s sm y q u a r t z s e r v e r p u b l i cs t a t i cv o i dm a i n ( s t r i n g 】a r g s ) m y q u a r t z s e r v e rs e r v e r = n e wm y q u a r t z s e r v e r o ; t r y s e r v e r s t a r t s c h e d u l e r o ; ) c a t c h ( s c h e d u l e r e x c e p t i o ne x ) e x p r i n t s t a c k t r a c e o ; ) ) p r o t e c t e dv o i ds t a r t s c h e d u l e r ot h r o w ss c h e d u l e r e x c e p t i o n u s et h ef a c t o r yt oc r e a t eas c h e d u l e ri n s t a n c e s c h e d u l e rs c h e d u l e r = s t d s c h e d u l e r f a c t o r y g e t d e f a u l t s c h e d u l e r o ; j o b d e t a i lh o l d st h ed e f i n i t i o nf o rj o b s j o b d e t m lj o b d e t a i l = n e w j o b d e t a i l ( ”s c a n f t p j o b , s c h e d u l e r d e f a u l t _ g r o u p , s c a i 谭t p s i t e j o b c l a s s ) ; s t o r ej o bp a r a m e t e r st ob eu s e dw i t h i ne x e c u t e ( ) j o b d e t a i l g e t j o b d a t a m a p o p u t ( ”f t p _ h o s t ”, ”o m e c a v a n e s s k i n b o u n d ”) ; c r e a t eat r i g g e rt h a tf i r e se v e r y6 0s e c o n d s t r i g g e rt r i g g e r = t r i g g e r u t i l s m a k e s e c o n d l y t r i g g e r ( 6 0 ) ; s e t u pt h ej o ba n dt r i g g e rw i t ht h es c h e d u l e r s c h e d u l e r s c h e d u l e j o b o o b d e t a i l ,t r i g g e r ) ; s t a r tt h es c h e d u l e rr u n n i n g s c h e d u l e r s t a r t ( ) ; ) 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 编程调度同声明性调度 上面的例子中通过编程的方法调度s c a n f t p s i t e j o b 作业。就是说,用j a v a 代 码来设置作业和触发器。q u a r t z 框架也支持在x m l 文件里面申明性的设置作业调 度。申明性方法允许更快速地修改哪个作业什么时候被执行。q u a r t z 框架有一个 插件,这个插件负责读取x m l 配置文件。x m l 配置文件包含了关于启动q u a r t z 应 用的作业和触发器信息。所有x m l 文件中的作业连同相关的触发器都被加进调度 器。这种方式仍然需要编写作业类,但配置那些作业类的调度器则非常动态化。 申明性方法的好处是维护变得极其简单,只需改变x m l 配置文件和重新启动 q u a r t z 应用即可,无须修改代码、重新编译,或者重新部署。 2 l 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 3 1 系统需求 第三章工作流模型与工作流引擎设计 论文提出的工作流模型和工作流引擎将主要面向媒体办公领域,这类行业的 业务具有以下特点: 1 、业务过程复杂业务过程可能涉及到复杂的审批流程,包含多选一、同 步等等业务过程、同时需要业务过程的跳转和回退。 2 、业务过程多变由于人事的变动和新的业务的增加,需要改变和新增一 些流程。 3 、组织结构复杂需要部门之间的业务处理甚至各部门之间的协同工作。 4 、监控要求较高需要记录每一个用户登录系统之后的每一个操作。 5 、人工处理较多大部分业务需要人工处理。 论文的实践工作就是参与工作流模型的设计和完成工作流管理系统中的工 作流引擎的设计和实现。论文所参与开发的工作流管理系统可以说是一个工作流 开发平台,它为媒体办公领域的业务系统提供一个建模和运行环境,根据上述需 求,开发平台将提供灵活的过程和组织建模工具,系统开发人员根据需求建立具 体业务的过程和组织模型,然后实现各个业务的具体逻辑,而不在关注业务过程 之间的逻辑关系和调度方法,这样可以极大地缩短应用工作流系统的业务系统的 开发周期。 3 2 工作流模型设计 3 2 1 基于有限状态机的业务建模 业务流程呻1 是由各业务环节连接而成,而每一个业务环节都由多个相互关 联、不同层次的要素构成。传统的对业务建模的思想是基于序列化思想的来进行 的,它按照业务的步骤将业务过程按照时序关系的不同,建立了一套执行业务过 程的步骤。这种建模方式关注的是业务的执行顺序和路径,这种顺序化的建模思 想工作流是最容易让人理解的一种工作流模型,比如挂号一 看病一 缴费一 取药这 个流程是一个非常典型的序列工作流,用顺序工作流模型可以很容易的为这种情 景建模。 北京邮电大学研究生毕业论文一基于有限状态机的工作流引擎的设计和实现 但是,根据上面提到的系统需求,媒体办公领域的业务过程具有复杂和多变 等特点,表现为众多的跳转、回退和聚合等待等等复杂的业务路径,传统的序列 工作流建模无法处理这种类型的业务。面对这样的问题,提出用有限状态机的思 想来建模。 有限自动机呻1 是一种具有离散输入和输出系统的数学模型,这种系统具有限 个内部状态。它包含着下面几种要素:有一个状态集( 若干个状态) ;有一个状态 之间的转换关系( 全体有向弧表达了这种关系) ;状态之间的转换需要输入,全体 输入组成一个输入集;此外还有初始状态和终止状态。 使用状态机的思想建模将建模关注点从业务过程转移到需要处理的业务实 体上,根据业务过程对业务实体建立状态模型,同时定义业务实体在某个状态上 可以接受的输入,根据接受的输入和当前状态决定业务实体的下一个状态。这些 状态中包括一个开始状态,一个结束状态。业务开始处理时,业务实体进入开始 状态,然后根据不同的事件,在各个状态之间转移,直到业务实体进入结束状态, 业务过程就完成了。 这样,无论业务过程如何复杂,我们只需为业务实体建立有限个状态,在发 生转移时改变业务实体的状态。此时跳转、回退等等复杂操作同样也可以通过 业务实体状态机的状念转移来实现,使用状态机建模用比较少的状态清晰地描述 了整个业务规则,这种建模方式对二次开发人员来说,可以极大地降低开发难度, 减少硬编码业务路径所带来的风险,对于最终用户来说,通过业务实体的状态, 可以很明显看出业务流程此时的情况。 基于上述思想,在业务过程建模时,首先抽象出企业的业务实体,每一个 业务实体对应一个流程,然后将业务实体的执行过程分解为若干个步骤,每一个 步骤对应业务实体的一个状态,在每一个业务状态上设计一系列可执行操作。基 于有限状态机的工作流模型是对这样一种建模思想的更高级别的抽象。参考 w f m c 模型,我们将整个业务过程称为一个流程,每一个步骤对应一个活动,同 时它也标志着业务实体的一个状态,用业务实体的各个状态之间的关系来建立活 动之间的关系,这样就可以建立整个工作流模型。 3 2 2 工作流模型介绍 工作流模型是对组织机构业务过程的抽象表剥1 们。工作流模型是整个工作流 管理系统的基础,它的确定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金华磐安县卫健事业单位公开招聘工作人员29人考前自测高频考点模拟试题及1套参考答案详解
- 2025贵州剑河县农村集体经济组织选聘职业经理人(总经理)17人模拟试卷及1套参考答案详解
- 2025辽宁沈阳城市建设投资集团有限公司所属企业沈阳城投新能源集团有限公司招聘7人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025杭州青少年活动中心招聘工勤岗位工作人员20人考前自测高频考点模拟试题及答案详解(全优)
- 2025江西交设工程咨询有限公司招聘劳务派遣岗位人员1人模拟试卷附答案详解(考试直接用)
- 2025贵州六枝特区科学技术协会招聘公益性岗位人员1人模拟试卷及答案详解(典优)
- 2025江苏盐城工学院招聘专职辅导员13人模拟试卷及答案详解(网校专用)
- 2025内蒙古森工集团招聘高校毕业生50人(第一批)考前自测高频考点模拟试题附答案详解(黄金题型)
- 2025恒邦财产保险股份有限公司营业部招聘1人考前自测高频考点模拟试题及完整答案详解一套
- 2025贵州大方县人民医院专项引进高层次急需紧缺人才模拟试卷附答案详解(典型题)
- 单位保密知识培训课件
- 《铁在人体中的作用》课件
- 二年级上册道德与法治第一单元《团团圆圆过中秋》作业设计
- 污水井钢板桩支护施工及基坑土方开挖专项方案
- 急救知识试题+参考答案
- 酒店蔬菜供货合同模板
- 【青松雪】几何最值36问-解析版
- 《海底隧道技术讲义》课件
- MOOC 耕作学-沈阳农业大学 中国大学慕课答案
- 《商业文化》课件-第3章 古代商贤及其商业文化
- 小儿结核病教案
评论
0/150
提交评论