规则处理方法和装置以及规则测试方法和装置与流程

文档序号:12124658阅读:377来源:国知局
规则处理方法和装置以及规则测试方法和装置与流程

本公开总体上涉及规则处理领域,具体而言,涉及规则处理方法和规则处理装置以及规则测试方法和规则测试装置。



背景技术:

目前,诸如应用软件系统的很多信息处理系统涉及大量规则,并在很多领域受到广泛应用。这样的信息处理系统的一个示例可以是业务规则管理系统(Business Rule Management System,BRMS)。业务规则管理系统将业务逻辑以业务规则的形式抽取出来形成规则库,并且对输入的业务数据进行处理,以与规则库中的规则的条件部分进行匹配,并执行匹配的规则的动作部分(或结论部分),从而实现业务的流动。当业务需求出现变化时,开发人员可以相应地制定或修改规则库中的规则,而无需重新开发新的系统。因此,这种涉及规则的信息处理系统比传统系统更灵活、更适合处理不断变更的业务。

期望能够对信息处理系统中所涉及的大量规则进行处理,以了解规则之间的关系。



技术实现要素:

在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。

鉴于现有技术的缺陷,本发明的目的之一是提供一种能够获取规则之间的逻辑关系的规则处理方法和装置,以至少克服现有的问题。

根据本公开的一个方面,提供一种规则处理方法,包括:针对多个规则中的每一个,基于该规则的条件部分,获得包括对象、属性和约束的前 节点,基于该规则的结论部分,获得包括对象、属性和约束的后节点,以及以所述前节点、所述后节点、以及从所述前节点指向所述后节点的有向边构成该规则的属性流动图;将所获得的属性流动图互相比较,当所比较的一个属性流动图的起始节点与另一个属性流动图的尾节点相匹配时,在匹配的节点处将所述一个属性流动图连接到所述另一个属性流动图之后,其中,属性流动图的起始节点不具有到达该节点的有向边,并且属性流动图的尾节点不具有从该节点出发的有向边,并且其中,重复所述比较和所述连接,直到剩下的属性流动图之间不存在匹配的起始节点和尾节点为止;以及将剩下的属性流动图作为最终属性流动图。

根据本公开的另一方面,提供一种规则测试方法,其利用通过上述规则处理方法所得到的最终属性流动图来测试多个规则。所述规则测试方法包括:基于所述最终属性流动图的节点来构建测试数据;以及利用所述测试数据,对所述多个规则进行测试。

根据本公开的又一方面,提供一种规则处理装置,其包括属性流动图获得单元、比较和连接单元和最终属性流动图获得单元。属性流动图获得单元针对多个规则中的每一个进行下述处理:基于该规则的条件部分,获得包括对象、属性和约束的前节点;基于该规则的结论部分,获得包括对象、属性和约束的后节点;以及以所述前节点、所述后节点、以及从所述前节点指向所述后节点的有向边构成该规则的属性流动图。比较和连接单元将所获得的属性流动图互相比较,当所比较的一个属性流动图的起始节点与另一个属性流动图的尾节点相匹配时,在匹配的节点处将所述一个属性流动图连接到所述另一个属性流动图之后,其中,属性流动图的起始节点不具有到达该节点的有向边,并且属性流动图的尾节点不具有从该节点出发的有向边。所述比较和连接单元重复所述比较和所述连接,直到剩下的属性流动图之间不存在匹配的起始节点和尾节点为止。最终属性流动图获得单元将剩下的属性流动图作为最终属性流动图。

根据本公开的再一方面,提供一种规则测试装置,其可以利用通过上述规则处理方法/装置所得到的最终属性流动图来测试多个规则。所述规则测试装置包括:测试数据构建单元,其基于所述最终属性流动图的节点来构建测试数据;以及测试执行单元,其利用所述测试数据,对所述多个规则进行测试。

依据本公开的其它方面,还提供了一种使得计算机用作如上所述的规则处理装置的程序。

依据本公开的又一方面,还提供了相应的计算机可读存储介质,该计算机可读存储介质上存储有能够由计算设备执行的计算机程序,该计算机程序在执行时能够使计算设备执行上述规则处理方法。

上述根据本公开实施例的各个方面,至少能够获得以下益处:利用本公开所提供的规则处理方法和装置,能够针对每个规则获得体现了该规则的逻辑的属性流动图,并通过多个属性流动图的比较和连接得到最终属性流动图,从而能够得到体现了多个规则之间/多个规则所包括的节点之间的逻辑关系的最终属性流动图。

此外,利用本公开所提供的规则测试方法和装置,能够利用最终属性流动图中所体现的多个规则之间/多个规则所包括的节点之间的逻辑进行规则测试。

通过以下结合附图对本公开的最佳实施例的详细说明,本公开的这些以及其他优点将更加明显。

附图说明

本公开可以通过参考下文中结合附图所给出的描述而得到更好的理解,其中在所有附图中使用了相同或相似的附图标记来表示相同或者相似的部件。所述附图连同下面的详细说明一起包含在本说明书中并且形成本说明书的一部分,而且用来进一步举例说明本公开的优选实施例和解释本公开的原理和优点。其中:

图1是示意性地示出根据本公开实施例的规则处理方法的示例流程的流程图。

图2是示意性地示出根据本公开实施例的规则处理方法所处理的规则的示例的说明图。

图3是示意性地示出根据本公开实施例的规则处理方法所得到的每个规则的属性流动图的示例的说明图。

