(计算机软件与理论专业论文)ui操作服务化工具的设计与实现.pdf_第1页
(计算机软件与理论专业论文)ui操作服务化工具的设计与实现.pdf_第2页
(计算机软件与理论专业论文)ui操作服务化工具的设计与实现.pdf_第3页
(计算机软件与理论专业论文)ui操作服务化工具的设计与实现.pdf_第4页
(计算机软件与理论专业论文)ui操作服务化工具的设计与实现.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(计算机软件与理论专业论文)ui操作服务化工具的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 分布式协作开发环境的建立是实现工具之间交互与数据共享、提高设计与开 发效率的重要手段,其中所集成的系统设计工具既有商业软件,也有自主研发的 软件。本文涉及的研究课题采用s o a ( s e r v i c e o r i e n t e da r c h i t e c t u r e ) 的思想对工 具进行集成,将待集成工具的能力包装为服务,通过调用服务接口实现对工具功 能的使用,以屏蔽工具集成的实现细节。 由于现实中存在着一些未提供a p i ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e ) 和源 代码的工具,致使在a p i 层次上无法对该类工具进行包装,而在整个分布式协作 开发环境下又对该类工具存在集成需求。本论文针对这类问题提出了一种基于消 息模拟的、将u i ( u s e ri n t e r f a c e ) 操作包装成服务的方法,并研制了一个u i 操作 服务化工具一r c m a c r o 。 本文着重介绍了r c m a c r o 的体系结构、u i 操作信息采集和u i 操作信息解 析模块,并对各部分的设计目标及涉及到的技术和原理进行了详细的描述,最后 对当前工作进行了总结。r c m a c r o 目前只是个初俱雏形的u i 操作服务化工具, 尚有很多方面需要完善。 关键词:工具集成服务消息模拟u i 操作 a b s t r a c t t h ee s t a b l i s h m e i l to ft h ed i s t r i b u t e dc o l l a b o r a t i v ed e v e l o p m e n te n v i r o n m e n t i sa l l i m p o r t a n ta p p r o a c ht om a k et h ed e s i g na n dd e v e l o p m e n t m o r ee f f i c i e n ta n dt or e a l i z e t h ei n t e r a c t i o na n dd a t as h a r i n gb e t w e e nt o o l s t h et o o l si n t e g r a t e di nt h ee n v i r o n m e n t a r ee i t h e rs o f l w a r ep r o d u c t so rt h o s ed e v e l o p e db yc o s t u m e r st h e m s e l v e s t h i sp a p e ri s b a s e do nap r o j c o tw h i c hu s e st h ei d e ao fs o a t h ef u n c t i o n so ft o o l sa r ew r a p p e di n t o w e bs e i 啊c e s u n i f o r ma p i sa r ep r o v i d e dt oi n v o k ew e bs e r v i c e sa n dd e t a i l so f t h e t o o l si n t e g r a t i o na r eh i d d e n s o m ed e s i g nt o o l sw h i c hd on o tp r o v i d et h ei n t e r f a c ea n ds o u r c ec o d ec a nn o tb e w r a p p e db ya p im o d e ,w h i l ef u n c t i o n so ft h e s e t o o l sa r er e q u i r e di nd i s t r i b u t e d c o l l a b o r a t i v ed e v e l o p m e n te n v i r o n m e n t s t h i sp a p e rp r e s e n t sam e t h o dt op r o d u c e s e r v i c e s 丘o mt h eu i ( u s e ri n t e r f a c e s ) o p e r a t i o n sb a s e do nt h em e s s a g es t i m u l a t i o n ,a n d d e s i g n sat o o lf o rp r o d u c i n g s e r v i c e sf r o mt h eu io p e r a t i o n sn a m e dr c m a c r o t h ea r c h i t e c t l j r eo fr c m a c r o ,t h ec o l l e c t i o na n dr e s o l u t i o no fu io p e r a t i o n i n f o n n a t i o na r ed e s c r i b e di nd e t a i l t h ed e s i g ng o a l so ft h et o o l ,t e c h n o l o g i e sa n d p r i n c i p i e sw h i c hr e l a t et or c m a c r o a r ea l s op r e s e n t e d f i n a l l y , c u r r e n tr e s u l t so ft h e r s e a h 锄cs u m m a d z e d s of a r , r c m a c r oi so n l yap r o t o t y p ew h i c ho n l yo f f e r s l i m i t e df u n c t i o n s t oi m p r o v ei t ,t h e r ea r es t i l lal o to fw o r k st od o k e y w o r d s :t o o li n t e g r a t i o n s e r v i c e m e s s a g es i m u l a t i o n u io p e r a t i o n 西安电子科技大学 学位论文独创性( 或创新性) 声明 秉承学校严谨的学分和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:搦日期q 星:主:壶 西安电子科技大学 关于论文使用授权的说明 本人完全了解话安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保 留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内 容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后 结合学位论文研究课题再攥写的文章一律署名单位为西安电子科技大学。( 保密 的论文在解密后遵守此规定) 本学位论 本人签名: 导师签名: 年解密后适用本授权书。 日期旦2 :墨! 笪 日期舻丛1 1 :z 第一章绪论 第一章绪论帚一早珀t 匕 1 1 项目背景 本论文的工作来源于“系统设计工具集成技术研究”,该课题主要面向综合电 子信息系统,研制出一种面向系统设计工具的集成平台,并提供相应的数据访问 协议,实现系统设计工具之间的分布式协作开发。 综合电子信息系统是一类复杂的人机交互系统,系统的研制风险很大。长期 以来,研制单位在进行综合电子信息系统的需求分析、总体规划、指标论证、总 体设计时,主要依据的还是以往的经验,缺乏有效的方法指导和技术手段及工具 支持,设计分析过程和内容也缺乏统一的规范和要求,这引发了以下两个问题: 问题1 系统分析设计能力薄弱,缺乏必要的方法与工具的支持,是制约综合 电子信息系统建设和发展的瓶颈之一。 综合电子信息系统的研制和维护必须采用先进实用的、符合国情的开发技术、 开发环境与工具。采用基于组件的系统集成设计概念、内容及过程,建立面向综 合电子信息系统的分布式协作开发环境( 以下简称为分布式协作开发环境) ,提 供相应的系统设计工具集成平台,则是解决综合电子信息系统建设和发展的瓶颈 问题的一种重要思路与手段。 问题2 在建立分布式协作开发环境时,深入研究系统设计工具集成技术是其 中重要的一环,然而工具的集成缺乏一致的规范。 分布式协作开发环境中,既有商品化的系统设计工具软件,也有自行研制的 系统设计工具。在完成同一设计任务时,设计结果要能够在不同工具之间相互衔 接与利用,使用不同工具完成同一设计任务的流程要能够平滑相连,是构成系统 集成设计过程的基本条件。 实现设计工具的插件化,也是使得分布式协作开发环境具有可扩充性的重要 手段。此外,分布式协作开发环境中要集成一批综合电子信息系统领域的功能组 件,因此工具的集成还应当与组件的集成相互协调,尽可能采用一致的集成规范。 针对以上两个问题,作为建立分布式协作开发环境的重要工作之一,有必要 进行有针对性的系统设计工具集成技术研究。 2 u i 操作服务化t 具的设计与实现 1 2 1 研究目标 1 2 研究目标、内容与关键技术 本项目的研究目标是研究面向分布式协作开发环境的系统设计工具集成技 术,研制分布式协作开发环境中的开放式、可扩展的系统设计工具集成框架,实 现对基于仿真的系统设计工具和基于组件的系统设计工具的集成,为提高综合电 子信息系统的开发水平提供有效的、实用的支持。 1 2 2 研究内容 本项目的主要研究内容是: 研究内容l与协作单位合作研究分布式协作开发环境的集成设计概念、内容 和过程,以及该环境中的组件接口规范和集成标准。 研究内容2 研究系统设计工具的集成接口规范、集成标准、集成规则。 研究内容3 研究基于仿真的系统设计工具和基于组件的系统设计工具的集 成方法与集成手段。 研究内容4 研制面向基于仿真的系统设计工具和基于组件的系统设计工具 的集成框架,并将其加入分布式协作开发环境。 研究内容5 在集成框架上集成一组基于仿真的系统设计工具和一组基于组 件的系统设计工具。 1 2 3 关键技术 关键技术1 :分布式协作开发环境中系统设计工具的可扩充集成支持技术,包 括基于元数据驱动的插件支撑机制等。 关键技术2 :分布式协作开发环境中各类系统设计工具的数据转换技术,特 别要考虑分布式协作开发环境中可用的各种商品化工具的数据特征。 关键技术3 :分布式协作开发环境中系统设计工具间的协同控制机制,包括 系统设计工具间数据流和控制流的表示规范及其执行引擎技术。 关键技术4 :分布式协作开发环境中各类系统设计工具的数据集中管理与访 问技术,包括数据集中存储、版本控制、统一访问支撑机制。 关键技术5 :分布式协作开发环境中系统设计工具的跨平台集成支持技术, 包括可屏蔽平台差异的脚本语言解释执行机制,跨平台数据通信消息通信机制, 跨平台数据转换机制等。 第一章绪论 1 3 项目组工作整体介绍 本项目研制的系统设计工具集成平台,包括以下几个部分:面向用户的工具 层、用于工具集成的插件支撑层、提供相关功能服务和数据格式转换的服务容器 层、网络层、统一数据服务层、协同控制层和服务管理层。系统设计工具集成框 架的总体结构如图1 1 所示: 蹶 夯 插 越 系统设计上县l l| 系统设计上具2| 系统设计上具3 1 分布式协佟湃 | 分稚式协作歼1 分布式协作开l 期 捌发环境客户端州发环境客户端 一发环境客户端| 竺 til 定 ,服务生成工其: 撵 ; i; 脚 - - i - - - i i t - 口口l f ,衢蕊一 卤f 一一一一f 封一1 訇f 鞫一兰| 乙 | 翼臻 缀 赋 u 撵 : l 统一数据对象服务l 髫; : 高腰! 务 鳝用i 措 低鱼一墨 劳 服蠊 理 己堡0 t 妒v 一一一一一 图1 1 系统设计工具集成框架总体结构图 针对分布式协作开发环境对设计工具集成的要求,本项目采用以数据集成为 主,在其基础上进一步研究应用程序接口集成、协同控制集成和共同人机界面集 成的研究思路,将整个集成框架分解为四个层次:插件支撑层、服务容器层、统 一数据服务层和协同控制层。 一、插件支撑层 在一体化、分布式协作开发环境中,由于待集成工具的多样性,工具对外界 提供的数据和功能各不相同,协作开发环境获取工具数据和功能的方式也相差甚 4 u i 操作服务化工具的设计与实现 远。为达到工具间的互联、互通和互操作目的,统一数据获取和功能调用的方式 是十分必要的。 插件支撑层的目的在于对工具进行封装,并将工具以插件的形式集成到分布 式协作开发环境中,屏蔽不同工具在数据和功能访问上的差异,为协作控制层和 统一数据服务层提供透明的、无差异的数据访问和功能调用,从而为数据集成、 应用程序接口集成奠定基础。另外,插件支撑层也可根据开发环境的要求,进行 一定程度的共同人机界面集成,实现集成工具的统一管理。因此,插件支撑层集 中解决数据提供、功能提供和部分数据转换问题。 二、服务容器层 服务容器【lj 为服务提供运行环境,接受、解析服务请求,并调用相应的服务与 返回服务计算结果。服务容器中服务所需的核心计算将由插件层提供。 服务请求将采用语言中立的消息通信方式。服务请求者将调用服务所需的参 数封装在x m l 格式的s o a p 消息中,再将s o a p 消息封装在高层应用协议中( 如 h t t p 、f t p 、s m t p 等) ,封装完毕的协议流通过服务容器和网络组件发送到服务 所在机器节点,并由该节点上的服务容器进行逆向协议解析,从而获得调用服务 所需参数。 一旦服务容器通过网络组件获取服务计算所需参数,将直接调用插件运行时 并传递服务参数,插件运行时将进行参数的组装并调用工具自身接口,服务计算 完成后,将计算结果返回到服务容器,由服务容器再次将计算结果封装为特定的 协议并发送到服务请求者。 三、统一数据服务层 统一数据服务提供与数据存储和数据访问相关的接口集合。工具数据应尽可 能被其它协作者或工具所使用,为避免工具在数据上产牛相互依赖,统一数据服 务层集中所有的工具数据进行统一的存储和访问管理,并提供一致的数据访问服 务;为实现数据的统一,还需提供数据对象转换服务。 四、协同控制层 在数据集成的前提下,协同控制集成完成工具之间数据和功能的组织、安排 与调度,达到工具之间数据和控制流转的平滑相连。 采用工作流脚本描述语言,表示协作环境中工具在数据上的前后传递关系以 及功能上的前后调用顺序,并通过工作流引擎对工作流脚本的解释以及透明的远 程服务调用,实现数据在内部网络中各个工具节点间的传递和工具局部能力的组 装,构建面向综合电子信息系统的专用开发环境。 工作流执行引擎负责分布式协作流程的执行;服务容器中的执行引擎则负责 本地功能的组装,并可将组装的功能以一个服务的形式提供给分布式协作开发环 第一章绪论 境。通过对工作流引擎和本地引擎的利用,可达到提高本地组装能力和减少网络 传输负载的目的。 工作流引擎的实施可分为两个阶段:工作流部署阶段和工作流执行阶段。工 作流部署阶段主要是工作流设计人员通过工作流设计工具,针对其具体要求,对 设计开发人员进行安排与布置,将分布式环境下各个机器节点提供的服务进行合 理装配。完成工作流部署后,工作流引擎将工作流转换成中间表示形式。工作流 的执行阶段对中间表示形式进行解析,并根据工作流的部署要求,为本地或远程 服务准备所需数据,通过服务容器和网络组件将数据进行封装和传输,发出服务 请求到目的地机器节点并等待服务请求的返回。 1 4 1 国外研究现状 1 4 国内外研究现状 目前,美国、俄罗斯、以色列等发达国家都十分重视系统集成设计过程的一 体化建设。其在综合电子信息系统的集成设计与分析技术领域,研究工作丰要可 以分成三个方面: 1 针对系统设计内容和过程,创造和发展了多种系统设计方法与技术,如 c 4 i s r 体系结构框架、系统快速原型法、面向对象设计、基于组件的设计等,相 应地开发了多种商品化的系统设计工具,如c 4 i s ra r c h i t e c tf r a m e w o r k 、s y s t e m a r c h i t e c td e s i g n e r 、s t k 、o p e n n e t 设计分析工具等; 2 建模与仿真被用作系统设计分析与评估的主要手段和工具,例如利用仿真 试验床或仿真系统来仿真分析和评估上述设计方法和工具所得到的系统模型,根 据仿真试验结果对系统设计进行修改和优化等; 3 综合集成上述两个方面的技术、方法及工具,建立了集设计、建模与仿真、 测试评估等功能于一体的分布式协作开发环境,以满足复杂大系统的一体化设计 与分析的需要。 在分布式协作开发环境【2 】中,设计工具的集成是其中的一个关键环节。目前, 国外已经有一些开发环境在集成软件过程中多阶段开发工具与开发结果方面提供 了有效的支持,典型的有以下几种: 1 e c l i p s e :是一个开放源码、基于j a v a 的可扩展开发平台,它提供了一个框 架和一组服务,通过插件式的组件来构建开发环境,支持基于g u i 和非g u i 的应 用开发环境,且独立于语言和运行平台。e c l i p s e 的核心组件包括:插件开发环境 ( p l u g i nd e v e l o p m e n te n v i r o n m e n t ,p d e ) 、j a v a 开发工具集和e c l i p s e 平台,底 层由标准j a v a 2 虚拟机支持。 6 u i 操作服务化工具的设计与实现 2 i b m 的r a t i o n a lx d e :以建模、运行时分析和自动化测试为目标,是一个 覆盖整个软件开发生命周期的设计、编码、测试、团队沟通与构建文档的集成开 发环境。它综合了软件分析、设计、程序开发以及自动化测试,并以i b mw e b s p h e r e s t u d i ow o r k b e n c h 或m i c r o s o f tv i s u a ls t u d i o n e t 作为基础平台。 3 i b m 的r s a :是套设计与开发工具,它借助于u m l 2 0 技术实现了模型 驱动的软件开发模式。r s a 作为i b mr a t i o n a l 业务驱动软件开发平台的核心部件, 提供了与需求管理工具、测试工具、配置与变更管理工具、项目管理工具的集成 支持。r s a 中,提供了u m l 到j a v a 、u m l 到c + + 、u m l 到e j b 的模型转化机 制,为模型驱动软件开发( m d a ) 的模型转换提供了多侧面的工具支持。 4 微软的v i s u a ls t u d i o2 0 0 5t e a ms y s t e m :包含了项目管理人员、架构师、 开发人员、测试人员、开发管理人员所使用的一组工具。它支持用户界面集成、 数据集成和过程集成,同时也支持用户界面、数据、过程三个方面的可扩展性。 通过使用一个公共的、跨工具集的数据仓库,v i s u a ls t u d i o2 0 0 5t e a ms y s t e m 解 决了在大多数软件开发生存周期工具中建立数据仓库这一问题,并启动了一个聚 合的项目状态视图,团队根据能够收集到的规则来管理项目。在v i s u a ls t u d i o2 0 0 5 t e a ms y s t e m 中,工具的行为由项目开始时选择的过程来决定。 5 r h a p s o d y :是基于模型驱动的、面向嵌入式应用软件开发的可视化建模与 开发工具,广泛用于系统建模,使得用户在系统建模时无需关注软件实现的细节, 将重点放在系统高层的功能划分、结构分解、行为规范和需求分析上。r h a p s o d y 为系统工程师提供了部件图( b l o c kd i a g r a m ) 来描述系统总体结构,同时也支持 传统软件建模常用的数据流概念。 综上所述,国外主流的商品化开发环境与工具都向着一体化以及集成设计和 开发的方向发展,反映出目前软件工程方法和工具的应用与发展趋势。然而,这 些开发环境与工具不是面向军事应用系统开发过程的,特别是没有提供对基于仿 真的开发过程与设计工具的必要支持,因此不能直接运用到综合电子信息系统的 建模、设计、仿真、评测评估中。 但是,上述国外商品化开发环境与工具中采用的一些先进技术,如:插件式 可扩充开发平台( 如e c l i p s e ) ,模型驱动的软件开发模式( 如r s a 、r h a p s o d y ) , 支持用户界面集成、数据集成和过程集成( 如v i s u a ls t u d i o2 0 0 5t e a ms y s t e m ) 等, 这些对于分布式协作开发环境既是开展研究的可行性依据,也是可借鉴的技术基 础。 1 4 2 国内研究现状 国内在基于组件的综合电子信息系统设计方法以及分布式协作开发环境的建 第一章绪论 7 立和应用方面基本处于空白,没有将系统设计方法及过程有机地结合起来,没有 形成基于组件的系统集成设计概念、方法及技术。但是在相关技术领域( 如指控 系统建模与仿真、系统设计工具等) 已经开展了研究与应用工作。国内在这些领 域的研究成果为开展基于组件的综合电子信息系统设计技术研究工作奠定了基 础。 可见,国内在设计工具集成方面的研究相对国外起步比较晚,在集成技术的 研究面也相对比较窄。尽管如此,以上研究成果也为我们进一步研究工具集成提 供了一定的工作基础。同时也可以看到,开展面向基于组件的系统设计工具的集 成方法和技术的研究工作已经迫在眉睫。 1 5 本论文的工作介绍 如图1 1 所示,在数据集成的前提下,分布式协作开发环境可以协同控制集成, 完成工具之间数据和功能的组织、安排与调度,达到工具之间数据和控制流转的 平滑相连的目的。 本项目的目标是从应用程序( 基于u i ) 、事务( 基于a p i ) 、数据三个层次 上集成系统设计工具,使之成为分布式协作开发平台服务中的一部分,其中的插 件支撑层把待集成的系统设计工具的功能包装成服务。由于现有的系统设计工具 中存在一些未提供a p i 和源代码的工具,在事务层次上无法对该类工具进行包装, 而在整个分布式协作开发环境下又对该类工具存在集成功能需求。 本文针对项目中需要解决的这个问题,提出了一种基于消息模拟的u i 操作服 务化方法。使用该方法的前提是工具的功能可以通过一系列的u i 操作实现。如果 可以把这一系列的u i 操作信息记录下来,生成特定格式的x m l 文件,那么把对 该文件的解释执行包装成服务后,就可以解决该类工具无法提供功能服务的问题。 由于目前存在的消息模拟软件对上下文环境过于依赖,导致模拟的准确性低,灵 活性差,同时模拟的效率也不能够满足项目的要求,因此本文工作的主要内容就 是研制基于消息模拟技术的u i 操作服务化工具r c m a c r o ,使工具的u i 操作能 以服务的形式发布出去。本文中将给出r c m a c r o 的设计与实现。 r c m a c r o 的功能流程包括两个阶段:u i 操作的信息采集阶段和u i 操作的 解析执行阶段。r c m a c r o 在完成u i 操作的信息采集后,将采集到的u i 操作信 息保存为x m l 格式的文件。r c m a c r o 在解析执行阶段对操作信息进行解析, 并根据这些信息通过消息模拟的方式执行u i 操作。 u i 操作服务化工具的设计与实现 1 6 本文的结构 本文共分七章,第一章介绍了项目背景、项目研究目标及内容、项目研究现 状、本文的工作内容和论文的组织结构。第二章列举了项目研究过程中涉及到的 关键理论和技术,并一一做了简单描述。第三章对u i 操作服务化工具r c m a c r o 的各个部分进行了简单的介绍。第四章着重讨论了r c m a c r o 中的u i 操作信息 采集工作,描述了如何采集所需的u i 操作信息。第五章着重介绍r c m a c r o 如 何解析执行u i 操作。第六章展示了实际的例子,用来说明r c m a c r o 是如何工 作的。最后一章是结束语,对本文所做的工作进行了概括性的总结。 第二章相关技术 9 2 1 1 工具集成技术 第二章相关技术 2 1 项目中采用的相关技术 工具集成【3 】【4 】【5 1 是指多个工具共享一个用户界面,分别支持一个完整开发过程 的各个开发阶段,通过数据交换完成共同的目标。工具集成一般包括a p i 集成, 用户界面集成( u i 集成) 和数据集成。 a p i 集成是指通过数据封装和行为重用为用户和其他工具提供a p i ,使其数据 能被访问。在使用一组工具时通常需要将不同工具的部分功能进行特定方式的组 合以提供新的功能。目前有很多框架规范的实现可以做到这一点,如c o r b a 、 d c o m 和w e bs e r v i c e s 等,它们都提供了接口和实现的分离,接口可以看成两个 软件构件之间的一种协议。 用户界面集成是指在集成平台中实现对各个被集成工具的界面控制。界面集 成有两种方式:其一,将被集成的工具界面连接或嵌入到集成平台中,用户在集 成平台中对所需的工具界面进行切换使用。这种情况可用电视作比喻,电视屏幕 相当于集成平台界面,不同频道的电视节目相当于被集成的不同工具的界面。其 二,将被集成的工具视为一个模块,在集成平台的界面中对该模块进行控制,各 个模块互相协作,受集成平台的控制在后台运行。如果将这两种方式的集成效果 用一个算式来表示,则前一种是“1 + 1 = 2 ,而后一种是“1 + 1 2 。 数据集成是指维护数据源整体上的数据一致性,数据在各个被集成的工具中 实现共享和自动调用,提高信息共享的效率。数据共享是指将数据用特定的数据 结构加以表示,使被集成的工具识别并使用这些数据。数据自动调用是指数据按 一定的协议在被集成的工具间交换和使用。数据集成系统为用户提供统一的数据 源访问接口,执行用户对数据源的访问请求。数据集成的核心任务是要将互相关 联的分布式异构数据源集成到一起,使用户能够以透明的方式访问这些数据源。 本文中的内容主要是针对项目中遇到的一些没有提供a p i 和源码的工具,无 法用a p i 集成对该类工具集成,而项目又对该类工具有功能服务的要求,详细分 析了一种u i 操作服务化的方法【6 】。 2 1 2s o a 技术 面向服务的架构7 1 ( s e r v i c e o r i e n t e da r c h i t e c t u r e ,s o a ) 是一个组件模型,它 1 0 u i 操作服务化工具的设计与实现 将应用程序的不同功能单元服务( s e r v i c e s ) ,通过服务间定义明确的接口和 契约联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操 作系统和编程语言,使得在这样的系统中所构建的服务可使用统一和标准的方式 进行通信。因此,对于分布式协作开发环境的分布式开发要求与集成更广泛的设 计工具,s o a 具有积极的支持作用。但是,s o a 主要面向的服务具有无状态保持 的特征,因此需要与其他有状态保持能力的集成技术相互综合后加以应用。 本项目采用s o a 的思想对工具进行集成,将待集成工具的能力包装为服务, 通过调用服务接1 3 实现对工具功能的使用,在高层次上采用b p e l 8 】【9 】( b u s i n e s s p r o c e s se x e c u t el a n g u a g e ) 实现对一些既定流程的设计和组织,系统从整体上看是 松耦合的,具有较强的可替换性,并屏蔽了工具集成的实现细节。 w e bs e r v i c e s 7 】【l o 】【1 l 】是一个软件接口,它描述了一组可以在网络上通过标准化 的x m l 消息传递访问的操作。它使用基于x m l 1 2 】的协议来描述要执行的操作 或者要与另一个w e b 服务交换的数据。在s o a 中,一组以这种方式交互的w e b 服务定义了特定的w e b 服务应用程序。w c b 服务试图解决的丰要问题是数据和 应用程序集成的问题,以及将技术性的功能转换为面向业务的计算任务的问题。 这两个方面使企业可以就流程或应用程序层面与他们的合作伙伴进行交流,同时 为适应新形势或按照需要与不同合作伙伴进行合作留有动态的余地。 w e b 服务所使用的x m l 可以用真正与平台无关的方式来描述任何( 所有) 数据以跨系统交换数据,实现应用程序间的松耦合。另外,w e b 服务可以在较抽 象的层面上工作,在这样的层面上可以按照需要动态地重新评估、修改或处理数 据类型。所以,从技术上来看,w c b 服务可以更方便地处理数据,并且允许软件 更自由地进行通信。 从更高的概念层面上看,我们可以将w e b 服务视为一些工作单元,每个单元 处理特定的功能任务,进而可以将这些任务组合成面向业务的任务,以处理特定 的业务,从而使非技术人员可以考虑一些应用程序,这些应用程序能够在w e b 服 务应用程序工作流中一起处理业务问题。因此,一旦由技术人员设计并构建好w e b 服务之后,业务流程架构师就可以聚集这些w e b 服务来解决业务层面上的问题。 这里可以借用汽车引擎来类比:业务流程架构师是在考虑将整个汽车引擎与汽车 框架、车身、变速器和其他系统组合在一起,而不是在研究每个引擎内的各个部 件。而且,拥有动态平台则意味着引擎可以与其他汽车制造商的变速器或部件一 起工作。 最后一个方面是,w e b 服务有助于在组织内的业务人员和技术人员之间架起 第二章相关技术 一座桥梁。w e b 服务使业务人员更容易理解一些技术上的操作。业务人员可以描 述一些事件和活动,然后技术人员可以将这些事件和活动与相应的服务相关联。 2 2 与r c m a c r 0 相关的技术 2 2 1w i n d o w s 的消息机制 w i n d o w s 系统是一个消息驱动【l3 】的操作系统。w i n d o w s 应用程序的输入由 w i n d o w s 系统以消息的形式发送给应用程序的窗口。这些窗口通过窗口过程来接 收和处理消息,然后把控制返还给w i n d o w s 。 一、消息的分类 从消息的发送途径上看,消息分两种:队列消息和非队列消息。队列消息送 到系统消息队列,然后到线程消息队列;非队列消息直接送给目的窗口过程。 w i n d o w s 维护一个系统消息队列( s y s t e mm e s s a g eq u e u e ) ,每个g u i 线程有 一个线程消息队列( t h r e a dm e s s a g eq u e u e ) 。 鼠标、键盘事件由鼠标或键盘驱动程序转换成输入消息并把消息放进系统消 息队列,例如w mm o u s e m o v e 、w ml b u t t o n u p 、w mk e y d o w n 、 w mc h a r 等等。w i n d o w s 每次从系统消息队列移走一个消息,确定它是送给哪 个窗口的和这个窗口是由哪个线程创建的,然后把它放进窗口创建线程的线程消 息队列。线程消息队列接收送给该线程所创建窗口的消息。线程从消息队列取出 消息,通过w i n d o w s 把它送给适当的窗口过程来处理。 除了键盘、鼠标消息以外,队列消息还有w mp a i n t 、w mt i m e r 和 w m 。这些队列消息以外的绝大多数消息是非队列消息。quit 从消息的来源来看,消息可以分为:系统定义的消息和应用程序定义的消息。 二、消息循环 应用程序通过消息循环来获得对消息的处理。 每个g d i 应用程序在主窗口创建之后,都会进入消息循环,接受用户输入、 解释和处理消息。 消息循环从消息队列中得到消息,如果不是快捷键消息或者对话框消息,就 进行消息转换和派发,让目的窗口的窗口过程来处理。 当得到消息w mq u i t ,或者:g e t m e s s a g e 出错时,退出消息循环。 1 2 u i 操作服务化j f 具的设计与实现 w i n d o w s 消息驱动模型如图2 1 所示: 消息l溺纛2 满息3 图2 1w i n d o w s 消息驱动模型 2 2 2w i n d o w sh o o k 技术 钩子【1 3 】【1 4 】 1 5 l ( h o o k ) ,是w i n d o w s 消息处理机制的一个平台。应用程序可以在 上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所 创建的。当消息到达后,钩子子程在目标窗口处理函数之前处理它。钩子机制允 许应用程序截获处理w i n d o w s 消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当 特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子 函数先得到控制权。这时钩子函数即可以加工处理( 改变) 该消息,也可以不作 处理而继续传递该消息,还可以强制结束消息的传递。 每一个h o o k 都有一个与之相关联的指针列表,称之为钩子链表,由系统来维 护。这个列表的指针指向指定的、应用程序定义的、被h o o k 子程调用的回调函数, 也就是该钩子的各个处理子程。当与指定的h o o k 类型关联的消息发生时,系统就 把这个消息传递到h o o k 子程。一些h o o k 子程可以只监视消息,或者修改消息, 或者停止消息的前进,避免这些消息传递到下一个h o o k 子程或者目的窗口。最近 安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得 控制权。 w i n d o w s 并不要求钩子子程的卸载顺序一定得和安装顺序相反。每当有一个 钩子被卸载,w i n d o w s 便释放其占用的内存,并更新整个h o o k 链表。如果程序安 装了钩子,但是在尚未卸载钩子之前就结束了,那么系统会自动为它做卸载钩子 的操作。 w i n d o w sh o o k 有以下几种类型: 第二章相关技术 1 、w hc a l l w n d p r o c 和w hc a l l w n d p r o c r e t :这两类钩子可以 监视s e n d m e s s a g e 发送的消息。系统在向窗体过程发送消息前,将调用 w hc a l l w n d p r o c ;在窗体过程处理完该消息后系统将调用 w hc a l l w n d p r o c r e t ,它会向钩子过程传送一个c w p r e t s t r u c t 结构的 地址。该结构包含了窗体过程处理系统消息后的一些信息。 2 、w hd e b u g :系统在调用与某种钩子类型联系的钩子过程前,将调用 w hd e b u g ,应用程序可以使用该钩子决定是否让系统执行某种类型的钩子。 3 、w hf o r e g r o u n d i d l e :系统在空闲时调用该类钩子,在后台执行优先 权较低的应用程序。 4 、w hg e t m e s s a g e :该类型的钩子使应用程序可以拦截g e t m e s s a g e 或 p e e k m e s s a g e 的消息。应用程序使用w hg e t m e s s a g e 监视鼠标、键盘输入和 发送到队列中的其它消息。 5 、w hj o u r n a l r e c o r d :该类型的钩子使应用程序可以监视输入事件。 典型地,应用程序使用它记录鼠标、键盘输入事件以供以后回放。该类型的钩子 是全局钩子,并且不能在指定线程中使用。 6 、w hj o u r n a l p l a y b a c k :该类型的钩子使应用程序可以向系统消息队 列中插入消息。它可以回放以前由w hj o u r n a l r e c o l m 钩子录制的鼠标、键 盘输入事件。在该类型的钩子安装到系统时,鼠标、键盘输入事件将被屏蔽。它 同样是一个全局钩子,不能在指定线程中使用。它的钩子函数返回一个时间暂停 值,它告诉系统,在处理当前回放的消息时,系统等待百分之几秒。这使得此钩 子可以控制在回放时的时间事件。 7 、w hk e y b o a r d :该类型的钩子使应用程序可以监视由g e t m e s s a g e 和 p e e k m e s s a g e 返回的w mk e y d o w n 及w mk e y u p 消息。应用程序使用该钩 子监视发送到消息队列中的键盘输入。 8 、w hm o u s e :该类型的钩子使应用程序可以监视由g e t m e s s a g e 和 p e e k m e s s a g e 返回的消息。应用程序使用它监视发送到消息队列中的鼠标输入。 9 、w hm s g f i l t e r 和w hs y s m s g f i l t e r :这两种钩子使应用程序可以 监视菜单、滚动条、消息框、对话框,当用户使用a l t + t a b 或a l t + e s c 来切换 窗体时,它们也可以拦截到消息。w hm s g f i l t e r 仅在应用程序内部监视菜单、 滚动条、消息框、对话框,而w hs y s m s g f i l t e r 则可以在系统内监视所有应 用程序的这些事件。 1 0 、w hs h e l l :一个s h e l l 程序可以使用w hs h e l l 钩子来接收重要的 信息。当一个s h e l l 程序被激活前或当前窗体被创建、销毁时,系统会调用 w hs h e l l 钩子函数。 1 1 、w hc b t - 系统在激活,创建,销毁,最小化,最大化,移动,改变窗 1 4 u i 操作服务化工具的设计与实现 体的大小前,或者在完成一条系统命令前,或者在从系统消息队列中移去鼠标或 键盘事件前,或者在设置输入焦点前,或同步系统消息队列前,将调用w hc b t 钩子。w h c b t 类型的钩子一般倾向于用在其预计算机培训的应用中。 第三章u i 操作服务化t 具r c m a c r o 的体系结构 1 5 第三章操作服务化工具r c m a c r 0 的体系结构 3 1r c m a c r 0 的设计目标 为了把u i 操作包装成服务,r c m a c r o 首先需要记录u i 操作的信息,生成 特定格式的x m l 文件,然后解释执行该文件。r c m a c r o 的设计目标如下: 1 、对一系列的人机界面交互操作信息能够完整捕获; 2 、对操作信息必须具有信息过滤功能,只采集与工具功能相关的信息; 3 、支持尽量多常见控件的处理; 4 、消息模拟必须脱离以往对鼠标位置的依赖; 5 、消息模拟引入脚本编辑形式,增加模拟的灵活性; 6 、u i 操作的解析执行必须能够包装成服务的形式; 7 、支持持久化存储采集信息; 3 2r c m a c r 0 的体系结构 r c m a c r o 的体系结构图如图3 1 所示: o 厮网 面控件2 控件信息存储器 消息捕获策略器 斧 铲 理 层 消息流 一谤怠硒滠f _。 爿动作脚本编辑器 脚本解释器 动 炉 编 辑 层 消息捕获器 消息处理器 游 怠 必 理 层 消息存储器 消息解析器 消息模拟器 图3 1r c m a c r o 的体系结构图 潸 怠 模 拟 层 1 6 u i 操作服务化t 具的设计与实现 r c m a c r o 主要包含两大功能模块:u i 操作信息采集模块和u i 操作解析执 行模块。 一、u i 操作信息采集模块 用户在使用工具的过程中,可以通过一系列的u i 操作来实现工具的某种功能。 u i 操作信息收集模块就是负责把这一系列的u i 操作中有效的信息记录下来,提供 给u i 操作解析执行模块使用。它由以下四个子模块组成: 1 、控件管理层 控件管理层由两个功能模块组成:控件信息存储器和消息捕获策略器。 控件信息存储器:用来记录一些控件的基本信息,如控件类型以及该控件能 够触发的消息等。由于操作系统中的控件多种多样,由它们触发的消息类型也种 类繁多,这给消息的捕获带来相当的难度。因此我们有必要针对一些常用的控件 进行信息管理。 消息捕获策略器:为了提高捕获消息的效率和准确性,针对特定控件制定消 息捕获策略。 2 、消息处理层 消息处理层由两个功能模块组成:消息捕获器和消息处理器。 消息捕获器:消息捕获器用来捕获用户在使用系统设计工具时产生的鼠标键 盘等输入消息,它由安装的几个钩子组成,包括w hj o u r n a l r e c o r d 和 w hc a l l w n d p r o c ,可以根据应用的需要再安装其它类型的钩子。对于没有开 放接口但通过与其界面交互可以实现某些功能调用的工具,我们可以使用消息捕 获器,根据消息捕获策略器制定的策略把与人机界面交互的一系列操作捕获,交 给消息处理器处理。 消息处理器:消息处理器用来对捕获的消息进行处理,通过消息结构体中的 句柄获得更多静态信息,主要是消息储存器所需要的控件或窗口的信息。 3 、动作编辑层 由于安装钩子对系统的性能有一定的影响,而且捕获操作的效率低下,因此 本架构引入了动作编辑这一功能。 动作编辑层由两个功能模块组成:动作脚本编辑器和脚本转换器。 动作脚本编辑器:通过这个编辑器可以把用户的操作以脚本的形式直接编写, 只需要提供一些对控件操作的基本信息即可。其中动作脚本的

温馨提示

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

最新文档

评论

0/150

提交评论