确定性的、对象到代码的基于规则的分派转让专利

申请号 : CN200510006207.0

文献号 : CN1645856B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·P·科普兰德L·P·卡布莱拉

申请人 : 微软公司

摘要 :

确定性的、基于规则的数据结构分派,即把数据结构分派到一个或多个方法的组。在访问了要处理的数据结构之后,评估一规则列表以标识应用到数据结构的分派的多个规则。这多个规则的每一个指定了应当向其分派数据结构的不同的一个或多个方法的组。将多个规则解析成应用到数据结构的分派的单个主导规则。然后,计算系统向由主导规则指定的一个或多个方法的组分派该数据结构。规则评估和优先化是确定性的,以便于调试,因为万一在处理过程中产生性能问题,可确定哪一个或多个方法的组处理了数据结构。此外,可动态地添加、修改或删除规则。

权利要求 :

1.一种用于计算系统执行确定性的、基于规则的数据结构分派的方法,所述计算系统能够分派数据结构以供一个或多个软件方法的组进行处理,所述数据结构分派是把数据结构分派到一个或多个软件方法的组以供进一步处理,尽管存在关于应当将所述数据结构分派到一个或多个软件方法的哪一组的冲突的多个规则,所述分派仍是确定性的并且产生单个规则,其特征在于,所述方法包括:所述计算系统访问要被分派到一个或多个软件方法以供处理的数据结构的动作;

在所述访问数据结构的动作之后,所述计算系统评估一规则列表以标识应用到所述数据结构的分派的多个规则的动作,所述多个规则的每一个指定一条件以及如果满足该条件则应当向其分派所述数据结构的一个或多个软件方法的组;

在所述评估规则列表的动作之后,所述计算系统利用一个或多个优先化机制来解析所述多个规则以标识将应用到所述数据结构的分派的单个主导规则的动作,其中至少一个优先化机制被配置成确保在冲突规则的情况下仅单个规则将胜出,其中仅所述单个主导规则将被应用到所述数据结构到所述一个或多个软件方法的组的分派;以及在所述解析多个规则的动作之后,所述计算系统将所述数据结构分派到由所述单个主导规则指定的所述一个或多个软件方法的组的动作。

2.如权利要求1所述的方法,其特征在于,解析所述多个规则以标识单个主导规则的所述动作包括:应用第一优先化机制的动作。

3.如权利要求2所述的方法,其特征在于,所述第一优先化机制选自:明确支配机制、优先化级别机制或唯一标识符比较机制。

4.如权利要求2所述的方法,其特征在于,所述第一优先化机制的应用将所述多个规则收缩至所述单个主导规则。

5.如权利要求4所述的方法,其特征在于,所述第一优先化机制的应用确保在任何情况下只有单个规则从所述多个规则中胜出。

6.如权利要求2所述的方法,其特征在于,解析所述多个规则以标识一主导规则的所述动作还包括:确定所述第一优先化机制的应用仍产生一个以上规则的动作;以及作为响应,应用第二优先化机制的动作。

7.如权利要求6所述的方法,其特征在于,所述第二优先化机制选自:明确支配机制、优先化级别机制或唯一标识符比较机制。

8.如权利要求6所述的方法,其特征在于,所述第二优先化机制的应用将所述多个规则收缩至所述单个主导规则。

9.如权利要求8所述的方法,其特征在于,所述第二优先化机制的应用确保在任何情况下只有单个规则从所述多个规则中胜出。

10.如权利要求6所述的方法,其特征在于,解析所述多个规则以标识一主导规则的所述动作还包括:确定所述第二优先化机制的应用仍产生一个以上规则的动作;以及作为响应,应用第三优先化机制的动作。

11.如权利要求10所述的方法,其特征在于,所述第三优先化机制选自:明确支配机制、优先化级别机制或唯一标识符比较机制。

12.如权利要求10所述的方法,其特征在于,所述第三优先化机制的应用将所述多个规则收缩至所述单个主导规则。

13.如权利要求12所述的方法,其特征在于,所述第三优先化机制的应用确保在任何情况下只有一个规则从所述多个规则中胜出。

14.如权利要求10所述的方法,其特征在于,所述第三优先化机制的应用不将所述多个规则收缩至所述主导规则,所述方法还包括:继续优先化规则的应用,直到所述多个规则被收缩到仅所述单个主导规则的动作。

15.如权利要求1所述的方法,其特征在于,所述一个或多个软件方法的组包括单个方法。

16.如权利要求1所述的方法,其特征在于,所述一个或多个软件方法的组包括多个软件方法的时序链。