图4是示意性地示出根据本公开实施例的规则处理方法所得到的最终属性流动图的示例的说明图。

图5是示意性地示出根据本公开实施例的规则处理方法的另一示例流程的流程图。

图6是示意性地示出根据本公开实施例的规则测试方法的示例流程 的流程图。

图7是示意性地示出根据本公开实施例的规则测试方法中的测试数据构建步骤的示例流程的流程图。

图8是示意性地示出根据本公开实施例的规则测试方法的另一示例流程的流程图。

图9是示意性地示出根据本公开实施例的规则处理装置的示例结构的框图。

图10是示意性地示出根据本公开实施例的规则处理装置的另一示例结构的框图。

图11是示意性地示出根据本公开实施例的规则测试装置的示例结构的框图。

图12是示意性地示出根据本公开实施例的规则测试装置中的测试数据构建单元的示例结构的框图。

图13是示意性地示出根据本公开实施例的规则测试装置的另一示例结构的框图。

图14是示出了可用来实现根据本公开实施例的规则处理装置和方法的一种可能的硬件配置的结构简图。

具体实施方式

在下文中将结合附图对本发明的示范性实施例进行描述。为了清楚和简明起见,在说明书中并未描述实际实施方式的所有特征。然而,应该了解,在开发任何这种实际实施例的过程中必须做出很多特定于实施方式的决定,以便实现开发人员的具体目标,例如,符合与系统及业务相关的那些限制条件,并且这些限制条件可能会随着实施方式的不同而有所改变。此外,还应该了解,虽然开发工作有可能是非常复杂和费时的,但对得益于本公开内容的本领域技术人员来说,这种开发工作仅仅是例行的任务。

在此,还需要说明的一点是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的装置结构和/或处理步骤,而省略了与本发明关系不大的其他细节。

在涉及大量规则的信息处理系统中,期望了解规则库中的规则之间的 关系,以例如协助规则的制定、修改和/或测试。

基于此,本公开提出了一种规则处理方法和规则处理装置,其提供了能够表示每个规则的逻辑的属性流动图,并通过多个规则的属性流动图的比较和连接得到最终属性流动图,从而能够得到体现了多个规则之间/多个规则所包括的节点之间的逻辑关系的最终属性流动图。这样的逻辑关系可以被应于规则的制定、修改和/或测试。

根据本公开的一个方面,提供了一种规则处理方法。图1是示意性地示出根据本公开实施例的规则处理方法的示例流程的流程图。如图1所示,规则处理方法100包括:属性流动图获得步骤S101,其针对多个规则中的每一个,基于该规则的条件部分来获得包括对象、属性和约束的前节点,基于该规则的结论部分来获得包括对象、属性和约束的后节点,以及以所述前节点、所述后节点、以及从所述前节点指向所述后节点的有向边构成该规则的属性流动图;比较和连接步骤S103,其将所获得的属性流动图互相比较,当所比较的一个属性流动图的起始节点与另一个属性流动图的尾节点相匹配时,在匹配的节点处将所述一个属性流动图连接到所述另一个属性流动图之后,其中,属性流动图的起始节点不具有到达该节点的有向边,并且属性流动图的尾节点不具有从该节点出发的有向边,并且其中,重复所述比较和所述连接,直到剩下的属性流动图之间不存在匹配的起始节点和尾节点为止;以及最终属性流动图获得步骤S105,其将剩下的属性流动图作为最终属性流动图。

作为示例,规则处理方法100所处理的规则可以是诸如业务规则管理系统的信息处理系统中的属于同一个业务范围的所有规则,例如电力业务规则系统中的与计算电费有关的所有规则。本领域技术人员可以理解,规则处理方法100所处理的规则不限于上述示例,而可以是包括条件部分和结论部分的任何规则。

图2是示意性地示出根据本公开实施例的规则处理方法所处理的规则的示例的说明图。在图2中,左图“sample.drl”部分示出了以伪码编写的、给定业务规则管理系统中的三条规则test1、test2、test3,这些规则可以共同实现给定的业务逻辑。规则test1、test2、test3中的每一个分别包括由“when”开始的条件部分和由“then”开始的结论部分,当满足给定规则的条件部分时,执行其结论部分。图2的右图“sampleModel.text”部分显示了以伪码编写的、规则test1、test2、test3所涉及到的对象的类O1、O2、O3的模型定义。本领域技术人员通过图2 所示伪码即可了解相关规则和类的定义的具体细节,因此这里并不展开描述,下文中仅在必要时简要说明与本公开实施例的规则处理方法有关的部分。

在规则处理方法100中,利用属性流动图获得步骤S101,能够获得每个规则的属性流动图。在一个规则的属性流动图中,以各自包括对象、属性和约束的前节点和后节点来分别代表该规则的条件部分和结论部分,并以从前节点指向后节点的有向边表现该规则的条件部分和结论部分之间的逻辑关系。属性流动图可以被视为由该图中包括的节点和有向边构成的集合。

作为示例,可以使用“对象.属性.约束”的三元组来表示一个节点,其中“对象”由对象名构成,“属性”由属性名构成,“约束”例如可以由操作符和值构成,表示对节点中的对象的属性的约束。

