管理数据库系统中的事件-条件-操作规则技术方案

技术编号:2844087 阅读:248 留言:0更新日期:2012-04-11 18:40
使用数据库启用的规则引擎包括:接收ECA表达式并将其存储在数据库表的列中。ECA表达式指定(1)定义符合事件结构的事件的事件结构;(2)用于相对于符合事件结构的事件的发生进行评估的条件;以及(3)用于响应于满足一个或多个条件的事件所执行的动作。在相对于一个或多个事件规则的评估中,基于事件与指定事件结构的一致来检测事件,并且通过确定事件是否满足任意条件来评估条件。如果事件满足具有相应动作的一个或多个条件的集,则由数据库执行相应动作或者数据库使动作在数据库外部执行。

【技术实现步骤摘要】
【国外来华专利技术】
总的来说,本专利技术涉及数据库系统,更具体地,涉及用于管理数据库系统中的事件-条件-动作表达式的技术。
技术介绍
规则通常使用在商业应用程序中,以实时地指导或影响商业行为。这些应用程序中的大多数需要以事件为中心的规则以监控在商业过程中新商业对象的创建或一些状态的变化。在旅游业的情况中,以事件为中心的规则的实例如下如果团体预订了到奥兰多的机票并预定了豪华汽车,则提供特定奥兰多旅馆的促销折扣。因此,根据这两个事件的发生,应用程序将自动为该团体提供促销。在规则引擎的情况中,规则大体上分成两类(1)演绎或推理规则以及(2)反应或事件-条件-动作(ECA)规则。演绎规则使用正向和反向推理,以从现有的知识库中推断或演绎事实。ECA规则非常适于以事件为中心的问题,其处理状态变化以及怎样管理状态变化。现有的商业规则引擎应用程序作为用于商业规则的储存库并且有利于将商业逻辑与应用程序逻辑分离。规则引擎定义一些规则语言以宣告规则的说明书,并定义一些接口以使应用程序与规则引擎交互作用。然而,由这种引擎管理的规则的类型本质上是演绎的。某些形式的ECA规则可以用公式表示为演绎规则,并且可以通过为演绎规则而设计的规则引擎来管理。然而,由于处理演绎规则和ECA规则之间工作量的差异,为演绎规则设计的规则引擎对于管理ECA规则是无效的,原因如下。大多数演绎规则引擎使用RETE索引的变量来处理用于事实集的规则集。这些索引是完全基于存储器的,并且它们与为大事实集所定义的大规则集不是很相称。此外,这些索引对于高度动态的事实(在ECA规则中指定的典型事件)是无效的。另外,在多层环境中,基于存储器的规则引擎驻留在应用程序层中。因此,如果为其定义了规则的商业事件在数据库层中,那么这些事件需要被读取到应用程序层,以处理相应的规则,这就降低了这些规则引擎的性能。附图说明通过实例示出了本专利技术,但本专利技术不限于此,在附图中,相同的参考标号表示相似的元件,其中图1是示出了根据实施例的数据库中ECA信息的直观表示和这种信息之间交互作用的示意图; 图2是示出了根据实施例的用于管理数据库中的事件-条件-动作表达式的方法;以及图3是示出了可以实施本专利技术实施例的计算机系统的框图。具体实施例方式描述用于管理数据库系统中的表达式的技术。更具体地,描述用于通过数据库启用的(database-enabled)规则引擎来管理数据库系统中的事件-条件-动作表达式的技术。在以下的描述中,为了说明的目的,阐述了大量具体的细节以提供对本专利技术的彻底理解。然而,很明显,没有这些具体的细节本专利技术也可以实施。在其它实例中,公知的结构和设备以框图的形式示出,以避免不必要地使本专利技术模糊。以下专利的全部内容结合于此作为参考于2002年6月11日授权的题为“Content Based Publish-And-Subscribe System Integratedin a Relational Database System”的美国专利第6,405,191号;以及于2002年12月31日授权的题为“Approach for Publishing Data in aRelational Database System”的美国专利第6,502,093号。概述使用数据库可用的或以数据库为中心的规则引擎包括接收并将ECA表达式存储在数据库中。这种表达式指定(1)定义符合事件结构的事件的事件结构;(2)对应于事件结构的用于响应并相对于事件发生的评估的条件,例如,事件实例;以及(3)用于响应于满足一个或多个条件的事件所执行的动作。这种条件存储在数据库表的列中,例如EXPRESSION数据类型列。因此,在规则运行数据库会话(即,相对于一个或多个事件评估规则的数据库会话)期间,当符合指定事件结构的事件发生时,则该事件被检测出,并且通过确定该事件是否满足任何一个条件来评估条件。如果该事件满足一个或多个具有相应动作的条件集,则由数据库服务器执行相应的动作,或者数据库服务器使该动作在数据库系统的外部执行。这里描述的规则引擎通过管理关系数据库中的ECA规则而与现有的规则引擎不同。从而,诸如可伸缩性、可靠性和安全性的优点很容易扩展到诸如商业规则处理的规则处理。另外,定义了规则的事件在本质上是有关系的,并且标准结构化查询语言(SQL)的子集可用于识别感兴趣事件的发生以及用评估针对事件发生的条件。此外,丰富的SQL语言,例如,与XML结合,可用于表示复杂的商业规则。存储数据库中事件-条件-动作规则在一个方面,规则表示为存储在数据库中作为规则集的表达式。在ECA规则的情况下,规则包括(1)定义符合事件结构的事件的事件结构,(2)针对所评估的相应事件的条件,以及(3)用于响应于事件对条件的满足所执行的动作优先(action preference)。利用所描述的数据库启用的规则引擎,SQL查询语言可用作规则语言的基础。因此,表达式可以表示为SQL查询。简单的规则条件类似于查询的WHERE子句,该查询中FROM子句表示相应的事件结构。例如,如果FlightInfo表存储关于旅行社所有客户的预订机票信息,那么以下查询可以识别出预定乘坐美国联合航空公司到奥兰多的机票的所有客户。SELECT CustId FROM FlightInfo WHERE ToCity=‘Orlando’and Airline=‘United’上述查询识别出存储在FlightInfo表中的所有现有的美国联合航空公司到奥兰多的预订。然而,如果只需要识别他们进行(例如,实时)的新预订,上述查询应该映射到能够监控新数据(例如,事件)的规则。在这种情况下,FlightInfo表可以配置为用于规则的事件结构,或者事件结构可以用于与使用具有匹配结构的对象类型的暂态应用程序数据一起合作。上述查询的WHERE子句可用于规则条件,当预订与该规则匹配时,规则动作可以是一些执行动作的应用程序逻辑。例如,操作可以是提供租车促销、提供打折等。使用形成规则语言的基础的SQL,所以可在相应规则集表上使用INSERT、UPDATE、和DELETE操作来执行在规则集中添加新规则和更新或删除现有规则。此外,在规则表上简单的SELECT操作使得用户可以浏览规则集中的规则。事件结构事件结构在抽象级别上描述明确识别那种类型事件发生的基本因素。在一个实施例中,事件结构由描述事件(例如,商业事件)具体特征的属性集所定义,并且事件结构在数据库中表示为对象类型。例如,商业事件能够捕获添加到用户旅行计划中的飞行信息。在数据库中,相应的事件结构可以表示为如下所指定的对象类型。<pre id=pre0001 xml:space=preserve listing-type=sequence>CREATE or REPLACE TYPE AddFlight AS OBJECT( CustId NUMBER, Airline VARCHAR(20), FromCityVARCHAR(30), ToCity VARCHAR(30), Depart DATE, Return DATE)。</pre> 在另一个实施例中,为存储在数据库中关系表中的数据定义规则。在这种情况中本文档来自技高网...