17.如权利要求1所述的方法,其特征在于,所述数据结构是第一数据结构,所述多个规则是第一多个规则,所述主导规则是第一主导规则,所述一个或多个软件方法的组是一个或多个软件方法的第一组,所述方法还包括:访问要处理的第二数据结构的动作;

在所述访问第二数据结构的动作之后,评估所述规则列表以标识应用到所述第二数据结构的分派的第二多个规则的动作,所述第二多个规则的每一个指定应当向其分派所述数据结构的不同的一个或多个方法的组的动作;

在所述评估规则列表的动作之后,解析所述第二多个规则以标识将应用到所述数据结构的分派的单个第二主导规则的动作;以及向由所述单个第二主导规则指定的一个或多个软件方法的第二组分派所述第二数据结构的动作。

18.如权利要求17所述的方法,其特征在于,所述单个第一主导规则与所述单个第二主导规则相同,使得所述一个或多个软件方法的第一组与所述一个或多个软件方法的第二组相同。

19.如权利要求17所述的方法,其特征在于,所述单个第一主导规则不同于所述单个第二主导规则,并且所述一个或多个软件方法的第一组不同于所述一个或多个软件方法的第二组。

20.如权利要求19所述的方法,其特征在于,所述一个或多个软件方法的第一组中的一个或多个软件方法也在所述一个或多个软件方法的第二组中。

21.如权利要求20所述的方法,其特征在于,所述一个或多个软件方法的组由所述计算系统执行。

22.如权利要求20所述的方法,其特征在于,所述计算系统是第一计算系统,所述一个或多个软件方法的组由所述第一计算系统能够通过网络与其通信的第二计算系统执行,向所述一个或多个软件方法的组分派所述数据结构的动作包括:通过网络向所述第二计算系统发送所述数据结构的动作。

23.如权利要求1所述的方法,其特征在于,所述数据结构是简单对象访问协议(SOAP)包封。

24.如权利要求23所述的方法,其特征在于,所述规则列表使用XPATH语句来表达。

25.如权利要求1所述的方法,其特征在于,所述规则列表使用XPATH语句来表达。

26.如权利要求1所述的方法,其特征在于,它还包括:

访问一修改所述规则列表的指令的动作;以及

响应于所述指令自动修改所述规则列表的动作。

27.如权利要求1所述的方法,其特征在于,所述条件是以下的至少一个:(1)所述数据结构的结构特征,(2)所述数据结构的内容,或(3)环境情况。

28.一种计算系统,其特征在于,它包括:

一比较模块,它被配置成访问要被分派到一个或多个软件方法以供处理的数据结构,并评估规则列表以标识应用到所述数据结构的分派的多个规则;

一优先化模块,它被配置成在评估所述规则列表之后,标识哪一冲突规则获得优先级,所述多个规则中的每一个指定一条件以及如果满足该条件则应向其分派所述数据结构的一个或多个软件方法的组,所述优先化机制中的至少一个确保仅单个主导规则将被应用于所述数据机构的分派并且所述规则列表中所包含的其它规则没有一个将被应用到所述数据结构的分派;

一解析模块,它被配置成在标识了哪一冲突规则获得优先级之后,使用所述多个优先化机制来标识将应用到所述数据结构向所述单个主导规则中指定的一个或多个软件方法的分派的所述单个主导规则;以及一分派模块,它被配置成在标识了所述单个主导规则之后,仅向由所述单个主导规则指定的所述一个或多个软件方法的组分派所述数据结构。

说明书 :

技术领域

本发明涉及计算技术,尤其涉及确定性地执行对象到具体代码的基于规则的分派。

背景技术

计算技术已经改变了我们工作和游戏的方式。计算系统现在采用了各种各样的形式,包括台式机、膝上计算机、图形输入板PC、个人数字助理(PDA)、家用设备等等。在其最基本的形式中,计算系统包括系统存储器和一个或多个处理器。系统存储器中的软件可由处理器执行,以指示计算系统的其它硬件执行期望的功能。
软件可以相当复杂,通常从上千甚至上百万行源代码中编译或解释。为提供软件开发过程的某一组织,可将任务分类成执行更具体行动的可管理的子例程或方法。方法然后相互关联,以作为一个整体执行软件的更复杂功能。这些方法通常接收一个或多个数据结构用于处理。
由于软件的复杂性,确定哪一方法应当接收数据结构用于进一步处理通常是不平凡的任务。例如,当网络服务接收消息时,网络服务通常必须在可能的多个方法中选择以向其分派消息。
常规的系统通常在这一情况下采用基于规则的分派。具体地,保存一规则列表,它提供了条件和向其分发数据结构的方法之间的映射。通常,有多个应用的条件和多个已经在这些情况下应用的规则。因此,很难以确定性的方式预测哪一方法最终将处理(或已经处理了)数据结构。如果系统在处理数据结构的过程中有性能偏差,则很难调试系统,因为导致性能偏差的代码可能无法容易地识别。
此外,在常规系统中,规则列表被集成在可执行分派代码中。因此,修订该规则列表涉及修订源代码、重编译并重新分发分派代码。这可耗费可观的时间和资源。
因此,有利的是执行基于规则的分派的机制,其中,在应用多个分派规则的情况下,哪些代码将处理数据结构将更可预测,并且其中,规则可以更动态地来调整。