以下参照图3来说明根据本公开实施例的规则处理方法所得到的每个规则的属性流动图的示例。图3是示意性地示出根据本公开实施例的规则处理方法所得到的每个规则的属性流动图的示例的说明图,其中从上至下示出了三个属性流动图。利用上述规则处理方法100的属性流动图获得步骤S101,可以基于图2的规则test1、test2、test3分别得到图3中的上、中、下属性流动图。在图3的每个属性流动图中,节点由“对象.属性.约束”的三元组表示,有向边上标注了规则名称。

首先说明针对图2的规则test1得到的图3最上方的属性流动图。如图2所示,规则test1的条件部分包括为O2对象设置变量名“$b”,以及变量名“$b”所表示的O2对象的属性f23应等于“001”;其中该O2对象是根据图2的右图中关于“class O2”(即“类O2”)的定义而生成的,具有f21、f22、f23、f24、f25等属性。规则test1的结论部分是为变量名“$b”所表示的O2对象的属性f24赋值a1,该值a1是“a list”(一个列表)。

针对上述规则test1,利用规则处理方法100中的属性流动图获得步骤S101可以获得图3最上方的属性流动图。该属性流动图包括:基于规则test1的条件部分获得的一个前节点O2.f23.{“001”},其中由于约束部分的操作符为“==”因而省略了该操作符,仅保留了约束值“001”;基于规则test1的结论部分获得的一个后节点O2.f24.{a list};以及从前节点指向后节点的一条有向边。

类似地,利用属性流动图获得步骤S101,针对图2的规则test2可以获得如图3的中图所示的属性流动图。如图2所示,规则test2的条件部分包括为O1对象的属性f11设置变量名“$a”以及为变量名“$b”所表示的O2对象的属性f21设置变量名“$c”。规则test2的结论部分是为变量名“$b”所表示的O2对象的属性f22赋值“$c/$a”;根据test2的条件部分对变量名“$c”和“$a”的设置,该值“$c/$a”实际上是“O1对象的f11属性/O2对象的属性f21”。相应地,针对规则test2所得到的图3中间位置的属性流动图包括:基于规则test2的条件部分提取的两个前节点O1.f11.Φ、O2.f21.Φ,其中,由于规则test2的条件部分仅涉及为O1对象的属性f11和O2对象的属性f21设置变量名,因此这两个前节点的约束部分为空;基于规则test2的结论部分提取的一个后节点O2.f22.{O1.f11/O2.f21};以及分别从两个前节点指向后节点的两条有向边。

类似地,利用属性流动图获得步骤S101,针对图2的规则test3可以获得如图3的下图所示的属性流动图。如图2所示,规则test3的条件部分包括:变量名“$b”所表示的O2对象的属性f24不为空、f23属性等于“001”,为该O2对象的属性f24设置变量名“$c”,以及为O3对象设置变量名“$d”并为变量名“$d”所表示的该O3对象的属性f31设置变量名“$e”。规则test3的结论部分是为变量名“$b”所表示的O2对象的属性f25赋值“$e”;根据test3的条件部分对变量名“$e”设置,该值“$e”实际上是变量名“$d”所表示的该O3对象的属性f31。相应地,针对规则test3所得到的图3最下方的属性流动图包括:基于规则test3的条件部分提取的三个前节点O2.f24.{!=null}、O2.f23.{“001”}、O3.f31.Φ;基于规则test3的结论部分提取的一个后节点O2.f25.{O3.f31};以及分别从三个前节点指向后节点的三条有向边。

为便于处理,在一个优选实施例中,如图3中的示例所示,属性流动图的一个节点可以只包括一个对象以及该对象的一个属性和针对该属性的约束。在一些情况下,一个节点可以仅包括一个对象,而不包括属性和约束(即,节点中的属性和约束可以为空)。由于各个规则的条件部分和结论部分可能涉及不同的数量的对象,因此一个规则的属性流动图可以具有零个或更多个前节点以及零个或更多个后节点。

在得到例如如图3所示的每个规则的属性流动图之后,在规则处理方法100的比较和连接步骤S103,可以比较多个属性流动图,并将起始节 点和尾节点匹配的两个属性流动图在匹配的节点处连接起来,直到不存在两个属性流动图之间的起始节点和尾节点的匹配为止。

在一个优选实施例中,一个属性流动图的起始节点和另一个属性流动图的尾节点相匹配可以包括:起始节点和尾节点的对象、属性和约束分别匹配。

在一个示例中,第一属性流动图的尾节点和第二属性流动图的起始节点的对象相匹配可以是这两个节点的对象相同,属性相匹配可以是这两个节点的属性相同。

另外,第一属性流动图的尾节点和第二属性流动图的起始节节点的约束相匹配可以是两个节点的约束相容,并且第一属性流动图的尾节点的约束的约束性强于或等于第二属性流动图的起始节点的约束的约束性,因而从逻辑关系上来看,可以将第二属性流动图连接到第一属性流动图之后。

例如,在如图3所示的示例属性流动图中,节点的约束由操作符和约束值构成,因此不同属性流动图之间的起始节点和尾节点的约束的匹配可以是操作符和约束值分别匹配。

例如,两个节点的约束的操作符匹配可以是操作符相同或相容。约束值的匹配条件取决于操作符而不同。例如,对于两个节点的约束中的操作符都是“==”的情况,则两个约束值也需要相同;如果两个节点的约束中的操作符都是“!=”(不等于),则两个约束值只要不相等就认为两个节点匹配;如果两个节点的约束中的操作符都是“>”(大于),则前一个属性流动图的尾结点的约束值必须大于或等于后一个属性流动图的起始节点的约束值,即,前一个属性流动图的尾节点的约束的约束性强于或等于后一个属性流动图的起始节点的约束的约束性。利用本公开的描述,其他操作符情况可以以此类推,在此不进行详细描述。

