已阅读5页,还剩58页未读, 继续免费阅读
(计算机应用技术专业论文)基于eca规则的主动机制的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河海人学硕士学位论文 摘要 摘要 在程序设计语言中,如果能将主动切换计算方法或调度算法、主动适时提出 警告、主动实现动态修改或自适应的动作等需求和功能用一种简单而统一的方法 和机制来实现,这将是十分理想的。在程序设计语言中定义这些行为的规则是主 动规则,e c a 规则是公认的主动规则形式。 本文在一个源语言系统和一个面向对象语言的对象模型基础上,研究了主动 机制系统的体系结构。该系统分为两个子系统:编译子系统和执行子系统。在每 个子系统中,本文分别从支持面向对象和主动机制技术的角度,分析了子系统的 组成、工作流程、用户使用模式和典型算法等。 在主动机制系统中,本文提出了内部过程和外部过程的概念,并对规则终止 性分析的方法进行了研究。 关键词:e c a 规则、主动机制、主动面向对象系统、规则终止性分析 河海大学硕士学位论文摘要 a b s t r a c t a ne a s ya n du n i f o r mm e c h a n i s mi np r o g r a m m i n gl a n g u a g e ,w h i c hi st o f u l f i l l s u c hr e q u i r e m e n t so rf l m e t i o n sa sa c t i v es h i f to f c a l c u l a t i n go rd i s p a t c hm o d e ,a c t i v e a n dt i m e l ya l a r m sa n da c t i v ed y n a m i cm o d i f i c a t i o no rs e l f - a d j u s t a b l es t e p s ,w i l lb e h i 曲l yd e s i r a b l e r u l e sd e f i n i n gt h e m a l ea c t i v er u l e s ,o fw h i c he c a r u l ei st h e c o m m o n l yr e c o g n i z e d o n e t h ep a p e rs t u d i e sa r c h i t e c t u r eo fa c t i v em e c h a n i s mo nt h eb a s i so fs o u r c e l a n g u a g ea n do b j e c tm o d e lo fo b j e c t o r i e n t e dl a n g u a g e t h ea c t i v em e c h a n i s mi s c o m p r i s e do ft w os u b s y s t e m - c o m p i l e ra n de x e c u t o r i ne a c hs u b s y s t e m ,t h ep a p e r a n a l y s e s i t s f o r m ,w o r k i n gp r o c e s s ,u s e r sm o d e la n dt y p i c a la l g o r i t h m sf r o mt h e p o i n to f o b j e c t - o r i e n t e da n dt e c h n o l o g yo f a c t i v em e c h a n i s ms e p a r a t e l y t h e p a p e r i n v o l v e st h ec o n c e p t i o no f i n t e r n a l p r o c e d u r ea n de x t e r n a l p r o c e d u r e , a sw e ut h e s t u d yo fm e t h o do fr u l et e r m i n a t i o na n a l y s i si ns e a r c ho fa c f i v e m e c h a n j s m k e yw o r d s :e c ar u l e 、a c t i v em e c h a n i s m 、a c t i v eo b j e c t o r i e n t e ds y s t e m 、r u l e t e r m i n a t i o n a n a l y s i s 河海大学硕士学位论文 基于e c a 规则的主动机制的研究 第一章绪论弟一早珀i 匕 传统的程序设计语言系统是一种典型的“服务程序”,只能根据所编程序中 预先写好的语句依次被动执行。面向对象的程序设计语言系统支持消息传递,但 是它仍不会主动为用户做任何事情。本文研究能根据各种事件( e v e n t ) 的发生或环 境的变化主动给用户提供相应服务的具有主动机f 6 l j ( a c t i v em e c h a n i s m ) 的语言系 统。系统中的主动功能是通过主动规则( a c t i v er u l e ) 及其处理实现的,对主动规 则的研究是主动机制系统的一个中心环节。 1 1 主动机制系统( a c t i v em e c h a n i s ms y s t e m ,a m s ) 1 1 1 主动机制系统的应用与需求 程序设计语言的问题是一个传统的老问题,从机器语言、汇编语言到如今各 种面向对象的程序设计语言,已经实现的程序设计语言不下数干种。所有这些程 序设计语言几乎都有一个公共的特性,那就是用它们所编出的程序本身只能根据 程序的规定被动地执行,程序中写什么语句,系统就做什么动作。它丝毫不会根 据周围动态发生的事件或状态等的变化主动地做些别的什么,以应付相应事件的 发生,或适应周围环境的变化。然而在实际应用中,主动性需求是经常遇到的。 以下列举一些对系统提出的各种主动性需求: 实时监控和报警功能 2 】。例如仓库、设备或过程等的实时监控功能,包括: 状态监控、性能监控、安全监控和报警、故障( 或错误) 的监控等等。现在它们 都是由各种应用程序各自来实现的,各用各的“招”,费工夫,效率低。 例外或错误的主动处理和自动恢复功能。当应用程序运行过程中产生例外 或错误时,理想的系统不但有报警功能,而且应有主动处理乃至自动恢复的能力, 以使系统具有一定的容错功能。 系统瞬时状态的输出或关键点状态的输出。即所谓主动“快照”的功能, 它能把系统的一些瞬时状态自动记录或输出。 适应多部门协同工作【3 】。各部门协同工作需要相互之间通信,要求通信的 双方能够主动地检测到对方送来的信息并进行处理。 自适应和学习能力【4 】。一些智能应用系统应能根据周围动态发生的事件或 状态的变化主动地做些什么,以适应相应事件的出现或环境的变化。且这种系统 能在运行中不断积累经验,使得系统越用越好。 演绎推理功能【5 1 。应用系统能根据当时具体发生的事件,自主地做一些推 理,从而自动采取相应的措旖。 方便灵活的交互性。系统能够主动地检测各种外部设备送来的中断信号, 使得交互功能方便灵活,也有利于改善人机交互界面。 系统参数( 或默认值) 的自动选择,处理方法( 检索策略或调度策略谗 的 河海大学硕士学位论义 基于e c a 规则的主动机制的捌f 究 自动切换。 这些需求和功能如果能用一种简单而统一的方法和机制来实现将是十分理 想的。把主动性功能有机地嵌入程序设计语言,让程序设计语言具有更多的主动 性,将是很有意义的事情。这样一来,用主动程序设计语言编写的应用程序系统 就可在某些事件发生或周围环境变化时主动执行一些预先设定的规则和动作。 1 1 2 主动机制系统概念及其特征 1 a m s 概念 a m s 的概念自8 0 年代提出至今,虽然经历了8 0 年代后半期的大发展和9 0 年代的持续研究,人们从不同的方面对其本质和特性提出了各种各样的看法和建 议,但对其定义仍未达成广泛的共识。综合起来,对a m s 的认识包括下面几方 面:a _ m s 能够自动对系统内外状态作出反应:a m s 允许定义和执行相应活动: a i m s 是传统语言系统和规则处理器的结合;a i m s 的信息体是动态的,并且能够 以有效的方式对用户作出智能的反应,它是传统语言系统和人工智能技术的结合 产物【6 】;a m s 就是让系统具有各种主动进行服务的功能,并以一种统一而方便 的机制实现各种主动服务需求;a m s 是传统语言系统内嵌反应行为的功能以支 持主动应用的语言系统。 a m s 的思想使得系统能用统一的方法把各种主动服务功能与被动系统集成 在一起,以利于软件的模块化和软件重用,同时也增强了系统的自我支持能力。 系统提供主动功能的实质就是系统在提供被动服务的过程中,由于一些事件的发 生而触发系统主动地执行用户规定的操作和处理。执行操作和处理事件的主动功 能完全来源于事件的触发,即事件驱动机制。主动机制系统能够自动对内部的或 外部的状态变化进行反应,而无需用户干预。定义这种行为的规则是主动规则。 为了支持系统的主动行为,系统中必须提供一个知识模型( k n o w l e d g em o d e d 和 一个执行模型( e x e c u t i o nm o d e l ) 。知识模型是主动机制的描述,用来构造一个主 动机制模型,而执行模型是规则在运行时的处理策略。 主动机制系统公认的主动规则是e c a ( e v e n t - c o n m t i o n _ a c t i o m 规则【7 】即事 件条件活动规则。e c a 规则由事件、条件、活动三部分组成。事件是 引发规则执行的原因,条件是规则被执行后要检查的内容,活动是规则被触发且 条件为“真”时要执行的动作。e c a 规则的语义是:当规则中定义的事件发生 时,计算机就主动计算相应的条件,当条件满足时执行相应的动作。 大多数a m s 都支持具有事件、条件、行为三个组成部分的e c a 规则。然而, 在有的情况下,e c a 规则的事件或条件部分是缺失的或者是隐含的,但事件和 条件部分至少给出一个。下面两种情况都是e c a 规则的变体。 无事件部分。这样的一条规则变成c a ( c o n d i t i o n - a c t i o n ) 规则,也称为产 生式规则。 河海大学硕士学位论文 基于e c a 规则的主动机制的研究 无条件部分。这样得到的规则是e a ( e v e n t a c t i o n ) 规则。相当于条件部分 永远为真的e c a 规则。当这样的一条规则监视的事件发生时,条件部分不必检 查就直接执行其行为部分。 e c a 规则是主动系统的灵魂,对主动系统的研究和开发也主要是围绕着如何 使系统支持e c a 规则展开的。 2 a m s 的特征 经过长期的研究与开发实践,人们发现主动机制系统具有下面的一些特征。 主动机制系统的本质特征 a m s 必须是语言系统。换句话说,即使忽略了所有的主动功能,a m s 仍然能够如同一般语言一样工作。 支持e c a 规则定义和管理。a i m s 在支持行为表示、执行方面扩展了传 统的程序设计语言,行为表示必须是用户能说明、定义的。首先,a m s 必须提 供定义事件、条件和行为的方法。其次,a m s 必须支持规则管理和规则库变化。 e c a 规则集是a m s 的一部分,a m s 当前存储了哪些规则及其如何定义的信息, 对用户和应用都是可见的。另外,规则库必须是动态的。a m s 必须允许定义新 的规则,删除过时的规则,修改现存规则的事件、条件和行为的定义。规则可以 设为“无效”和“有效”状态。 a m s 具有执行模块。首先,a m s 能自动检测各种事件的发生,不必由 应用程序发出事件发生信号。其次,a m s 必须能判断条件。a m s 在事件检测之 后必须能够判断条件,而且能够把信息从事件传递给条件。另外,a m s 必须能 执行活动。当检钡, j j n 事件发生并判断条件为真时,a m s 能够执行相应的行为, 必须可以把信息从条件传递给行为。最后,a m s 必须有定义明确的执行语义。 即必须定义何时如何在什么系统状态下判断条件、执行行为。 主动机制系统的可选特征 a m s 用数据模型术语表示e c a 规则信息。这样,检索功能检验规则库 就比较容易了。 a m s 支持设计环境、有良好的可用性。一般需提供工具,如:规则浏览 器、规则设计器、规则分析器、调试器、维护工具、跟踪工具。 本质特征是所有a m s 都必须具备的,而可选特征是某些功能较强的a m s 表现出来的特征。 1 1 - 3 主动机制系统的研究与应用状况 将主动规则引入程序设计语言中似乎是一件简单明了的事情,但实际情况并 非如此。人们对主动机制作了大量的研究和实验,针对如何使系统支持千差万别 的主动功能,提出了大量的提议。这些提议涉及到事件语言的表达,判断条件和 执行行为时所能访问的系统状态,以及事件发生后何时判断条件和执行行为等。 河海大学硕| - 学位论文 基于e c a 规则的主动机制的研究 使主动系统研究复杂化的原因还有各个具体系统的要求各不相同,这些具体系统 的要求受各种因素的影响,例如,扩展成主动系统的被动系统的特点,主动系统 所支持的应用的特点。 1 2 主动机制在数据库中的应用 软件的主动性概念最初出现在七十年代中期开始设计的a d a 语言中,异常 处理设施就是一种能根据程序执行中异常的发生而主动触发某些预先设定动作 的编程措施。主动机制在数据库中的应用,即为主动数据库。 1 主动数据库概述 主动数据库的鼻祖是e s w a r a n ,他于1 9 7 6 年提出了触发器的概念。但是触 发器的思想却沉寂了十几年,一直到1 9 8 3 年,m m o r g e n s e r n 才正式提出主动数 据库的术语。从8 0 年代末以后,主动数据库的研究和开发变得十分活跃,成为 这一时期的数据库研究热点,相继出现了大批的研究和试验系统。m m o r g e n s e m 称主动数据库是个“将数据库和人工智能技术组合在一起的范例 8 】”。 h i p a c 9 1 中提出在主动数据库管理系统中使用e c a 规则作为主动机制,定义 了耦合模式。耦合模式指定一个规则条件的计算和规则动作的执行如何与探测到 的事件及事件发生的事务相关联。h i p a c 定义了立即式( i m m e d i a t e ) 、延迟式 ( d e l a y e d ) 和分离式( s e p a r a t e d ) 耦合模式。 在p o s t g r e s 1o 中规则也定义为e c a 规则。它把对一个对象进行的 r e t r i e v e 、r e p l a c e 、d e l e t e 、a p p e n d 、n e w ( r e p l a c eo ta p p e n d ) 、o l d ( d e l e t eo rr e p l a c e ) 等操作看作为事件,条件可以是任何的p o s t q u e l 查询,动作可以是任何 p o s t q u e l 命令序列。p o s t g r e s 不支持对时序、外部事件和复合事件的处理。 s t a r b u r s t 叫也支持e c a 规则。它可以监视对一个表进行i n s e r t 、d e l e t e 和 u p d a t e 的事件。条件可以是任何s q l 查询,动作是数据库命令的序列。 在a r i e l i l l 中,产生式规则定义在p o s t g r e s 之上。允许c a 规则,它只使 用条件来指定触发规则的逻辑事件,逻辑事件可以由一个查询或一个关系视图来 表达,并将逻辑事件指定为一个或多个物理事件的结果。 在o d e 【l 2 】中将触发器引入面向对象的数据库系统中。其原始事件( p r i m i t i v e e v e n t ) 是由一个对象方法所进行的创建、删除、更新和访问。o d e 还通过与基本 事件相关的事件表达式支持复合事件。事件表达式可以在事件间定义先后次序。 o d e 还定义了第三种类型的事件即外部事件,它能激发数据库之外( 或者在应用 程序中或者在操作系统中或者在硬件中) 的事件的发生。其它基于e c a 规则并且 还能够激发外部事件的系统还有r e a c h 和s 创0 s 。 在c h i m e r a 【“j 中提出一个不同的事件处理模型,即事件消费模式( e v e n t c o n s u m p t i o nm o d e ) a 0 d i a z ,a j a i m e 提出了一个面向对象数据库( o o d b ) 的规则管理器e x a c t 。 4 河海火学硕二e 学位论文 基于e c a 规则的主动机制的研宄 在o o d b 中,e c a 规则主要用来提供主动行为,在应用时很难预测未来的需求, 因此应使规则管理非常容易扩展,用户只要对其进行剪裁就可以适合特定的应 用。为此e x a c t 提供了多种选择,设计者可以选择一种最适合的规则所支持的 概念语义。 当在一个主动数据库系统定义许多规则时,有可能它们之间互相触发。这个 触发过程可能无限她继续下去,这叫做非终止的。显然应该阻止这种情形。w k i m 探讨了分析可终止性的静态方法,并在规则集合上定义一个充分的条件来保证它 们是能终止的。c c o m a i ,l ,t a n c a 提出用d a t a l o g 的特性设计语言,但是这种语言 不能表达非终止的程序。e b a r a l i s 提出触发图( t r i g g e r i n gg r a p h ) 和活化图( a c t i v e g r a p h ) 的概念,使之成为规则执行终止性判定的主要依据。 o r a c l e 、s y b a s e 等数据库厂商也纷纷为其产品增加或增强“主动机制” 触发器或规则。i s o 的s q l 3 标准也己支持通用的主动规则机制。它们所支持的 语义有:基本事件和简单的复合事件;立即式的e c 和c a 耦合;多种规则粒度; 串行的规则选择和可中断的规则执行方式等。这充分说明了主动机制已经在数据 库中得到广泛的承认和接受,并且具有广阔的发展前景。 在主动数据库领域取得的主要研究成果有:e c a 规则成为公认的主动规则 形式:提出了丰富的规则语义,如优先级、耦合方式等;建立并强调独立的事件 机制;提出复合事件的概念以及e c a 规则在其它领域的应用。 2 目前商业数据库中对主动机制支持的现状 主动数据库管理系统( a d b m s ) 是通过在d b m s 的基础上添加主动规则,在 数据库的事务层管理中实现规则逻辑的定义和限制。当前主动数据库的商业产品 中,主要是通过触发:器( t r i g g e r ) 、约束( c o n s t r a i n t ) 、主键( p r i m a r yk e y ) 、外键 ( f o r e i g nk e y ) 、默认值( d e f a u l tv a l u e ) 来实现和保证数据库的一致一 生( c o n s i s t e n e y ) 和完整。陛( i n t e g r a l i t y ) 。a d b m s 在每一个数据库操作之前都会先检查和应用约束、 主键、外键、默认值等规则,如果符合条件则执行该操作,操作执行后就按所发 生的操作事件检查触发器是否被触发,如被触发,则执行触发器定义的操作。广 义上来说主键、外键、默认值等都是一种数据的约束,都属于e c a 规则中的在 操作执行前先检验的提前模式( b e f o r em o d e ) 主动规则,即执行数据操作以前检查 数据是否满足约束条件,如果满足则执行该数据操作,否则拒绝执行。 目前流行的一些商用数据库系统在某种程度上支持主动机制,但是它们所支 持的语义主要是简单事件( p r i m i t i v ee v e n t ) ,只支持立即式( i m m e d i a t em o d e ) 的e c 和c a 耦合。在实际的应用中有一定的不足之处,不能完全满足实际应用的需要。 下面以m ss q l s e r v e r 2 0 0 0 为例说明。 在t - s q l 中,触发器是完全基于事件的触发机制。当触发事件发生时,无 论数据库状态是否发生改变,触发器都会执行定义的动作。即缺乏条件判断。 河海大学硕士学位论文 基于e c a 捌则的主动机制的研究 在t - s q l 中,定义外键相当于定义了表间的关联规则,限制了对应表的 i n s e r r 和d e l e t e 的操作。但它的定义只能用于拒绝操作,却不能定义为连带的触 发器操作。例如:对于一个数据库中的两个关系r ,a ) 和r ( a ,b ) ,若要求当插 入w 的一个记录t ( a ,b ) 时必须在r 中存在一个的记录t ( k ,a ) ,在删除r 中的记录 t ( k ,a ) 时系统能够同时把r 中的所有满足t ( a x ) ( x 为任意值) 的记录也自动删除。 这种逻辑就是外键所不能表示的,在s q l 中必须要同时使用多个其他的约束方 法才能实现。 t - s q l 定义的触发器只能是定义单方面的数据库事件发生表。发生数据操 作或数据变化之后为了维持数据一致性和完整性要求对其它预定义数据表执行 预先定义的一系列数据操作。由于实际数据库的数据表之间的数据关联往往是相 互的,彼此互动,这种关系如果在s q l 中实现只能分别对每一个商业逻辑所涉 及的各个表定义单向的触发器规则,这样一来定义和维护触发器既麻烦而且可能 会出现不一致的情况,甚至会由于第一种情况导致不可终止,从而触发器不能发 挥它保证数据完整性的作用。 1 3 本文工作及组织 1 本文工作 近年来,面向对象技术的程序设计与主动机制技术的相互结合,相互渗透, 为主动程序设计语言的研究与开发创造了条件,从而使之成为当前程序设计语言 中一个活跃的研究领域。 由于获得目前广泛使用的面向对象语言编译程序源代码比较困难,即使可能 获得源代码,由于编译程序本身的复杂性 1 ”,在其中加入主动机制的工作量将是 十分大的。那么,如何设计一个平台,利用某种面向对象语言( 称为目标语言) 构造与该语言相关的一个主动语言开发环境? 这是本文研究的中心问题。 本文研究的前提条件:有一个源代码公开的语言系统( 称为源语言) ,包括 源编译器和源执行器两个部分,源编译器生成中间代码,源执行器执行中间代码。 该语言能处理简单语句、复合语句、分程序、过程、函数和简单数据类型、结构 数据类型以及用户自定义类型等,值不支持对象技术。 围绕本文的中心问题,需要解决两个方面的问题:如何在源语言系统原型的 基础上,扩充对对象的支持功能? 在扩充过的面向对象开发环境上如何提供主动 服务机制? 基于这样的出发点,本文涉及的工作如下: 建立了一个由作者独立提出的主动机制系统模型。 研究如何使源语言具有对象支持的能力。 研究如何使源语言具有主动机制。 在系统模型的基础上,进行主动机制系统的规则终止性分析( t e r m i t l a t i o n 6 河海人学硕士学位论文 摹于e c a 规则的主动机制的研究 a n a l y s i s ) 。 2 本文的组织 第二章主动机制系统模型。分析主动机制系统的结构,建立主动机制系统 模型,包括主动面向对象编译子系统和主动面向对象执行子系统。 第三章e c a 规则及表示。分析e c a 规则,定义方法事件和规则。 第四章编译子系统中的对象技术和主动技术。研究编译子系统中的对象编 译技术和主动编译技术。 第五章执行子系统的外部过程执行技术和主动技术。研究执行子系统中的 外部过程执行技术和主动技术。 第六章规则终止- 陛分析。对主动面向对象系统模型中规则的终止性进行分 析。 第七章总结与展望。 7 河海大学硕士学位论文 基于e c a 规则的主动机制的研究 第二章主动机制系统模型 本章对主动语言系统进行分析,建立主动机制系统的结构模型,包括主动面 向对象编译子系统模型、主动面向对象执行子系统模型。 2 1 主动程序设计语言 l 主动程序设计语言的一般模型 一种主动程序设计语言( a c t i v ep r o g r a m m i n gl a n g u a g e ,a p l ) t 扫两部分组成: 传统的程序设计语言( p r o g r a m m i n gl a n g u a g e ,p l ) 和基于事件的知识库 ( k n o w l e d g eb a s e b a s e do i le v e n t ,e k b ) ,可用公式表示为:a p l = p l + e k b 。在 a p l 中,应用程序的主要功能仍用p l 来编写,主动性功能则由e k b 和一个用 来驱动e k b 的事件监视器( e v e n tm o n i t o r , e m ) 来实现。e k b 由各种事件驱动的 可执行知识组成,例如由一些事件驱动的规则、某程序设计语言编写的过程等。 在人工智能和知识处理中最常用的可执行知识是规则和产生式知识 1 4 1 。图2 1 为 主动系统示意图”。 刮2 1 主动程序设计语言的系统示惫图 编译程序不但要对应用程序进行编译。而且要对其中的源事件知识库进行加 工,使得其中包含的一些变量与当前被编译的程序的全局变量建立关系,并经联 编后把应用程序的被动执行部分与事件知识库综合成为一个可执行的整体 1 4 a 6 。 2 事件监视器的实现机制 在主动机制系统中,事件监视器的实现机制是关键技术之一。一个有效的事 件监视器,一方面应能快速有效地检测出各种事件的发生,另一方面又不能因为 它的加入而使原应用程序的执行速度大幅度地变慢。有三种实现方案7 】: 在单处理器系统中,可用在操作系统控制下的一个高优先级的进程来实现 事件监视器,以保证它总能经常地被运行,起到主动监视各种事件发生的作用。 在多处理器系统中,可以独立分配一个处理器来完成,这时要解决与这个 处理器间有效的通信和同步问题。 在系统中一旦执行到所有可能发生事件的地方使计算机切换到事件监视 器上来工作,以便核实当时发生的事件是否已被用户置在事件库中了。若是,就 触发执行其后跟的可执行知识或规则,否则就返回继续执行。 8 河海大学顾士学盥论文 基于e c a 舰则的主动机制的研究 本文所建立的主动面向对象系统中,事件监视器采用了第三种实现方案。 3 主动机制的实现途径 扩展法。在原有程序的基础上,增加实现主动功能的代码。由程序员判断 在哪里需要主动功能,并在该处增加相应的监控和操作代码。 改造法。通过对原有的程序语言进行改造,使它变成一种主动的程序设计 语言。然后按传统的方法进行设计,并把主动服务功能嵌入其中。 重新设计程序设计语言。它通过重新设计一种完全不同的、以主动服务思 想为基础的程序设计语言。 第一种方法最简单,但由于系统的环境随着设计者所进行的操作不同而不断 变化,很多情况是难以意料的,所以系统的主动性只能是比较简单和有限的;第 二种途径是一种折中方案 1 18 ,在两种语言的接口会损失一定的效率,其主动功 能受限于源语言;第三种方法设计是一种彻底的解决方案,将主动服务所进行的 操作和应用程序完全融合在一起,以最自然的方式来构造系统 h t g 。 本文所建立的主动面向对象系统中,主动机制的实现途径选择了与第三种方 法类似的一个新颖独特的方法。简单地说,并没有设计出一个全新的主动语言, 而是对一个已有的语言,利用某种面向对象语言的对象模型进行改造,使它能够 处理对象,在此基础上引入主动机制。 2 2 本文主动面向对象系统的体系结构 如何在源语言的基础上,扩充对对象的支持,进而提供主动服务,也即如何 构建与某一面向对象语言相兼容的主动面向对象语言开发平台? 该平台中有哪 些基本组成要素,各组成要素间的关系如何? 用户如何使用该平台? 该平台与目 标语言系统之间的关系如何? 该平台能否支持多种面向对象语言语言系统,即平 台有无适应性? 所有这些都是要仔细研究的问题,下面给出本文的研究成果。本 文主动面向对象系统的体系结构由两部分组成:主动面向对象编译子系统和主动 面向对象执行子系统。 2 2 1 主动面向对象编译子系统模型 本文设计的主动面向对象编译子系统模型如图2 2 所示。 1 主动面向对象编译子系统的组成 用户界面 提供主动面向对象系统集成开发环境的用户接口。图2 2 中标示了文本编辑 器接口、用户类注册器接口和主动编译器接口。 编译时类注册器 提供了用户把自定义类注册到编译时类库中的功能。 事件规则处理器,包括事件规则解释器和规则预处理器。 河簿大学硕士学位论文 基于e c a 规则的主动机制的研究 事件规则解释器负责对事件规则文本进行解释,把结果分别存入事件库和规 则库。当主动编译器需要把某一条规则编译为中间代码时,规则预处理器负责对 规则进行预处理,把规则变换为编译器可接受的程序形式。 单援则文件 规则预处理器将每个规则预处理为编译器可以接受的形式。 对象支撑环境,包括编译时类库、编译时类库导入器和对象编译接口。 图2 2 主动面向对象编译子系统模型 对象编译接口是编译器使用对象支撑环境的接口,提供编译器对对象的编泽 支持能力。当编译器遇到对类的处理时,由对象支撑环境提供必要的编译信息, 指导编译器进行编译工作。主要解决以下几个问题:对用户程序中的类类型的变 量如何处理? 如何提供对对象的基本操作( 包括对象的比较、强制类型转换和赋 空值操作) 的支持? 当在应用程序中调用对象的方法等时,如何支持编译器生成 中间代码? 如何管理编译时类库信息? 在编译时类库中存放目标语言、特定领域的类库和自定义类的编译时信息。 编译子系统在初始化时,前者由编译时类库导入器自动装入,为主动面向对象系 统集成开发环境提供基本的对象支持;后者由应用程序设计者通过用户界面中的 编译时类注册器,把自定义的类注册到编译时类库中。自动装入目标语言的编译 时类库使系统自动获得了对对象的支持能力,减轻了用户的负担。 1 0 河海大学碗j 二学位论文 基于e c a 规则的主动机制的研究 编译时类库导入器是编译时类注册器和对象编译接口访问编译时类库的接 口,保存有由该导入器导入到编译时类库中的类的列表。 主动编译器 把用户程序和所有可能被触发的规则编译为统一的中f 司代码,是编译用户程 序和规则的总控程序。 编译器 此处及后文中的编译器已经是对源语言中的源编译器作了扩充,提供了访问 对象编译接口的接口,是整个主动面向对象编译子系统的内核及本文研究工作的 平台。 中间代码 是主动编译器的输出结果,是可脱离编译子系统的纯文本形式的文件,是主 动面向对象执行子系统的输入。 2 主动面向对象编译子系统的工作流程 主动编译器调用编译器编译用户程序。当编译器遇到对类的操作时,通过对象 支撑环境进行编译。 主动编译器判断目前已经生成的中间代码,在运行时有无可能产生新的事件。 若有可能产生新的事件,则进行第三步的处理;若已经不可能产生新的事件,则 整个编译工作完毕,此时己获得完整的中间代码。 主动编译器调用事件规则处理器。事件规则处理器首先判断该事件是否已在事 件库中定义,如果已定义,则调用规则预处理器对可能触发的规则进行预处理, 每条规则对应一个单规则文件。 主动编译器调用编译器对第三步中生成的所有单规则文件进行编译。 转第二步。 3 用户使用主动面向对象编译子系统的模式 用户编辑应用程序;按事件、规则语法书写事件、规则文本;通过事件规则解 释器把事件、规则存入各自的库中。 如果用户程序中仅用到编译子系统已注册的类,则用户不需要再进行注册工 作。如果用户在应用程序中定义、使用了未注册的类,则用户需注册该类。 由此可见,在解决某一领域的问题时,构建该领域中的类库,对于实际的主 动面向对象系统来说是一笔宝贵财富。 用户通过主动编译器运行主动面向对象编译子系统,编译用户程序。 2 2 2 主动面向对象执行子系统模型 本文设计的主动面向对象执行子系统模型如图2 3 所示。 i 主动面向对象执行子系统模型的组成 用户界面 河海大学硕士学位论文 基于e c a 规则的主动机制的研究 与图2 2 中的用户界面是同一个界面,图2 3 中标示了运行时类注册器接口 和执行器接口。 执行器 此处及后文中的执行器已经是对源语言中的源执行器作了扩充,提供了访问 规则执行器的接口,是整个主动面向对象执行子系统的内核。 规则执行器 当执行器触发了多条规则,系统中出现多个规则等待处理时,由规则执行器 进行线性化。这时,规则执行器按照规则选择算法选择规则并调用执行器执行该 规则,从而实现系统的主动性。 规则执行器被调用时机有两个:一个是执行器要求运行外部过程支撑环境之 前,这个时机正好发生在方法调用之前:另一个是外部过程支撑环境返回执行器 时,这个时机正好发生在方法调用之后。方法事件是主动面向对象系统中的重要 事件 t 2 l ,也是本文研究的事件。 图2 3 主动面向对象执行子系统模型 外部过程支撑环境,包括外部过程执行接口、运行时类库导入器和运行时类库。 外部过程主要是指用户程序中使用的类的方法、属性、类方法、事件等经主 动面向对象编译子系统的处理后,在中间代码中生成的一类过程。对该类过程的 处理已经超出了执行器的处理能力,必须由外部过程支撑环境提供对执行外部过 程的支持。 在运行时类库中存放目标语言、特定领域的类库和自定义类的运行时信息。 执行子系统在初始化时,前者由运行时类库导入器自动装入,为主动面向对象系 统集成开发环境提供基本的对象支持;后者由应用程序设计者通过用户界面中的 运行时类注册器,把自定义的类注册到运行时类库中。自动装入目标语言的运行 时类库使系统自动获得了对对象的支持能力,减轻了用户的负担。 1 2 ¥r 4 海大学硕士学位论文 基于e c a 规则的主动机制的研究 外部过程执行接口根据运行时类库中的信息,完成对外部过程调用。 运行时类库导入器是运行时类注册器和外帮过程执行接口访问运行时类库 的接口,保存有由该导入器导入到运行时类库中的类旮勺列表。 运行时类注册器 提供了用户把自定义类注册到运行时类库中的功能。 2 主动面向对象执行子系统的工作流程 执行器执行中间代码。当执行到对外部过程的调用时,转第二步。 规则执行器按照定的策略选择规则对应的过程。若选择出了这样的过程,则 转第一步。若无这样的过程可供选择,分两种情况进行处理:当前是从调用 时,则转第三步;当前是从返回时,转第一步。 调用外部过程支撑环境执行外部过程。 在主动面向对象执行子系统中,虽然执行器是在“线性”执行中间代码,但 是,执行子系统已具有了主动功能。这是因为在执行器执行到对外部过程的调用 时( 这时产生方法前事件) ,规则执行器会检查是否有预定义的事件发生。如果 没有事件发生,则继续执行中间代码:如果有事件发生,则调用相应的规则主过 程( 与某一规则相对应,是已经编译的规则的中间代码形式) 。同理,当由外部 过程支撑环境返回规则执行器时( 这时产生方法后事件) ,规则执行器会检查是 否有预定义的事件发生。如果没有事件发生,则继续返回执行器;如果有事件发 生,则调用相应的规则主过程。 3 用户使用主动面向对象执行子系统的模式 与注册编译时类相似,主动面向对象执行子系统在初始化时会自动注册系统中 一些常用类的运行时信息。如果用户程序中仅用到这些已注册的类,则用户不需 要再进行注册工作;如果用户在应用程序中定义、使用了未注册的类,则用户需 注册该类的运行时信息。 通过用户界面启动执行器执行中间代码。 2 2 3 系统模型中的内部过程、外部过程 在本文研究的主动面向对象系统中把过程分为两种类型:内部过程和外部过 程。 内部过程指源语言不需要借助对象支撑环境( 编译时) 和外部过程支撑环境 ( 执行时) ,就能处理的过程。外部过程指源语言需借助这两个支撑环境,才能 处理的过程。这里的内、外是以源语言的处理能力来区分的。 具体来说,内部过程是指用户程序( 包括主程序和在用户程序内定义的过程) 和使用到的e c a 规则中的条件( 函数) 、活动( 过程) 以及规则主过程。外部过 程也就是指引入主动系统中的类中的方法、属性、类方法、事件等。 区分内、外部过程是与两者在主动机制系统中的不同特性相对应的。 河海大学硕士学位论文 基于e c a 删则的主动机制的研究 对外部过程来说,编译器只需要知道外部过程的参数信息即可。编泽器在处 理到对外部过程的调用时,生成压栈指令后再生成过程调用指令即可完成对外部 过程的处理。用户只是在用户程序和e c a 规则的条件、活动中使用外部过程。 对内部过程来说,编译器可见其内部代码,主动编译器把用户程序和使用到 的e c a 规则统一编译成中间代码。 在主动面向对象执行子系统中,区分这两种类型的过程是执行器执行过程、 触发方法事件的依据。 2 2 4 系统模型的特点 类在主动面向对象系统中起着基础作用 主动机制中事件、规则的定义与类密切相关:对类中方法等的调用产生原始 事件,而对事件的检测是主动机制系统的关键之一;用户程序与规则间的参数传 递也依赖于对象;应用程序中需要使用v c l 类库和自定义的类。 开发主动面向对象系统的前提条件低 要求有一个源代码公开的源语言系统,包括源编译器、源执行器两部分。目 前,有许多试验系统可以使用。 要求了解目标语言的对象模型。可利用v c + + 、d e l p h i 、j b u i l d e r 对象模型。 主动面向对象系统与目标语言之间的兼容性好 只要源语言系统能模拟目标语言系统中除类、对象以外的语言成份,由该源 语言系统扩充而成的面向对象的、主动的语言开发环境就与目标语言有良好的兼 容性。也就是说,如果不考虑主动机制,在该环境中开发的用户程序和在目标语 言中开发的用户程序具有良好的兼容性。 系统模型结构新颖 系统模型分为编译子系统和与执行子系统两个独立部分。每一个子系统内部 结构清晰,又可分为对象支持、主动规则处理两部分。 系统模型具有较强的移植性 编译子系统中的事件规则处理器、主动编译器、对象支撑环境中的对象编译 接口部分和执行子系统中的规则执行器、外部过程支撑环境中的外部过程执行接 口部分等均为不变因素。如果选择不同的目标语言,对主动系统开发人员来说, 只要改变源编译器的语法分析器的文法定义,以及根据不同面向对象语言的对象 模型,重建编译对、运行时类库即可。对应用程序员来说是透明的,可使用同一 个由系统提供的注册接口。因此,系统模型具有较强的移植性。 系统模型具有好的开发环境 系统模型中用户界面简单,用户除需要进行编写应用程序、定义事件、规则 这些必不可少的工作外,仅需要对新的类进行注册。 系统模型设计思想独特 1 4 河海大学顾上学位论文 摹于e c a 规则的主动机制的研究 本文设计的主动面向对象系统主动机制的实现途径属于重新设计程序设计 语言的范畴,将主动服务所进行的操作和应用程序完全融合在一起。但是,与真 正设计一个新的主动程序设计语言不同的是:系统中没有自身的对象模型,而是 采用黑箱方法引用了目标语言的对象模型;所使用的源语言系统可有自身的特 点,使得所开发的主动机制系统具有与目标语言不同的新特点。这样既使该系统 具有对多种目标语言的移植性,又避开了存在的问题不能获得目标语言编译 程序的源代码,可以快速地开发组装一个主动面向对象系统。 2 3 ,j 、结 本章分析了主动程序设计语言的一般模型,在一个源语言系统和某目标语言 的对象模型基础上设计了主动机制系统的模型,分析了该模型的组成、使用模式、 工作流程以及特点。同时,在主动机制系统中,提出了内部过程、外部过程概念。 这是主动机制系统中编译器模型、执行器模型和规则终止性分析的基础。下面各 章节的内容是围绕本章内容展开的。 本文在下面的章节中,源语言选用具有独立编译器和独立执行器的类p a s c a l 语言【2 0 1 ,目标语言选用d e l p h i 。 河海大学硕上学位论文 基于e c a 规则的主动机制的研究 第三章e c a 规则及表示 本章研究e c a 规则的知识模型、执行模型,对本文研究的主动面向对象系 统中的事件和规则进行了定义。 3 1 e c a 规则的知识模型 知识模型是指主动系统中描述、存储和管理主动规则的模型1 2 ”。e c a 规则 的知识模型由事件、条件、活动三部分组成。 1 事件 事件是一种系统行为的瞬间发生。系统行为可以是数据库操作、事务管理活 动、时间行为或与外部环境的交互行为,它们可用一个特定的时间点来标识。由 于系统行为往往是一个有限过程而非一个瞬间点,故事件的定义包含其参照时间 点的选定。事件包含两方面含义:一方面作为某种系统行为的标志:另一方面标 志一个时间点。事件具有“原子性”,在某一时刻要么发生,要么不发生。事件 分为简单事件和复合事件( c o m p o s i t ee v e n t ) 。简单事件是在某一时刻发生的事件, 复合事件是由若干简单事件通过事件代数组合而成的 6 2 1 1 。 简单事件是事件定义的基本单位,它描述在任一时刻发生在系统内部或发生 在系统外部的事件,按发生的持续时间可分为瞬间事件和区间事件。每个事件都 有一个事件名e 标识,并有开始时间b ( e ) ,结束时间e ( e ) 和发生期d ( e ) 等属性。 下面按不同的场所分别来描述各种简单事件【1 o 与时间相关的事件。指在某个特定的时间点或时间区段内发生的事件,它 由系统指定的时间来确定事件的发生,可将该类事件分为瞬间事件和区段事件。 事件t i m e - - t 0 ,其中t o 表示一个绝对时间,可以是一个常数,也可以是 由用户或程序动态设置的变量,还可以是另一事件的开始、结束时闯,或是一个 数据库事务的开始、提交或取消时间等。该事件是一个瞬间事件,在t o 时发生。 事件t i m e t o 、t i m e t o ,t 1 和t o & t l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学语文教师转正述职报告
- 年度护士毕业实习总结
- 中国肾移植术后高尿酸血症诊疗技术规范(2019版)
- 2026年吸引胶管成型机行业分析报告及未来发展趋势报告
- 2026年河流垃圾清理行业分析报告及未来发展趋势报告
- 2026年4-氯甲基苯甲酰氯行业分析报告及未来发展趋势报告
- 2026年家禽行业分析报告及未来发展趋势报告
- 2026年地暖管行业分析报告及未来发展趋势报告
- 2026年家用音响行业分析报告及未来发展趋势报告
- 2026年办公协同软件行业分析报告及未来发展趋势报告
- 八年级下学期期中家长会课件
- 2026年乡镇高层次人才引进笔试题库与解析
- 北师大版(新教材)小学三年级数学下册第四单元《讲故事》课件
- 雨课堂学堂在线学堂云《自然辩证法概论( 武汉科技大)》单元测试考核答案
- 2025年7月浙江省普通高中学业水平考试化学试卷(含答案)
- 药物研发中的生物信息学数据处理
- 46566-2025温室气体管理体系管理手册及全套程序文件
- 雷达站管理制度
- TCECS 1451-2023 国际建设项目风险管理标准
- DB33∕T 2476-2022 长期护理保障失能等级评估规范
- 2024贵州自然资源厅所属事业单位招聘考试真题
评论
0/150
提交评论