【技术保护点】
一种用于管理数据库系统中的表达式的方法,所述方法包括以下计算机执行步骤:接收识别事件结构、一个或多个相关条件以及一个或多个相关动作的表达式,其中,所述事件结构定义符合所述事件结构的事件;将所述表达式存储在所述数据库内的表中; 在数据库会话期间,通过检测符合所述事件结构的事件何时发生来检测所述事件的发生;以及确定所述事件的所述发生是否满足所述条件中的任何一个;以及如果所述事件的所述发生满足与一个或多个相应动作相关的所述条件中的一个或 多个条件的任意集,则引起所述一个或多个相应动作的执行。

【技术特征摘要】
【国外来华专利技术】US 2004-3-30 10/815,2201.一种用于管理数据库系统中的表达式的方法,所述方法包括以下计算机执行步骤接收识别事件结构、一个或多个相关条件以及一个或多个相关动作的表达式,其中,所述事件结构定义符合所述事件结构的事件;将所述表达式存储在所述数据库内的表中;在数据库会话期间,通过检测符合所述事件结构的事件何时发生来检测所述事件的发生;以及确定所述事件的所述发生是否满足所述条件中的任何一个;以及如果所述事件的所述发生满足与一个或多个相应动作相关的所述条件中的一个或多个条件的任意集,则引起所述一个或多个相应动作的执行。2.根据权利要求1所述的方法,其中,接收表达式包括接收识别用描述相应事件的特征的属性集来定义的所述事件结构的表达式,并且其中,所述事件结构表示为所述数据库中的对象类型。3.根据权利要求1所述的方法,其中,接收表达式包括接收将所述事件结构识别为具有两个或多个本原事件的组成事件结构的表达式,每一个所述本原事件在所述数据库中表示为嵌入在所述组成事件结构中的对象类型。4.根据权利要求3所述的方法,其中,检测包括通过检测符合所述组成事件结构的第一本原事件结构的事件何时发生来检测所述本原事件的第一本原事件的发生;其中,确定包括确定所述第一本原事件的所述发生是否满足任意所述条件;所述方法还包括以下计算机执行步骤将所述确定的结果持久地存储在所述数据库中;通过检测符合所述组成事件结构的第二本原事件结构的事件何时发生来检测所述本原事件的第二本原事件的发生;确定所述第二本原事件的所述发生是否满足任意所述条件;确定是否所述第一本原事件的所述发生和所述第二本原事件的所述发生都满足任意所述条件;以及其中,引起执行包括如果所述第一本原事件的所述发生和所述第二本原事件的所述发生满足任意具有一个或多个相应动作的一个或多个条件集,则执行所述一个或多个相应动作。5.根据权利要求3所述方法,还包括以下计算机执行步骤接收信息,所述信息指定在所述两个或多个本原事件的第二本原事件的发生发生之前所述两个或多个本原事件的第一本原事件的发生有效的周期;以及其中,确定包括根据所述信息确定所述第一本原事件的所述发生和所述第二本原事件的所述发生是否满足任意所述条件。6.根据权利要求3所述方法,还包括以下计算机执行步骤接收指定相对于所述本原事件评估所述条件的顺序的信息;以及其中,确定包括以根据所述信息的所述顺序中确定所述本原事件是否满足所述条件。7.根据权利要求1所述方法,其中,接收表达式包括接收识别从所述数据库中的表的结构中导出的事件结构的表达式,所述数据库存储表示事件发生的数据。8.根据权利要求7所述的方法,其中,检测所述事件的发生包括检测所述数据被改变。9.根据权利要求1所述的方法,其中,将所述表达式存储在表的列中包括将一个或多个条件作为EXPRESSION数据类型存储在所述表的EXPRESSION列中。10.根据权利要求1所述的方法,其中,接收表达式包括接收识别在所述数据库上表示为SQL查询的条件。11.根据权利要求1所述的方法,还包括以下计算机执行步骤以SQL操作的形式,接收对所述表达式的所述一个或多个条件的修改。12.根据权利要...

【专利技术属性】
技术研发人员:阿拉温达亚拉曼基
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1