以图3所示的三个属性流动图为例,通过属性流动图之间的两两比较,利用以上描述的两个属性流动图之间的起始节点和尾节点相匹配的条件,可以发现规则test1的属性流动图的尾节点O2.f24.{a list}与规则test3的属性流动图的起始节点O2.f24.{!=null}相匹配:尾节点和起始节点的对象相同,均为O2;尾节点和起始节点的属性相同,均为f24;尾节点的约束“==a list”和起始节点的约束“!=null”相容,并且前者的约束性强于后者,因而两个节点的约束匹配。

在一个示例中,当第一属性流动图的起始节点和第二属性流动图的尾 节点匹配时,可以删除第一属性流动图的起始节点,并将第一属性流动图中从该起始节点出发的所有有向边按原样连接到第二属性流动图的尾节点(即,从第二属性流动图的尾节点按原样出发),以在匹配的节点处将第一规则的属性流动图连接到第二规则的属性流动图之后,从而合并了这两个属性流动图。替选地,可以删除第二属性流动图的尾节点,并将第二属性流动图中到达该尾节点的所有有向边按原样连接到第一属性流动图的起始节点,在此不再重复描述。

仍以图3所示的三个属性流动图为例,在发现规则test1的属性流动图的尾节点O2.f24.{a list}与规则test3的属性流动图的起始节点O2.f24.{!=null}相匹配之后,可以删除规则test1的属性流动图的尾节点O2.f24.{a list},并将规则test1的属性流动图在规则test3的属性流动图的起始节点O2.f24.{!=null}处连接至规则test3的属性流动图。另外,规则test2的属性流动图的起始节点和尾节点与其他属性流动图都不匹配,所以不对规则test2的属性流动图进行连接处理,而是按原样保留。这样,得到了图4中的最终属性流动图。

图4是示意性地示出根据本公开实施例的规则处理方法所得到的最终属性流动图的示例的说明图,其中上方是由于不与其他属性流动图相匹配而按原样保留的、图3中所示的规则test2的属性流动图,下方是通过连接图3中所示的相匹配的规则test1和test3的属性流动图得到的属性流动图。

尽管在图4中的示例中示出了两个最终属性流动图,但是可以理解,在比较和连接步骤S103之后,最终属性流动图获得步骤S105中得到的最终属性流动图可以是一个或更多个最终属性流动图。

利用如上所述的根据本公开的规则处理方法100,能够基于多个规则得到体现了这些规则和/或这些规则中的节点之间的逻辑关系的最终属性流动图。最终属性流动图所体现的规则和/或节点之间的逻辑关系可以有利于规则的制定、修改和/或测试。

图5是示意性地示出根据本公开实施例的规则处理方法的另一示例流程的流程图。如图5所示,在本示例中,除了图1的规则处理方法100所包括的属性流动图获得步骤S101、比较和连接步骤S103、最终属性流动图获得步骤S105之外,规则处理方法100’还包括:规则/对象顺序获得步骤S107,其针对最终属性流动图获得步骤S105中所得到的最终属性流动图,按照从该图的起始节点起、沿着该图的有向边经过各个节点、直 到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序。

例如,在本示例方法100’中,通过最终属性流动图获得步骤S105,获得了图4中所示的最终属性流动图。参照图4下方的涉及规则test1和test3的最终属性流动图,利用上述规则/对象顺序获得步骤S107,按照从该图的起始节点O2.f23.{“001”}起、沿着有向边test1经过节点O2.f24.{!=null}、再经过有向边test3到达尾节点O2.f25.{O3.f31}的顺序,可以得到前一个有向边的规则test1的顺序优先于后一个有向边的规则test3的顺序。类似地,针对图4上方的涉及规则test2的最终属性流动图,可以得到起始节点O1.f11.Φ中的对象O1的顺序优先于尾节点O2.f22.{O1.f11/O2.f21}中的对象O2的顺序。

利用规则/对象顺序获得步骤S107从最终属性流动图获得的多个规则的顺序或多个规则所涉及的对象的顺序体现了这些规则或对象之间的逻辑顺序。这样得到的逻辑顺序可以被应于规则的制定、修改和/或测试。

在一个优选实施中,通过比较和连接步骤S103中的比较和连接,可以得到多个最终属性流动图,此时,在规则/对象顺序获得步骤S107中,可以认为在不同的最终属性流动图之间,所述有向边所对应的规则的顺序和/或所述节点所包括的对象的顺序是任意的。

例如,在图4所示的示例中,得到了上下两个最终属性流动图。此时,可以认为图4上方的最终属性流动图中所涉及的规则test2与图4下方最终属性流动图所涉及的规则test1和test3之间的顺序是任意的;两个最终属性流动图各自的节点所包括的对象之间的顺序也是任意的。

在一个优选实施中,在规则/对象顺序获得步骤S107中,针对最终属性流动图的中间节点,可以认为该中间节点的前节点所包含的对象的顺序优先于与该中间节点并列的、与该中间节点具有相同后节点的节点所包含的其他对象的顺序。

例如,参照图4下方的涉及规则test1和test3的最终属性流动图,通过规则/对象顺序获得步骤S107可以确定,对于该图的中间节点O2.f24.{!=null},该中间节点的前节点O2.f23.{“001”}所包含的对象O2的顺序优先于与该中间节点并列的、与该中间节点具有相同后节点的节点O3.f31.Φ所包含的另一对象O3的顺序。