发明内容

本领域现有技术的上述问题由本发明的原理克服,本发明可以在能够分派数据结构(如,包含消息中存在的信息的那些数据结构)以供一个或多个方法的组处理。计算系统执行确定性的、基于规则的数据结构分派,即把数据结构分派到一个或多个方法的组,以用于进一步的处理。尽管存在关于应当将数据结构分派到何处的冲突的多个规则,该分派仍是确定性的。
在访问了要处理的数据结构之后,计算系统评估规则列表,以标识可应用于该数据结构的分派的多个规则。这多个规则的每一个指定了应当向其分派数据结构的不同的一个或多个方法的组。计算系统将这些规则解析成可应用于数据结构的分派的单个主导规则。然后,计算系统将数据结构分派到由主导规则指定的一个或多个方法的组。
规则评估和优先化是确定性的,使得可以推想哪一个或多个方法的组处理了数据结构。由于在那时方法是已知的,万一在处理数据结构时产生了性能偏差,也可很大程度地简化调试。此外,规则列表可独立于实际的分派代码来维护。例如,规则列表可使用XPATH语句来表示,或以任一其它构造的方式来表示。改变规则仅涉及从列表添加或删除规则,或修改列表中的规则。这准许在给定不断变化的实时情况下,能够在适当时更动态地更新规则。
本发明的另外的特征和优点将在以下描述中陈述,并且通过阅读描述可以部分地变得清楚,或可以通过对本发明的实践学到。本发明的特征和优点可通过在所附权利要求书中特别指出的仪器和组合来实现并获得。阅读以下描述和所附权利要求书,可以完全清楚本发明的这些和其它特征,或可以通过如下文所描述的对本发明的实践学到。

附图说明

为了以可获得本发明的上述和其它优点和特征的方式来描述,将参考附图中示出的具体实施例来呈现由上文简要描述的本发明的更具体描述。应当理解,这些附图仅描述了本发明的典型实施例,因此并不应当被认为是局限其范围,通过使用附图并用附加的特殊性和细节来描述和解释本发明,附图中:
图1示出了可实现本发明的特征的合适的计算系统;
图2示出了依照本发明的原理可协作地交互以执行确定性的基于规则的分派的各种组件;
图3示出了依照本发明的原理计算系统用于执行确定性的基于规则的数据结构分派的方法的流程图;以及
图4示出了将多个规则解析成单个主导规则的方法的流程图。

具体实施方式

