(计算机应用技术专业论文)工作流引擎研究与实现.pdf_第1页
(计算机应用技术专业论文)工作流引擎研究与实现.pdf_第2页
(计算机应用技术专业论文)工作流引擎研究与实现.pdf_第3页
(计算机应用技术专业论文)工作流引擎研究与实现.pdf_第4页
(计算机应用技术专业论文)工作流引擎研究与实现.pdf_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

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

文档简介

摘要 工作流管理系统作为定义、创建和管理工作流运行的软件,其巨大的潜在 市场和广阔的应用领域吸引了越来越多的关注。 作为计算机支持的协同工作( c s c w ) 研究的一个重要方向,工作流管理系统 的主要目标是通过调用有关的信息资源与人力资源来协调业务过程中的各个环 节,使之按照一定的顺序依次进行,从而实现业务过程的自动化。工作流管理 系统就是将现实世界中的业务过程逻辑转化成某种计算机软件的形式化定义, 并在其驱动下完成工作流的执行和管理。 应用工作流技术的过程集成是实现柔性企业应用集成的有效途径之一。通 过把应用逻辑和过程逻辑相分离,把人、信息和应用工具合理组织在一起。过 程集成发挥了系统的最大效能,为企业更好的实现经营目标提供了先进的手段。 本课题的研究目标就是在深入研究工作流管理联盟( w f m c ) 关于工作流管 理系统的系列规范的基础上,基于j 2 e e 和x m l 技术,设计和实现工作流引擎组 件。基于w f m c 的系列规范,本文首先介绍了工作流管理系统,工作流管理系统 体系结构,工作流参考模型。在此基础上,给出工作流引擎的概要设计,包括 引擎运行原理设计、功能设计和引擎的整体结构。然后对工作流系统的元模型 进行了详细的分析,进一步给出引擎元模型模块的设计与实现。最后给出引擎 组件的详细设计和实现。 关键词:工作流管理系统、工作流引擎、j 2 e e 、x m l a b s t r a c t b o t ht h em a s s i v ep o t e n t i a lm a r k e ta n db r o a da p p l i c a t i o nf i e l do f w o r k f l o wm a n a g e m e n ts y s t e m ( w f m s ) ,w h i c hi sas o f t w a r et h a td e f i n e s , c r e a t e sa n dm a n a g e st h ee x e c u t i o no fw o r k f l o w ,h a sd r a w nm o r ea n dm o r e a t t e n t i o nf r o mi n s t i r u t i o nf o rs c i e n t i f i er e s e a r c ha n ds o f t w a r e c o r p o r a t i o n sa 1 1 o v e rt h ew e t l d a sa d i m p o r t a n td i r e c t j o na b o u tc o m p u t e rs u p p o r t e dc o l l a b o r a t i o n w o r k ( c s c w ) r e s e a r c h ,t h em a i ng o a lo fw o r k f l o wm a n a g e m e n ts y s t e m si s m a k i n g b u s i n e s sp r o c e s se x e c u t e b y c e r t a i n s e q u e n c e a n d r e a l i z i n g b u s i n e s sp r o c e s sa u t o m a t i c a l y w h i c hc o l l a b o r a t ea 1 1a s p e c t si nt h e b u s i n e s sp r o c e s sa c c o r d i n gt ou t i l i z er e l a t i v ei n f o r m a t i o nr e s o u r c ea n d h u m a nr e s o u r c e w h a tw o r k f l o wm a n a g e m e n ts y s t e m ( w f m s ) c a nd oist o c o n v e r tt h eb u s i n e s sp r o c e s s l o g i c i n t oc e r t a i nc o m p u t e r i z e df o r m a l d e f i n i t i o n ,a n dt oc o m p l e t et h ee x e c u t i o na n dm a n a g e m e n to ft h ew o r k f l o w u n d e ri t sd r i v ea sw e l l p r o c e s si n t e g r a t i o nu s i n gw o r k f l o wt e c h n o l o g yp r o v i d e sa ne f f i c i e n t a p p r o a c ht oi m p l e m e n te n t e r p r i s ea p p l i c a t i o ni n t e g r a t i o nf l e x i b l y b y s e p a r a t i n gt h ea p p li c a t i o nl o g i cf r o mt h ep r o c e s sl o g i ca n do r g a n i z i n g h u m a n s ,i n f o r m a t i o na n da p p l i c a t i o nt o o l st o g e t h e rp r o p e r l y ,p r o c e s s in t e g r a t i o nn o to n l ym a k e st h es y s t e mm o s te f f i c i e n t ,b u ta l s oh e l p st h e e n t e r p r i s ea c h i e v ei t sb u s i n e s sg o a l a f t e rad e t a i l a n a l y s i s o fw o r k f l o w m a n a g e m e n ts y s t e m ( w f m s ) s p e c i f i c a t i o n ,t h i sp a p e ri sa i m e da td e s i g n i n ga n dd e v e l o p i n gw o r k f l o w e n g i n eu p o n t h e p l a t f o r mo fj 2 e e a n dx m l i nt h i s p a p e r ,w o r k f l o w m a n a g e m e n ts y r s t e m i si n t r o d u c e di nd e t a i l f i r s t l y a f t e r t h a tb r i e f s p e c i f i c a t i o no fw o r k f l o we n g i n ei si n t r o d u c e d t h e nb a s e do na n a l y s i s o fw o r k f l o wm e t am o d e lt h ed e s i g na n dd e v e l o p m e n to fx p d lm o d u l ei s i n t r o d u c e d a tt h ee n do ft h i sp a p e r t h ed e s i g na n dd e v e l o p m e n to f w o r k f l o we n g i d ei sd i s c u s s e di ng r e a td e t a i l k e yw o r d s :w o r k f l o wm a n a g e m e n ts y s t e m ,w o r k f l o we n g i n e ,j 2 e e ,x m l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得 的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的 任何贡献均已在论文中作了明确的说明并表示谢意。 签名: 日期:0 5 年,月哆日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅 和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 工作流引擎研究与实现 1 1 工作流简介 第一章引言 据研究统计,现代企业的日常活动有7 0 以上都是由两个或两个以上的员 工共同参与的,比如生产流程、业务流程、各类行政申请流程、财务审批流程、 人事处理流程、质量控制及客户服务流程等。一项工作,经过一个步骤处理后 再转往下一站的连续步骤,称之为“工作流”。工作流就是业务流程的计算机化 或自动化。企业或组织内有许多繁琐复杂的流程,这些流程构成了企业或组织 的日常运营活动。通过现代的技术手段将这些流程自动化,并对其进行有效地 管理以提高企业运作效率,降低成本,增强规范和标准化就是工作流自动化管 理软件需要解决的问题。 工作流技术是实现企业业务过程建模、业务过程仿真分析、业务过程优化、 业务过程管理与集成,最终实现业务过程自动化的核心技术。对企业利用工作 流方法进行业务过程的建模和深入分析不仅可以规范企业的业务流程,发现业 务流程中的不合理环节,进而对企业的业务流程进行优化和重组,而且所建立 的业务流程模型本身就是企业非常重要的知识库和规则库,可以成为指导企业 实施计算机管理信息系统的模型,因此意义十分重大。 工作流管理技术作为一种过程建模和流程管理的核心技术,可以和其它应 用系统有效结合,生成符合企业需求的各种业务管理系统,如办公自动化系统、 项目管理软件、p d m 系统、客户关系管理系统、供应链管理系统、e r p 系统等。 这些采用工作流技术作为核心开发的业务管理系统最大的特点,也是这些系统 与传统应用软件系统最大的区别是:具有高度的灵活性,可以按照企业的具体 需求,快速灵活地生成应用软件系统,并且在客户业务流程发生变化时,能迅 速的进行重组来满足客户的需求。 工作流引擎研究与实现 1 2 工作流管理系统 工作流系统作为一种软件组件,以规格化的流程描述作为输入,维护流程的 运行状态,并在人和应用之间分派活动。工作流管理系统( w f m s ) 是定义、创建、 执行工作流的系统。它是一种特殊的计算机支持的协同处理软件系统( c s c w , c o m p u t e rs u p p o r t e dc o o p e r a t i v ew o r k ) 。具有工作流功能的软件系统在开发 时有很大的重复性,工作流管理系统就是将这类软件公共的部分,如:流程控 制部分( 工作流执行服务器,工作流引擎) 、管理部分等,抽象出来形成一种软 件开发平台,用户只需要将他们的工作控制流程描述出来( 这一步通过系统的 建模工具进行) ,该平台软件就可对它们的控制流程进行自动执行和有效地管 理,而不需要对每次不同的应用重复地开发。 1 3 工作流产品现状 近年来随着对工作流产品需求的不断扩大,国内外许多公司推出了不同的 工作流产品,如:i b m 的m q s e r i e sw o r k f l o w ,f i l e n e t 公司的v i s u a lw o r k f l o , a c t i o nt e c h n o l o g i e s 公司的m e t r o ,西安协同数码公司的协同工作流系统, 清华大学的c i m f l o w 等。这些不同的工作流产品各有特点,但是难于实现互操 作,以及与其它应用系统的集成。为此,1 9 9 3 年国际上成立了“工作流管理联 盟“( w o r k f l o wm a n a g e m e n tc o a l i t i o n ) ,提出了有关工作流管理系统的一系列 规范,以期实现工作流技术的标准化和开放性。目前该组织的成员已经超过了 2 0 0 个,其中包括软件厂商、科研机构与咨询机构。1 9 9 4 年1 1 月2 9 日w f m c 发布了工作流系统参考模型( w o r k f l o wr e f e r e n c e m o d e l ) ,它详细描述了w f m s 的各主要组成部分,各部分的功能及相互之间的接口。在本文中,我们以工作 流管理联盟的定义、术语、概念为标准。 1 4 本文的章节安排 本文从工作流管理系统的基本概念入手,分析了工作流管理系统及相关技 术,设计并开发了一个工作流引擎:g o t o n g f l o we n g i n e 。全文共六章,第二章 阐述相关的技术背景,第三章简要介绍工作流管理系统的体系结构和参考模型, 工作流引擎研究与实现 第四章给出g o t o n g f l o we n g i n e 的概要设计,第五章介绍工作流元模型x p d l 模块的详细设计与实现,第六章介绍引擎的详细设计与实现。最后总结全文, 提出进一步的工作。 1 5 软硬件环境 在设计和实现过程中,根据w f m s 系统特点,利用面向对象设计思想,使 用j a v a 编程语言实现。由于设计思想和编程语言的特性,我们使用下列软件: 操作系统:w in d o w s 2 0 0 0 数据库支持:m y s q l 应用服务器:j b o s s3 2 3 开发工具: 团队开发管理工具:c v s 统一建模型语言工具:r a t io n a lr o s e j a v a 语言i d e 工具:j b u i l d e r 工作流引擎研究,实现 2 1 j 2 e e 简介 2 1 1 j 2 e e 体系结构 第二章技术背景 j 2 e e 对按照基于组件的应用模型设计的分布式应用提供了一个简单而又 统一的标准,它既定义了管理应用程序的基础框架结构,也定义了创建应用要 使用的服务a p i 。j 2 e e 总体结构如图2 1 所示。 i 玎w l x m 。 a p p l i c a t i o n 客户端 1s e r v l e tj s p 页砸 lw e b 容器 _ _ 10 e n t i t ye e b i e s j b s l 。li 篙。 e j b 容器 j 2 e e 应用服务器 图2 - 1j 2 e e 总体结构图 c o r b a 服务器 j 8 v a a p p l i c a t i o n 邮件服务 消息服务 p 叫 目录服务 i 1 i 、一 l 服务和信息 j 2 e e 总体结构框架规定了应用的接口、角色、运行环境和基础框架服务, 这样j 2 e e 系统的开发工作只集中在应用逻辑和相关服务上,框架环境的相关服 务由系统自身保证。 一=j:|:川二二h川川二二 工作流引擎研究与实现 j 2 e e 定义了一整套标准a p i 服务,每个具体的j 2 e e 实现都必须支持这些 扩展集: j a v a 数据库连接j d b c :一种与供应商无关的动态s q l 接口,通过 它可以从标准化j a v a 编程语言虚拟访问任何支持j d b c 的数据源。 远程方法调用协议r m i - i i o p :i i o p 是c o r b a 体系结构中采用的通 信协议,而r m i 是j 2 e e 内部各系统之间的标准通信协议。现在,j 2 e e 体系 框架通过提供在ii o p 上实现的j a v ar m ia p i ,可以方便地实现j 2 e e 应用 系统与c o r b a 系统之间的集成和通信。 j a v a 命名和目录服务j n d i :j n d i 提供了访问n a m i n g 和d i r e c t o r y 的共通规则,j a v a 开发者使用j n d i 来完成对各种命名和目录服务如l d a p 、 d n s 等的访问。 j a v a m a i l :是s u n 为开发者提供的公用a p i ,开发者可以为应用创 建自己的电子邮件收发系统而不必受限于供应商的解决方案。 j a v a 消息服务j m s :j m s 定义了j a v a 中访问消息中间件的接口。j m s 提供与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 j m s ,包括i b m 的m q s e r i e s 、b e a 的w e b l o g j cj m ss e r v i c e 和p r o g r e s s 的 s o n i c m q 等。 2 1 2j 2 e e 技术特点 完善的组件技术和服务:j 2 e e 的组件体系分为h t t p 请求组件、实现分布 式计算的e j b 组件和j a v ab e a n s 组件。这样j 2 e e 可以采用各种组件技术来支 持全方位的业务逻辑的构建。服务技术为组件提供服务,从而使组件更高效的 发挥功能,同时也使开发者把主要精力集中在业务逻辑的建模和实现上。 完善的通信技术:客户端和服务端可以通过i n t e r n e t 协议如h t t p 、h t t p s 等来通信,也可以使用远程对象协议如r m i 、r m i i i o p 等来透明的实现对象之 间的交互。j 2 e e 体系中还可以采用j m s 和j a v am a i l 传递异步消息来实现非持 久连接对象之间的通信。 明确的角色分工和程序开发流程:j 2 e e 在w e b 组件和e j b 组件开发中都有 工作流引擎研究与实现 明确的角色分工和开发流程,具体的分工有:应用提供者、开发工具提供者、 容器提供者、应用程序装配者、程序部署者、系统管理员等。 2 1 3 服务器端分布式组件模型e j b 简介 e j b ( e n t e r p r i s ej a v ab e a n ) 是j 2 e e 平台所支持的多种组件标准的一 种,也是最重要的一种。它作为服务器端的组件是在服务器地址空间内运行的。 通常由它实现应用程序的商业逻辑。 2 1 3 1e j b 体系结构 e j b 体系结构包含以下几个元素: 1 ) h o m e 接口:是e j b 开发者定义的提供给客户的一些工厂( f a c t o r y ) 方 法,客户可以通过h o m e 接口来创建、查询和删除e j b 对象。 2 ) h o m e 对象:它是在配置e j b 时由e j b 容器产生的一个对象,是e j b 开 发者定义的h o m e 接口的一个具体实现。 3 ) r e m o t e 接口:是e j b 开发者定义的提供给客户的一些业务方法 ( b u mn e s sm e t h o d ) 。 4 ) e j b 对象:它是在配置e j b 时由容器生成的一个对象,是e j b 开发者 定义的r e m o t e 接口的一个具体实现。客户通常通过e j b 对象来间接访问 b e a n 的实现类。 5 ) b e a n 的实现类:是e j b 构件的核心,是e j b 开发者对h o m e 接口和 r e m o t e 接口中定义的公共方法的具体实现,该对象不直接暴露给客户,而是通 过h o m e 对象和e j b 对象间接的为客户提供服务。 6 ) e j b 客户:所有使用e j b 服务的对象,包括s 盯v l e t 、j s p 、e j b 等。 7 ) e j b 容器:e j b 容器包容e j b 并为e j b 提供生命周期服务,容器把底层 的操作环境与e j b 隔离开来,使得e j b 具有可扩展性、有效性、并行存取能 力。容器提供生命周期管理( e j b 的创建、初始化、删除) ;e j b 的持久化管理、 事务管理、安全管理;为e j b 创建h o m e 对象,并提供查询h o m e 对象的服务; 6 工作流引擘研究与实现 e j b 的激活( a c t i v a t i o n ) 管理。 8 ) e j b 服务器:为e j b 提供系统级的服务,包括线程池和数据库连接池。 e j b 服务器与容器一起为e j b 提供分布式事务服务。 2 1 3 2e j b 的类型 e j b 有三种类型:、会话b e a n ( s e s s i o nb e a n ) 、实体b e a n ( e n t i t yb e a n ) 和消息驱动b e a n 。 1 会话b e a n 会话b e a n 代表的是调用它的客户程序所完成的工作,是一个具体的商务过 程对象,是包含有具体商务逻辑过程的可重用组件。它并不直接代表数据库的 数据,但是可以访问和更新它们。与实体b e a n 比较,会话b e a n 的生命周期相 对较短。一旦客户结束会话或服务器崩溃,会话b e a n 将不再存在。 会话b e a n 又可以进一步分成两种:有状态的会话b e a n 和无状态的会话 b e a n 。无状态的会话b e a n 在方法调用间不保存任何状态,它可以为任何客户服 务。有状态的会话b e a n 在方法调用问保存会话状态,它只能为一个特定的客户 服务。 会话b e a n 在生存期内都将经历多个状态,状态闻的变迁由容器负责。无状 态的会话b e a n 的状态变迁见图2 2 。 1 s e t s e s s i o n c 2 匀b c r e a t e 圈2 - 2 无状态会话b e a n 状态变迁图 由于不包含任何状态所以无状态的会话b e a n 永远不会被钝化( 比较有状 态的会话b e a n 而言) 。它只包含两个状态n o n e x i s t e n t 和r e a d y 。 7 工作流引擎研究与实现 有状态的会话b e a n 的状态变迁见图2 - 3 : 1 。c r e a t e 2 。s e t s e s s i o n c 3 e j b c r e a t e 圈2 - 3 有状态会话b e a n 状态变迁图 客户调用c r e a t e 方法后,容器将实例亿一个有状态的会话b e a n 并调用它 的s e t s e s s i o n c o n t e x t 和e j b c r e a t e 方法,此时有状态的会话b e a n 处于r e a d y 状态,准备处理对业务方法的调用。 处于r e a d y 状态时,容器可能决定把有状态的会话b e a n 从内存中交换到二 级存储中,即钝化( d e a c t i v a t e ) 。容器在b e a n 钝化之前将调用有状态的会话 b e a n 的e j b p a s s i v a t e 方法,之后有状态的会话b e a n 处于p a s s i v e 状态。 当客户调用有状态的会话b e a n 的业务方法并且有状态的会话b e a n 处于 p a s s i v e 状态,容器将把有状态的会话b e a n 从二级存储中交换到内存中,即激 活( a c t i v a t e ) 并调用它的e j b a c t i v a t e 方法,此时有状态的会话b e a n 处于 r e a d y 状态。 最后,客户调用r e m o v e 方法,容器将调用有状态的会话b e a n 的e j b r e m o v e 方法,b e a n 实例将被垃圾回收线程回收清除。 2 实体b e a n 能够创建实体b e a n 是e j b 的一大特色。实体b e a n 是永久存储中实体的表 示。它具有永久性和共享访问的特点。它的状态变迁见图2 - 4 : 工作流引擎研究与实现 图2 4 实体b e a n 的状态变迁图 容器首先创建一个b e a n 的实例,调用它的s e t e n t i t y c o n t e x t 方法,b e a n 的实例将被放入到实例池中,处于p o o l e d 状态。处于p o o l e d 状态的b e a n 的实 例没有与任何e j b 对象关联,所有在实例池中的b e a n 实例都是相等的。当b e a n 实例从p o o l e d 状态进入r e a d y 状态时,容器将赋给b e a n 实例一个标识,建立 起b e a n 实例与e j b 对象间的关系。 有两种方法可以使b e a n 实例从p o o l e d 状态进入r e a y 状态。一种是客户 调用c r e a t e 方法,这将使得容器调用b e a n 实例的e j b c r e a t e 方法;另一种是 容器调用b e a n 实例的e j b a c t i v a t e 方法。当b e a n 实例处于r e a d y 状态时,它 可以处理客户对业务方法的调用。 同样也有两种方法可以使b e a n 实例从r e a d y 状态进入p o o le d 状态。一种 是容器调用b e a n 实例的e j b r e m o v e 方法;另一种是容器调用b e a n 实例的 e j b p a s s i v a t e 方法。 最后,容器调用b e a n 实例的u n s e t e n t it y c o n t e x t 方法,将b e a n 实例从 实例池中删除,释放b e a n 占用的全部资源。 3 消息驱动b e a n 消息驱动b e a n 是能够接收j m s 消息的特殊的e j b 组件,它是e j b 2 0 规范 的新的内容之一。消息驱动b e a n 使用来自队列或主题的消息,这些消息可以是 由任意有效的j m s 客户发送的。与r m i 项比较,消息驱动b e a n 提供了一种构造 松散耦合应用程序的机制,成对的应用程序可以使用j m s 消息间接地通信。 它的状态变迁见图2 - 5 : 9 工作流引擎研究与安现 e j b r e m o v e o o n m e s s a g e o 图2 - 5 消息驱动b e a n 的状态变迁图 消息驱动b e a n 只有两种状态:n o n e x i s t e n t 和p o o l e d 。容器首先创建一 个新的b e a n 的实例,然后调用s e t m e s s a g e d r i v e c o n t e x t 方法,将消息驱动上 下文对象传递给此实例;然后调用e j b c r e a t e 方法使b e a n 初始化。b e a n 的实 例将被放入到实例池中,处于p o o l e d 状态。 p o o l e d 状态的b e a n 调用o n m e s s a g e 方法接收消息,然后执行相应的 d o w n c a s t 操作。最后,容器调用e j b r e m o v e 方法来删除实例。 2 1 3 3e j b 的运行原理 图2 - 6e j b 运行原理图 0 工作流引擎研究与实现 e j b 实现分布式计算的运行原理如图2 - 6 所示。客户程序使用j a v a 命名和 目录接口j n d i ( j a v an a m in ga n dd i r e c t o r yi n t e r f a c e ) 定位b e a n 的本地接口。 本地接口随后返回远程接口的实例,同时暴露必要的b e a n 实现方法。客户程序 再调用适当的业务方法。 从图中可以看出分布式计算所要求的事务、安全性、负载平衡等要求在e j b 体系中都有专门的标准的a p i ,开发人员只需在配置应用时指定所要求的事务 和安全性即可。这样比开发人员自己的实现更为可靠,而且大大降低了开发人 员的开发难度,使得e j b 非常适合于企业级应用地开发。 2 1 4j 2 e e 平台与其它分布式技术的比较 目前存在着各种各样的中间件标准和构件标准,其中比较有影响有这么三 种:s u n 公司的j 2 e e e j b ,微软的w i n d o w sc 删d c o m ,o m g 的c o r b a 。下面 分别就j 2 e e 和后两种标准做一个简单比较。 这些标准的相似之处在于它们的目的都相同,都是为了简化多层企业应用 的开发、管理和配置。 在所支持的构件类型方面,e j b 支持商业逻辑处理构件( 会话b e a n ) 和数 据逻辑处理构件( 实体b e a n ) ,以及消息驱动b e a n ;d c o m 只支持前者:c o r b a 共有四种类型的对象:服务构件s e r v i c e ,会话构件( s e s s i o n ) ,处理构件 ( p r o c e s s ) ,实体构件( e n t i t y ) 。 在数据持久化方面,e j b 支持两种持久化方法:由容器管理持久化( c m p ) 和由构件b e a n 自己管理持久化( b m p ) 。d c o b t 只支持构件自己管理持久化; c o r b a 有构件管理的持久化( s e l f m a n a g e dp e r s i s t e n c es m p ) 和容器管理的永 久化( c o n t a i n e r m a n a g e dp e r s i s t e n c ec m p ) 。 在事务处理方面,三者都支持通过编码的方式来进行事务处理或是通过声 明事务属性由平台来进行事务处理。 在安全处理方面,三者使用相同的模型,认证和授权。构件可以使用编码 和声明的方式来进行授权。 在程序语言支持方面,e j b 只支持j a v a 语言,c o r b a 和d c o m 支持多种 工作流引擎研究与实现 程序语言。最大的不同在于j 2 e e e j b 和c o r b a 是真正意义上的开放标准,它 被许多中间件厂商所支持;而w i n d o w sc o m d c 叫严格来说是一个产品而不是 标准,它是微软公司独自制定和实现的,并且与w i n d o w s 操作系统绑定在一起 了:而c o r b a 是e j b 的一个超集,两者间可以互相集成。c o r b a 构件可以接 受来自e j b 客户的请求,e j b 也可以接受来自c o r b a 构件的请求。 综上所述,d c o m 在一些关键方面,如构件类型,声明化的持久处理等方面 有着缺陷,另外它的非开放性使得它的应用前景不被看好;而c o r b a 缺乏大量 产品的支持,所以e j b 成为了首选。 2 2x m l x m l 是从通用标记语言( s t a n d a r dg e n e r a l i z e dm a r k e dl a n g u a g e ,s g m l ) 简化而来的一种元标记语言。1 9 9 8 年2 月w 3 c 组织发布了x m l 的标准。x m l 不仅仅包括x m l 标记语言,还包括了很多相关的规范,如文档格式化标准、文 档显示模式定义、文档查询标准、文档解析标准和文档链接标准等。基于x m l 这 个低层的规范,还有很多高层的应用协议,比如开放贸易协议、s o a p 等。 2 2 1x m l 相关标准及其关系 x m l 相关标准及它们的关系如图2 7 所示: 图2 7x m l 标准关系图 t 作流引擎研究与实现 d t d 和s c h e m a 是对文档格式进行定义的语言,就相当于数据库中我们需 要定义数据库模式一样,d t d 和s c h e m a 决定了文档的内容应该是些什么类型 的东西。其中d t d 是从s g m l 继承下来的,而s c h e m a 是专门为定义x m l 文 档的格式而设计的,它们都规定了x m l 文件的逻辑结构,定义了x m l 文件中 的元素、元素属性以及它们之间的关系。 因为x m l 是内容和格式分离的语言,所以需要专门的协议来定义x m l 文 档的显示格式,c s s 和x s l 就是用来定义x m l 文档的显示格式的,当然c s s 是随着h t m l 的出现而出现的,它的初衷是为了更好的控制h t m l 中各个元素 的显示特征,它也可以应用到x m l 中来控制x m l 文档的显示,而x s l 事实上 就是专门为x m l 设计的,当然x s l 的作用不仅仅是用来显示x m l 文档,通过 模板机制,它能够取出x m l 文档中部分的内容,并且能够对其中的内容进行排 序,当然它也能够用来定义x m l 文档的显示格式。所以x s l 的另外一个应用 就是用来把一个x m l 文档转化为另一个x m l 文档,也就是说我们可以从原始 的x m l 文档生成一个新的x m l 文档。 x m l 文档本身只描述数据内容,它的显示功能由x m l 样式单来完成。w 3 c 正式推荐的样式单标准有两种:一种是层叠样式单c s s :另一种是可扩展样式 单语言x s l 。x s l 是用于规定x m l 文档呈现样式的语言,它使得数据与其表现 形式相互独立。 要在h t m l 文档中查询特定的内容,处理起来非常困难,而x m l 文档是一 个结构化的文本,所以具备了对x m l 文档进行内容检索的条件,但是需要有一 套完善的语言来实现从简单到复杂的类似关系数据库的检索功能,这套语言就 是x q l ,在关系数据库中我们可以通过s e l e c t 语句的w h e r e 句部分来限定查 询的范围,在x q l 语言中,我们也定义了一套类似的限定范围的规范,它就是 x p a t h 。 为了对x m l 文档内容进行分析,需要一个x m l 解析器,甩它来分析x m i 。 文档的内容是否符合煳l 标准。有两种解析方式:一种称为d o m ( d o c u m e n t o b j e c tm o d e l ) ,另外一种称为s a x ( s i m p l ea p if o rx m l ) 。 普通用户对h t m l 语言充满好感的一个很重要的原因是能够从任意一个 h t m l 页面开始,链接到各种各样的网页上去,也就是说,网页之削的链接关系 工作流引擎研究与实现 是吸引我们浏览w e b 网页的一个很重要的原因。同样作为h t m l 超级增强版的 x m l 也具有超链接的功能,而且作为它的后来者,它的链接功能又有很大增强, 其具体的规范标准就是x l i n k 。在h 例l 中我们只能从一个网页链接到另一个 网页上,但是x m l 规范制定者认为仅仅这样还不是很灵活,应该可以链接到一 个具体的对象上去,这个对象可以是一个网页,也可以是网页的一部分,网页 中的一个元素甚至是网页中某行的某几个字,x p o i n t e r 规范就做此项工作。 x m l 将数据组织为一棵树,d o m 就是对这棵树的一个对象描述。通俗的说, 就是通过解析x m l 文档,为x m l 文档在逻辑上建立一个树模型,树的节点是 个个对象。通过存取这些对象就能够存取x m l 文档的内容。 d o m 的基本对象有5 个:d o c u m e n t ,n o d e ,n o d e l i s t ,e l e m e n t 和a t t r 。 d o c u m e n t 对象代表了整个x m l 文档,所有其它的n o d e ,都以一定的顺序包含 在d o c u m e n t 对象之内,排列成一个树形的结构,d o c u m e n t 对象就是对x m l 文 档操作的起点,程序员可以通过遍历这棵树来得到x m l 文档的所有内容,通过 解析x m l 源文件而得到个d o c u m e n t 对象,然后再来执行后续韵操作。 n o d e 对象是d o m 结构中最为基本的对象,代表了文档树中的一个抽象的 节点。在实际使用的时候,很少会真正的用到n o d e 这个对象,而是用到诸如 e l e m e n t 、a t t r 、t e x t 等n o d e 对象的子对象来操作文档。n o d e 对象为这些对 象提供了一个抽象的、公共的根。虽然在n o d e 对象中定义了对其子节点进行 存取的方法,但是有一些n o d e 子对象,比如t e x t 对象,它并不存在子节点。 e l e m e n t 对象代表的是x m l 文档中的标签元素,继承于n o d e ,亦是n o d e 的最主要的子对象。在标签中可以包含有属性,因而e l e m e n t 对象中有存取其 属性的方法,而任何n o d e 中定义的方法,也可以用在e l e m e n t 对象上面。 a t t r 对象代表了某个标签中的属性。a t t r 继承于n o d e ,但是因为a t t r 实际上是包含在e l e m e n t 中的,它是e l e m e n t 对象的一部分,但它并不能被 看作是e l e m e n t 的子对象。 d o m 对象是用与具体语言无关的i d l 语言来定义的。因此d o m 可以在任何 1 4 工作流引擎研究与实现 面向对象的语言中实现,只要它实现了d o m 所定义的接口和功能就可以了。同 时,有些方法在d o m 中并没有定义,是用i d l 的属性来表达的,当被映射到 具体的语言时,这些属性被映射为相应的方法。 与d o m 相比,s a x 是一种轻量型的方法。在处理d o m 的时候,需要读入 整个x m l 文档,然后在内存中创建d o m 树,生成d o m 树上的每个n o d e 对象。 当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理d o m 就 会变得相当费时费力。特别是其对于内存的需求,也将是成倍的增长,以至于 在某些应用中使用d o m 是一件很不划算的事( 比如在a p p l e t 中) 。这时候, 一个较好的替代解决方法就是s a x 。 s a x 在概念上与d o m 完全不同。首先,不同于d o m 的文档驱动,它是事 件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程也就是s a x 的解析过程。 x m l r e a d e r 接受x m l 文档,在读入x m l 文档的过程中就进行解析,也就 是漉读入文档的过程和解析的过程是同时进行的。解析开始之前,需要向 x m l r e a d e r 注册一个c o n t e n t h a n d l e r ,也就是相当于一个事件监听器,在 c o n t e n t h a n d l e r 中定义了很多方法,比如s t a r t d o c u m e n t0 ,它定制了当在解 析过程中,遇到文档开始时应该处理的事情。当x m l r e a d e r 读到合适的内容, 就会抛出相应的事件,并把这个事件的处理权代理给c o n t e n t h a n d l e r ,调用其 相应的方法进行响应。 2 3 小结 本章介绍了与本项目有关的技术基础。j 2 e e 是当前企业级应用中广泛使用 的系统架构,我们重点关注e j b 组件技术。x m l 不仅包括x m l 标记语言,还包 括了很多相关的规范,如文档格式化标准、文档显示模式定义、文档查询标准、 文档解析标准和文档链接标准等。d o m 和s a x 是解析器提供的两种接口。 工作流引擎研究与实现 第三章工作流管理系统简介 3 1 工作流管理系统的功能 从一般意义上说,一套工作流管理系统的功能,可以分为三个方面: 1 建立阶段( b u ii d - t i m e ) 功能:主要考虑工作流过程和相关活动的定义 和建模功能。 2 运行阶段( r u n - t i m e ) 的控制功能:在一定的运行环境下,执行工作流 过程,并完成每个过程中活动的排序和调度功能。 3 运行阶段的人机交互功能:实现各种活动执行过程中用户与应用程序 ( 工具) 之间的交互。 为完成上述功能,工作流管理系统需要考虑众多因素,w f m c 提供了一个工 作流管理系统的体系结构模型,包括过程定义工具、过程定义、工作流执行服 务( w e s ) 和工作流引擎、工作流控制数据、工作流相关数据、工作表和工作表 处理程序、应用程序和应用数据等。图3 1 描述了上述功能间的关系: 幽3 - 1j :作流管理系统功能示意幽 6 工作流;l 擎研究与实现 3 2 工作流管理系统体系结构 尽管市场上的工作流产品是各种各样的,但是w f m c 组织已证明可以构建一 个通用的工作流系统实现模型,这个模型可以适用于市场上的大多数产品,因 此为开发协同工作的工作流系统奠定了基础。 通用工作流系统的主要功能组件如图3 2 所示,其中有三种类型的组件: 软件组件,为工作流系统的各种功能提供支持:各种类型的系统控制数据,为 一个或多个软件组件所使用;外部产品数据,其并不是工作流产品的一部分, 但是会被工作流产品调用,从而作为整个工作流系统的一部分。 32 1 过程建模工具 _ 软件拇件 【 系缆控制效锨 口外撕“赫,数批 图3 2 工作流管理系统体系结构图 过程定义是用来创建一个计算机可以处理的形式化的过程描述。工作流过 工作流引挚研究与实现 程建模工具,可能作为工作流产品的一部分、也可能作为业务过程分析产品的 一部分来提供给用户。作为业务过程分析产品一部分,会有其他的组件来负责 处理业务过程的分析或者模型,这时,必须要有兼容的转换格式,与运行时期 的工作流软件进行过程定义的相互转换。通常商用过程定义工具都是可视化的 图形定义工具。 3

温馨提示

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

评论

0/150

提交评论