利用如上所述的根据本公开的规则处理方法100’,能够利用最终属性 流动图来获得多个规则的顺序或多个规则所涉及的对象的顺序,这样的顺序体现了规则/对象之间的逻辑顺序,并且可以有利于规则的制定、修改和/或测试。

根据本公开的另一方面,提供了一种规则测试方法。图6是示意性地示出根据本公开实施例的规则测试方法的示例流程的流程图。

图6示出了根据本公开实施例的规则测试方法600,其可以利用通过根据本公开实施例的规则处理方法所得到的最终属性流动图来测试多个规则。如图6所示,规则测试方法600包括:测试数据构建步骤S601,基于所述最终属性流动图的节点来构建测试数据;以及测试执行步骤S603,利用所述测试数据,对所述多个规则进行测试。

如以上已经说明的,利用根据本公开的规则处理方法所得到的最终属性流动图体现了图中所包括的多个规则和/或多个规则中的节点之间的逻辑关系。因此,在利用了这样的最终属性流动图的规则测试方法600当中,通过在测试数据构建步骤S601中基于最终属性流动图中的节点来构建测试数据,可以有利于改进测试效率等。

举例而言,在测试数据构建步骤S601中,可以参照最终属性流动图中体现的节点的逻辑关系来确定节点的测试数据的构建优先级。对于最终属性流动图中的逻辑靠前的节点(例如起始节点),可以认为其测试数据的构建优先级优先于逻辑靠后的节点(例如尾节点)。可以理解,这种构建测试数据的具体方式仅作为示例;根据本公开的内容,本领域技术人员能够以其它的适合方式基于最终属性流动图中的节点来构建测试数据,从而有利于改进测试效率等。

利用如上所述的根据本公开实施例的规则测试方法600,能够利用最终属性流动图中所体现的多个规则中的节点之间的逻辑关系进行规则测试,从而有利于改进测试效率。

在规则测试方法600的测试数据构建步骤S601的一个优选实施例中,基于最终属性流动图的节点来构建测试数据可以包括:针对所述最终属性流动图的起始节点所包括的对象和属性来构建测试数据。

在利用根据本公开的规则处理方法所得到的最终属性流动图中,除起始节点以外的其他节点、即中间节点和尾节点均具有前节点,因而可通过执行最终属性流动图中的规则而基于相应的前节点来生成或得到这些节点的数据。例如,参照图4所示的最终属性流动图,除了上图中的起始节 点O1.f11.Φ、O2.f21.Φ和下图中的起始节点O2.f23.{“001”}、O2.f23.{“001”}、O3.f31.Φ以外,例如O2.f22.{O1.f11/O2.f21}等其它节点的数据可以通过执行最终属性流动图中的规则而基于这些起始节点来生成或得到。

因此,在本优选实施例的测试数据构建步骤中,可以只针对起始节点所涉及的对象和属性构建测试数据,而不针对其他节点(即中间节点和尾节点)构建测试数据,从而大大降低了测试数据的规模,节省了测试数据的开销,提高了测试效率。

以下参照图7描述规则测试方法600中的测试数据构建步骤S601的另一优选实施例。图7是示意性地示出根据本公开实施例的规则测试方法中的测试数据构建步骤的示例流程的流程图。

如图7所示,本优选实施例的测试数据构建步骤S601可以包括:对象和属性全集获得子步骤S6011,利用对象模型,获得与所述最终属性流动图中的所有节点所包括的各个对象对应的属性,以得到由所述各个对象和所得到的属性构成的待测对象和属性的全集;非构建对象和属性获得子步骤S6012,其得到所述最终属性流动图的全部非起始节点所包括的对象和属性的集合,以作为非构建对象和属性的集合;构建对象和属性获得子步骤S6013,其基于所述待测对象和属性的全集与所述非构建对象和属性的集合之间的差,得到构建对象和属性;以及针对性测试数据构建子步骤S6014,其针对所述构建对象和属性,构建测试数据。

本优选实施例可以被视为此前讨论的、针对最终属性流动图的起始节点所包括的对象和属性来构建测试数据的实施例的替选方式。在本优选实施例中,将最终属性流动图中的所有节点所包括的对象以及利用对象模型获得的这些对象的属性作为待测对象和属性的全集,然后从中排除最终属性流动图的非起始节点的对象和属性。换言之,从需要构建测试数据的目标当中排除了可通过执行最终属性流动图中的规则而基于起始节点来生成或得到的数据。因此,同样能够降低测试数据的规模,节省构建数据的开销,并提高测试效率。

图8是示意性地示出根据本公开实施例的规则测试方法的另一示例流程的流程图,该规则测试方法可以利用通过根据本公开实施例的规则处理方法所得到的最终属性流动图来测试多个规则。

如图8所示,在本示例中,除了与图6的规则测试方法600中的对应 步骤相类似的测试数据构建步骤S601’和测试执行步骤S603’之外,规则处理方法600’还包括:规则/对象顺序获得步骤S600a,其针对通过根据本公开实施例的规则处理方法所得到的最终属性流动图,按照从该图的起始节点起、沿着该图的有向边的方向经过各个节点、直到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序。相应地,在测试数据构建步骤S601’中,可以按照所得到的对象的顺序来构建测试数据;和/或在测试执行步骤S603’中,可以按照所得到的规则的顺序对所述多个规则进行测试。