本发明的原理涉及执行确定性的、基于规则的数据结构分派,即把数据结构分派到一个或多个方法的组并用于进一步处理的机制。在访问要处理的数据结构之后,计算系统评估规则列表,以标识可应用于数据结构的分派的多个规则。这多个规则的每一个指定了应当向其分派数据结构的不同的一个或多个方法的组。计算系统将这些规则解析成可应用于数据结构的分派的单个主导规则。然后,计算系统将数据结构分派到由主导规则指定的一个或多个方法的组。规则评估和优先化是确定性的,使得可推想哪一个或多个方法的组处理了数据结构。由于此时方法是已知的,因此万一在处理数据结构时产生了性能偏差,也可很大程度地简化调试,从而准许在给定不断变化的实时情况下,可在适当时更动态地更新规则。
转向附图,其中,相同的标号指相同的元件,示出本发明在一个合适的计算环境中实现。以下描述基于所示的本发明的实施例,并不应当作为对于在此未明确描述的替换实施例的本发明的限制。
在以下描述中,将参考由一个或多个计算机执行的行动和操作的符号表示来描述本发明,除非有另外指明。由此,可以理解,这类行动和操作,有时称为计算机执行的,包括计算机的处理单元对以结构化形式表示数据的电信号的操纵。这一操纵转换了数据或在计算机的存储器系统中的位置上维护它,从而以本领域的技术人员都理解的方式重新配置或改变了计算机的操作。数据被维护处的数据结构是存储器的物理位置,具有由数据的格式所定义的具体特性。然而,尽管在上述的上下文环境中描述本发明,它并不意味着限制,如本领域的技术人员所理解的,后文所描述的行动和操作的各方面也可以由硬件实现。图1示出了可用于这些装置的一个示例性计算机体系结构的示意图。
为了描述的目的,所描绘的体系结构仅为合适的环境的一个示例,并非暗示对本发明的使用范围或功能的局限。也不应将计算系统解释为对图1所示的任一组件或其组合具有依赖或需求。
本发明可以使用众多其它通用或专用计算或通信环境或配置来操作。适合使用本发明的众所周知的计算系统、环境和配置包括但不限于,移动电话、袖珍计算机、个人计算机、服务器、多处理器系统、基于微处理器的系统、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
在其最基本的配置中,计算系统100通常包括至少一个处理单元102和系统存储器104。系统存储器104可以是易失(如RAM)、非易失(如ROM、闪存等)或两者的某一组合。这一最基本配置在图1中由虚线106示出。
存储媒质设备可具有另外的特征或功能。例如,它们可包括另外的存储(可移动和/或不可移动),包括但不限于,PCMCIA卡、磁盘和光盘、以及磁带。这类另外的存储在图1中由可移动存储108和不可移动存储110示出。计算机存储媒质包括以用于储存如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法和技术实现的易失和非易失、可移动和不可移动媒质。系统存储器104、可移动存储109和不可移动存储110都是计算机存储媒质的示例。计算机存储媒质包括但不限于,RAM、ROM、EEPROM、闪存、其它存储器技术、CD-ROM、数字多功能盘、其它光存储、磁盒、磁带、磁盘存储、其它磁存储设备、以及可以用来储存期望的信息并可由计算装置100访问的任一其它媒质。
如此处所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。此处所描述的不同的组件、模块、引擎、和服务可以被实现为在计算系统上执行的对象或进程(如,作为单独的线程)。尽管此处所描述的系统和方法较佳地以软件来实现,然而软件和硬件或硬件的实现也是可能的,并也可考虑它们。
计算系统100也可包含允许主机通过网络120与其它系统和装置进行通信的通信信道112。通信信道112是通信媒质的一个示例。通信媒质通常在诸如载波或其它传输机制等已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送媒质。作为示例而非局限,通信媒质包括有线媒质,如有线网络或直接连线连接,以及无线媒质,如声学、RF、红外和其它无线媒质。本发明使用的术语计算机可读媒质包括存储媒质和通信媒质。
计算系统100也可具有输入组件114,如键盘、鼠标、笔、语音输入组件、触摸输入设备等等。输出设备116包括屏幕显示、扬声器、打印机等等,以及用于驱动它们的呈现模块(通常称为“适配器”)。计算机100具有电源118。所有这些组件在本领域中是众所周知的,并且不需要在此详细描述。
图2示出了依照本发明的原理可协作交互以执行确定性的基于规则的分派的各种组件200。当在图1的计算系统100的环境中实现时,各种组件可在存储器104中实例化,和/或在诸如可移动存储108和/或不可移动存储110等持久存储器中持久保存。
各种组件200包括分派规则列表203。列表203可包括任意数量的分派规则。然而,在所示的实施例中,列表203包括规则203A、203B和203C,以及由垂直的省略号203D标识的其它可能的规则。每一规则指定了一个条件,以及如果满足该条件,应当向其分派数据结构的一个或多个方法的组。例如,规则203A指定了条件203AA和方法203AB,规则203B指定了条件203BA和方法203BB,规则203C指定了条件203CA和方法203CB。指定的方法可以是单个方法,或可以是以特定的顺序执行的方法组。
比较模块202访问数据结构201,并评估规则列表203,以标识应用到数据结构的分派的多个规则204。可应用的规则204然后对解析模块205标识。数据结构201可以是,例如,接收的消息(如,SOAP消息),或者可以是可由比较模块202访问的任何其它数据结构。如果满足一个规则的对应条件,则比较模块202将该规则标识为可应用。条件可基于数据结构201的结构特征、数据结构201的内容、环境情况(如,时间或计算机工作负荷)、或任何其它因素。
解析模块205包含任意数量的优先化机制206,它们被配置成标识在有冲突的大量规则的情况下取得优先级的减少了数量的规则。在所示的实施例中,示出优先化机制206包括优先化机制206A、206B和206C,以及由垂直省略号206D表示的其它可能的机制。这些优先化机制中的至少一个被配置成确保在存在多个冲突规则的情况下只有一个规则取得优先级。确保这一情况的优先级机制在图2中由优先化模块206C示出,在其右侧有一星号。
解析模块205使用优先化机制206来标识将应用于数据结构201的分派的主导规则207。分派机制208然后使用主导规则207来确定性地将数据结构201’的至少一个修改的版本分派到要执行的多个方法209中对应的一个。在本示例中,数据结构未被分派到单个方法,而是被分派以供方法209A到209D处理。
也可指定这些方法中的部分以供其它规则处理,尽管在本情况中并非所需。例如,假定规则203A是主导规则207A,并指定应当将数据结构分派到方法209。方法209A可以是作为对其它规则203B、203C以及203D所执行的分派方法组的一部分来执行的方法。因此,即使这些规则的一个或多个分派方法的组是不同的,分派方法也可以在多个规则之间共享。所分派的数据结构201’可以与由比较模块202访问的数据结构201相同,尽管如有需要,可以执行某些修改。
规则评估和优先化是确定性的,使得可推想一个或多个方法的哪一组处理了数据结构。由于在那时方法是已知的,万一在处理数据结构中出现了性能偏差,也可以很大程度地简化调试。
图3示出了计算系统执行确定性的、基于规则的数据结构分派,即把数据结构分派到一个或多个方法的组以用于进一步处理的方法300的流程图。在访问要处理的数据结构(如,接收消息)之后(动作301),执行使用规则列表来确定性地将数据结构分派到一个或多个方法的组的功能性的、面向结果的步骤(步骤310)。这可包括实现该结果的任何对应的动作。然而,在所示的实施例中,步骤310包括对应的动作311、312、313。
具体地,评估分派规则列表来标识应用到数据结构的分派的若干规则(动作311)。如上所述,多个规则的每一个指定了如果满足条件,要向其分派数据结构的不同的一个或多个方法的组。在一个实施例中,条件可使用XPATH语句来表达。如果数据结构是SOAP包封的,这尤其有用。
然后解析多个规则,以标识将应用到数据结构的分派的主导规则(动作312)。然后可如由主导规则指定的来分派数据结构(动作313)。在一个实施例中,处理数据结构的方法可以在与分派机制相同的计算系统上,尽管在此情况中并非所需。例如,分派机制208可以位于计算系统100上,而方法209在网络120上的另一计算系统中执行。如果方法209位于另一计算系统上,则分派数据结构201’可涉及通过网络120将数据结构201’发送到其它计算系统。可对每一访问的数据结构重复图3的方法。
图4示出了将多个规则解析成单个主导规则的方法400的流程图,并更详细地示出了图3的动作312的一个示例。首先,将优先化机制应用到多个可应用的规则(动作401)。然后确定该优先化机制的应用是否能获得单个主导规则(判别块402)。如果能获得(判别块402中为“是”),则方法400结束。否则(判别块402中的“否”),则通过继续应用不同的优先化机制来重复该过程,直到最后仅有一个主导规则。为确保这一情况,最后的优先化机制可应用一种确保单个主导规则的算法。
优先化机制的示例包括明确支配机制,其中,在两个条件之间存在明确的关系,使得在两个规则都可应用的情况下该关系指定了哪一规则可支配另一个。
另一示例是优先化级别机制,它向规则分配优先级别,使得该规则将优于具有较低优先级的任何其它规则。
又一示例是对条件使用唯一标识符的唯一标识符比较机制。该唯一标识符可被排序成一列表,该列表表示列表上具有较高唯一标识符的条件优于列表上具有较低唯一标识符的条件的优先级顺序。唯一标识符比较机制的示例可包括规则的按字母排序的表达式。在另一示例中,向每一规则分配一唯一标识符作为附加字段。该唯一标识符比较机制表示确保主导规则的优先化机制的一个示例。
因此,本发明的原理允许确定性的基于规则的分派。此外,可独立于实际的分派代码(如,比较模块203、转化模块205、优先化机制207和分派机制208)来维护分派规则列表203。例如,该规则列表可使用XPATH语句,或以任一其它的结构化方式来表示。改变规则仅涉及从列表中添加或删除规则,或修改列表中的规则。
本发明可以其它具体形式实施,而不脱离其精神或本质特征。所描述的实施例在所有的方面都被认为是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非上文的描述来指示。落入权利要求书的等效意义和范围之内的所有改变都包含在其范围之内。