本示例的规则处理方法600’中的规则/对象顺序获得步骤S600a可以包括与以上参照图5描述的规则处理方法100’中的规则/对象顺序获得步骤S107类似的处理,在此不再进行详细描述。另外,除了可以利用所得到的顺序来执行相应处理之外,本实施例的测试数据构建步骤S601’和测试执行步骤S603’与图6的规则测试方法600中的对应步骤相类似,因而以下描述将集中于本实施例与图6的区别。

参照图4所示的示例最终属性流动图,通过方法600’中的规则/对象顺序获得步骤S600a,针对该图上方的最终属性流动图可以得到节点O1.f11.Φ中的对象O1的顺序优先于节点O2.f22.{O1.f11/O2.f21}中的对象O2的顺序,而针对该图下方的最终属性流动图可以得到规则test1的顺序先于规则test3的顺序。相应地,在测试数据构建步骤S601’中,可以按照所得到的对象O1优先于O2的顺序来构建测试数据;在测试执行步骤S603’中,可以按照所得到的规则test1优先于test3的顺序来执行测试。

利用本优选实施例的规则处理方法600’,在测试数据构建步骤中,无需针对所有规则一次性地构建全部测试数据,而是可以按照节点的对象之间的逻辑顺序分批次地构建测试数据。逻辑靠后的节点的对象的数据可能通过规则的执行而基于逻辑在先的节点而生成。因此,通过分批次、按节点的对象的顺序构建测试数据有利于降低测试数据的规模,并降低测试数据开销。

此外,利用本优选实施例的规则处理方法600’,在测试执行步骤中,可以按照规则之间的逻辑顺序来分批次地执行规则测试。相对于现有技术中只能随机或同时执行所有规则的测试的方式,可以降低每次测试的处理规模,并且提高处理效率。

根据本公开的另一方面,提供了一种规则处理装置。图9是示意性地示出根据本公开实施例的规则处理装置的示例结构的框图。如图9所示, 规则处理装置90可以包括属性流动图获得单元901、比较和连接单元902、最终属性流动图获得单元903。

在规则处理装置90中,针对多个规则中的每一个,属性流动图获得单元901进行下述处理:基于该规则的条件部分,获得包括对象、属性和约束的前节点;基于该规则的结论部分,获得包括对象、属性和约束的后节点;并且,以所述前节点、所述后节点、以及从所述前节点指向所述后节点的有向边构成该规则的属性流动图。

比较和连接单元902将所获得的属性流动图互相比较,当所比较的一个属性流动图的起始节点与另一个属性流动图的尾节点相匹配时,在匹配的节点处将所述一个属性流动图连接到所述另一个属性流动图之后,其中,属性流动图的起始节点不具有到达该节点的有向边,并且属性流动图的尾节点不具有从该节点出发的有向边。比较和连接单元902重复所述比较和所述连接,直到剩下的属性流动图之间不存在匹配的起始节点和尾节点为止。

最终属性流动图获得单元903将剩下的属性流动图作为最终属性流动图。

上述规则处理装置90及其各个组成单元可以实现以上参照图1至图4描述的规则处理方法100及其各个相应步骤的处理,并实现类似的效果,在此不再进行重复说明。

在一个优选实施例中,在比较和连接单元902判断一个属性流通图的起始节点和另一个属性流通图的尾节点是否相匹配时,可以判断起始节点和尾节点的对象、属性和约束是否分别匹配。

图10是示意性地示出根据本公开实施例的规则处理装置的另一示例结构的框图。如图10所示,除了图9的规则处理装置90所包括的属性流动图获得单元901、比较和连接单元902、最终属性流动图获得单元903之外,本示例的规则处理装置90’可以进一步包括规则/对象顺序获得单元904。

规则处理装置90’中的规则/对象顺序获得单元904可以针对最终属性流动图,按照从该图的起始节点起、沿着该图的有向边经过各个节点、直到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序。

上述规则处理装置90’及其各个组成单元可以实现以上参照图5描述 的规则处理方法100’及其各个相应步骤的处理,并实现类似的效果,在此不再进行重复说明。

在一个优选实施例中,规则/对象顺序获得单元904可以被配置为:针对所述最终属性流动图的中间节点,将该中间节点的前节点所包含的对象的顺序确定为优先于与该中间节点并列的、与该中间节点具有相同后节点的节点所包含的其他对象的顺序。

在一个优选实施例中,比较和连接单元902通过所述比较和所述连接可以得到多个最终属性流动图。此时,规则/对象顺序获得单元904可以被配置为:在不同的最终属性流动图之间,任意确定所述有向边所对应的规则的顺序和/或所述节点所包括的对象的顺序。

根据本公开的又一方面,提供了一种规则测试装置。图11是示意性地示出根据本公开实施例的规则测试装置的示例结构的框图,该规则测试装置可以利用通过根据本公开实施例的规则处理方法/装置所得到的最终属性流动图来测试多个规则。如图11所示,规则测试装置11可以包括:测试数据构建单元111,其基于所述最终属性流动图的节点来构建测试数据;以及测试执行单元112,其利用所述测试数据,对所述多个规则进行测试。

上述规则测试装置11及其各个组成单元可以实现以上参照6描述的规则测试方法600及其各个相应步骤的处理,并实现类似的效果,在此不再进行重复说明。

在一个优选实施例中,测试数据构建单元111可以被配置为针对所述最终属性流动图的起始节点所包括的对象和属性来构建测试数据。

图12是示意性地示出根据本公开实施例的规则测试装置中的测试数据构建单元的示例结构的框图。如图12所示,本示例中的测试数据构建单元111可以包括:对象和属性全集获得子单元1111,其利用对象模型,获得与所述最终属性流动图中的所有节点所包括的各个对象对应的属性,以得到由所述各个对象和所得到的属性构成的待测对象和属性的全集;非构建对象和属性获得子单元1112,其得到所述最终属性流动图的全部非起始节点所包括的对象和属性的集合,以作为非构建对象和属性的集合;构建对象和属性获得子单元1113,其基于所述待测对象和属性的全集与所述非构建对象和属性的集合之间的差,得到构建对象和属性;以及针对性测试数据构建子单元1114,其针对所述构建对象和属性,构建测试数 据。

上述测试数据构建单元111及其各个组成子单元可以实现以上参照7描述的测试数据构建步骤S601及其各个相应子步骤的处理,并实现类似的效果,在此不再进行重复说明。

图13是示意性地示出根据本公开实施例的规则测试装置的另一示例结构的框图。如图13所示,除了与图11的规则测试装置11中的相应单元相类似的测试数据构建单元111’和测试执行单元112’之外,本示例的规则测试装置11’可以进一步包括规则/对象顺序获得单元110。

规则测试装置11’的规则/对象顺序获得单元110针对所述最终属性流动图,按照从该图的起始节点起、沿着该图的有向边的方向经过各个节点、直到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序。

相应地,在规则测试装置11’中,测试数据构建单元111’被配置为按照所得到的对象的顺序来构建测试数据,和/或测试执行单元112’被配置为,按照所得到的规则的顺序对所述多个规则进行测试。

上述规则测试装置11’及其各个组成单元可以实现以上参照8描述的测试数据构建步骤600’及其各个相应步骤的处理,并实现类似的效果,在此不再进行重复说明。

上述根据本公开实施例的规则处理装置(例如图9、10中所示的规则处理装置90、90’)以及其中的各个组成单元等可以通过软件、固件、硬件或其任意组合的方式进行配置。在通过软件或固件实现的情况下,可从存储介质或网络向具有专用硬件结构的机器安装构成该软件或固件的程序,该机器在安装有各种程序时,能够执行上述各组成装置的各种功能。

图14是示出了可用来实现根据本公开实施例的规则处理装置和方法的一种可能的硬件配置的结构简图。

在图14中,中央处理单元(CPU)1401根据只读存储器(ROM)1402中存储的程序或从存储部分1408加载到随机存取存储器(RAM)1403的程序执行各种处理。在RAM1403中,还根据需要存储当CPU 1401执行各种处理等等时所需的数据。CPU1401、ROM 1402和RAM 1403经由总线1404彼此连接。输入/输出接口1405也连接到总线1404。

下述部件也连接到输入/输出接口1405:输入部分1406(包括键盘、鼠标等等)、输出部分1407(包括显示器,例如阴极射线管(CRT)、液晶 显示器(LCD)等,和扬声器等)、存储部分1408(包括硬盘等)、通信部分1409(包括网络接口卡例如LAN卡、调制解调器等)。通信部分1409经由网络例如因特网执行通信处理。根据需要,驱动器1410也可连接到输入/输出接口1405。可拆卸介质1411例如磁盘、光盘、磁光盘、半导体存储器等等可以根据需要被安装在驱动器1410上,使得从中读出的计算机程序可根据需要被安装到存储部分1408中。此外,本公开还提出了一种存储有机器可读取的指令代码的程序产品。上述指令代码由机器读取并执行时,可执行上述根据本公开实施例的图像处理方法。相应地,用于承载这种程序产品的例如磁盘、光盘、磁光盘、半导体存储器等的各种存储介质也包括在本公开的公开中。

在上面对本公开具体实施例的描述中,针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。

此外,本公开的各实施例的方法不限于按照说明书中描述的或者附图中示出的时间顺序来执行,也可以按照其他的时间顺序、并行地或独立地执行。因此,本说明书中描述的方法的执行顺序不对本公开的技术范围构成限制。

此外,显然,根据本公开的上述方法的各个操作过程也可以以存储在各种机器可读的存储介质中的计算机可执行程序的方式实现。

而且,本公开的目的也可以通过下述方式实现:将存储有上述可执行程序代码的存储介质直接或者间接地提供给系统或设备,并且该系统或设备中的计算机或者中央处理单元(CPU)读出并执行上述程序代码。

此时,只要该系统或者设备具有执行程序的功能,则本公开的实施方式不局限于程序,并且该程序也可以是任意的形式,例如,目标程序、解释器执行的程序或者提供给操作系统的脚本程序等。

上述这些机器可读存储介质包括但不限于:各种存储器和存储单元,半导体设备,磁盘单元例如光、磁和磁光盘,以及其它适于存储信息的介质等。

另外,客户信息处理终端通过连接到因特网上的相应网站,并且将依据本公开的计算机程序代码下载和安装到信息处理终端中然后执行该程序,也可以实现本公开的各实施例。

综上,在根据本公开实施例中,本公开提供了如下方案,但不限于此:

方案1.一种规则处理方法,所述方法包括:

针对多个规则中的每一个,

基于该规则的条件部分,获得包括对象、属性和约束的前节点,

基于该规则的结论部分,获得包括对象、属性和约束的后节点,以及

以所述前节点、所述后节点、以及从所述前节点指向所述后节点的有向边构成该规则的属性流动图;

将所获得的属性流动图互相比较,当所比较的一个属性流动图的起始节点与另一个属性流动图的尾节点相匹配时,在匹配的节点处将所述一个属性流动图连接到所述另一个属性流动图之后,其中,属性流动图的起始节点不具有到达该节点的有向边,并且属性流动图的尾节点不具有从该节点出发的有向边,并且其中,重复所述比较和所述连接,直到剩下的属性流动图之间不存在匹配的起始节点和尾节点为止;以及

将剩下的属性流动图作为最终属性流动图。

方案2.根据方案1所述的规则处理方法,还包括:

针对所述最终属性流动图,按照从该图的起始节点起、沿着该图的有向边经过各个节点、直到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序。

方案3.根据方案2所述的规则处理方法,其中,

针对所述最终属性流动图的中间节点,该中间节点的前节点所包含的对象的顺序优先于与该中间节点并列的、与该中间节点具有相同后节点的节点所包含的其他对象的顺序。

方案4.根据方案2或3所述的规则处理方法,其中,

通过所述比较和所述连接,得到多个最终属性流动图,并且在不同的最终属性流动图之间,所述有向边所对应的规则的顺序和/或所述节点所包括的对象的顺序是任意的。

方案5.根据方案1所述的规则处理方法,其中,

起始节点和尾节点相匹配包括:起始节点和尾节点的对象、属性和约束分别匹配。

方案6.一种规则测试方法,其利用通过方案1所述的规则处理方法所得到的最终属性流动图来测试所述多个规则,所述规则测试方法包括:

基于所述最终属性流动图的节点来构建测试数据;以及

利用所述测试数据,对所述多个规则进行测试。

7.根据方案6所述的规则测试方法,其中,

基于所述最终属性流动图的节点来构建测试数据包括:针对所述最终属性流动图的起始节点所包括的对象和属性来构建测试数据。

方案8.根据方案6所述的规则测试方法,其中,基于所述最终属性流动图的节点来构建测试数据包括:

利用对象模型,获得与所述最终属性流动图中的所有节点所包括的各个对象对应的属性,以得到由所述各个对象和所得到的属性构成的待测对象和属性的全集;

得到所述最终属性流动图的全部非起始节点所包括的对象和属性的集合,以作为非构建对象和属性的集合;

基于所述待测对象和属性的全集与所述非构建对象和属性的集合之间的差,得到构建对象和属性;以及

针对所述构建对象和属性,构建测试数据。

方案9.根据方案6所述的规则测试方法,还包括:

针对所述最终属性流动图,按照从该图的起始节点起、沿着该图的有向边的方向经过各个节点、直到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序,

其中,按照所得到的对象的顺序来构建测试数据,和/或

按照所得到的规则的顺序对所述多个规则进行测试。

方案10.一种规则处理装置,所述装置包括:

属性流动图获得单元,其针对多个规则中的每一个,

基于该规则的条件部分,获得包括对象、属性和约束的前节点,

基于该规则的结论部分,获得包括对象、属性和约束的后节点, 以及

以所述前节点、所述后节点、以及从所述前节点指向所述后节点的有向边构成该规则的属性流动图;

比较和连接单元,其将所获得的属性流动图互相比较,当所比较的一个属性流动图的起始节点与另一个属性流动图的尾节点相匹配时,在匹配的节点处将所述一个属性流动图连接到所述另一个属性流动图之后,其中,属性流动图的起始节点不具有到达该节点的有向边,并且属性流动图的尾节点不具有从该节点出发的有向边,并且,所述比较和连接单元重复所述比较和所述连接,直到剩下的属性流动图之间不存在匹配的起始节点和尾节点为止;以及

最终属性流动图获得单元,其将剩下的属性流动图作为最终属性流动图。

方案11.根据方案10所述的规则处理装置,还包括:

规则/对象顺序获得单元,其针对所述最终属性流动图,按照从该图的起始节点起、沿着该图的有向边经过各个节点、直到该图的尾节点为止的顺序,获得该图中的各个有向边所对应的规则的顺序和/或该图中的各个节点所包括的对象的顺序。

方案12.根据方案11所述的规则处理装置,其中,

所述规则/对象顺序获得单元被配置为:针对所述最终属性流动图的中间节点,将该中间节点的前节点所包含的对象的顺序确定为优先于与该中间节点并列的、与该中间节点具有相同后节点的节点所包含的其他对象的顺序。

方案13.根据方案11或12所述的规则处理装置,其中,

所述比较和连接单元通过所述比较和所述连接得到多个最终属性流动图,并且

所述规则/对象顺序获得单元被配置为:在不同的最终属性流动图之间,任意确定所述有向边所对应的规则的顺序和/或所述节点所包括的对象的顺序的。

方案14.根据方案10所述的规则处理装置,其中,

所述比较和连接单元被配置为:当判断起始节点和尾节点是否相匹配时,判断起始节点和尾节点的对象、属性和约束是否分别匹配。

最后,还需要说明的是,在本公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

尽管上面已经通过本公开的具体实施例的描述对本公开进行了披露,但是,应该理解,本领域技术人员可在所附权利要求的精神和范围内设计对本公开的各种修改、改进或者等同物。这些修改、改进或者等同物也应当被认为包括在本公开所要求保护的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1