CN106909543A - 一种规则引擎的模式匹配方法和装置 - Google Patents
一种规则引擎的模式匹配方法和装置 Download PDFInfo
- Publication number
- CN106909543A CN106909543A CN201510970935.7A CN201510970935A CN106909543A CN 106909543 A CN106909543 A CN 106909543A CN 201510970935 A CN201510970935 A CN 201510970935A CN 106909543 A CN106909543 A CN 106909543A
- Authority
- CN
- China
- Prior art keywords
- node
- regular flow
- weighted digraph
- event
- current event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
Abstract
本申请实施例公开了一种规则引擎的模式匹配方法和装置,其中方法包括:根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的流程,规则流程之间相互独立;根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。本申请利用加权有向图来实现规则引擎的匹配,避免了匹配过程的回溯问题,提高了规则引擎的匹配效果,另外,这种结构的规则流程,方便维护人员的操作,具有较好的可扩展性。
Description
技术领域
本申请涉及计算机应用领域,特别是涉及一种规则引擎的模式匹配方法和装置。
背景技术
复杂企业级项目的开发和维护面临着软件必须“随需而变”的问题。由于随外部条件和需求经常变动的商业决策和业务逻辑被固化在代码中,这使得软件的开发和维护变得异常困难,耗费大量的时间和成本,因此迫切需要分离企业决策者的决策逻辑和应用开发者的技术决策,将这些企业决策者的决策逻辑放在中心数据库或者其他的地方,让他们能在运行时可以动态地被管理和被修改,从而提高软件系统的柔性和适应性。在这样的动态环境中,规则引擎应运而生,规则引擎能够增加软件的可维护性,为软件提供可供用户直接修改业务逻辑的功能,使得软件项目不会因为维护成本太高而难以运行。
规则引擎正是由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块变形业务决策。接收数据输入,解释业务规则,并根据业务规则作出业务决策。
目前大部分规则引擎产品的都采用RETE算法进行模式匹配。RETE算法是Charles Forgy博士于1979年提出的一种效率较高的模式匹配算法,其核心思想是将分离的匹配项根据内容动态构造匹配数,以达到显著降低计算量的效果。
但,基于RETE算法规则引擎还是存在一些缺点:
(1)由于RETE算法只能对类对象进行匹配处理,因此,需要预先为其准备好基础数据,而数据准备工作量却是非常大。例如:在准备数据时需要采用编写程序的方式来编写各种数据处理逻辑,如数据过滤逻辑、预处理逻辑、数据转换逻辑、数据存取逻辑等,然后利用这些程序来处理数据。程序的编写和数据的处理都需要耗费大量的时间和成本。
(2)RETE算法在处理共享的资源时,资源消耗太大,导致规则引擎的性能较差。这是因为RETE算法按照优先级匹配条件语句,执行规则语句,规则执行后会引发事实的变化,规则引擎就会重新进行条件匹配,直到不能再匹配为止,这样反馈循环匹配的方式,会降低规则引擎的性能。
发明内容
为了解决上述技术问题,本申请实施例提供了一种规则引擎的模式匹配方法和装置,利用加权有向图方式的规则流程进行匹配,避免回溯问题,既能够提高规则引擎的性能,又具有较好的可扩展性。
在本申请第一方面,提供了一种规则引擎的模式匹配方法,所述方法包括:
根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的流程,规则流程之间相互独立;
根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
可选的,通过以下方式建立规则流程:
从业务规则中获取用于描述条件和操作的信息;其中,业务规则包含用于处理特定类型事件的、包括条件和对应操作的内容;
根据获取到的用于描述操作的信息创建对应的节点,所述节点用于承载操作;
根据获取到的用于描述条件的信息创建与节点关联的边,其中,边包含:边起始节点、边终止节点、条件、边权重,以建立用于表示规则流程的加权有向图。
可选的,所述规则库中还包括:用于测试的规则流程,所述用于测试的规则流程是指以加权有向图方式表达的、能够处理测试事件的流程;
则所述方法,还包括:
若当前事件的类型对应的规则流程是所述用于测试的规则流程时,根据所述用于测试的规则流程的加权有向图对当前事件进行条件匹配,但不执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作,仅保存当前事件的匹配路径信息。
可选的,根据当前事件的事件类型在规则库中选择多个对应的规则流程;
则根据当前事件多个对应的规则流程的加权有向图分别独立地、并行对当前事件进行条件匹配,以分别独立地、并行执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
可选的,所述加权有向图中边所承载的条件是利用逻辑表达式表征的。
可选的,所述根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作的步骤,具体是:
根据加权有向图和当前事件,判断加权有向图中被匹配的节点关联的边所承载的逻辑表达式的真伪;
如果为真,则该条边被匹配命中,执行该条边关联的节点所承载的操作,继续判断下一个节点关联的边所承载的逻辑表达式的真伪,直到匹配命中加权有向图中的结束节点为止。
可选的,当加权有向图中的一个节点关联多条边时,
则所述判断节点关联的边所承载的逻辑表达式的真伪,具体为:
按照边的权重由高到低的顺序,依次判定节点关联的每条边所承载的逻辑表达式的真伪,如果某条边判断为真,则停止判断节点关联的其他边。
本申请第二方面提供了一种规则引擎的模式匹配装置,所述装置包括:
规则流程选择单元,用于根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的、包含条件和对应操作的流程,规则流程之间相互独立;
规则流程执行单元,用于根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
可选的,所述装置还包括:
规则流程创建单元,用于创建所述规则流程;
所述规则流程创建单元包括:
信息获取子单元、节点创建子单元、边创建子单元;
信息获取子单元,用于从业务规则中获取用于描述条件和操作的信息;其中,业务规则包含用于处理特定类型事件的、包括条件和对应操作的内容;
节点创建子单元,用于根据获取到的用于描述操作的信息创建对应的节点,所述节点用于承载操作;
边创建子单元,用于根据获取到的用于描述条件的信息创建与节点关联的边,其中,边包含:边起始节点、边终止节点、边承载的条件、边权重,以建立用于表示规则流程的加权有向图。
可选的,所述规则库中还包括:用于测试的规则流程,所述用于测试的规则流程是指以加权有向图方式表达的、能够处理测试事件的流程;
则所述装置,还包括:
规则流程执行单元,用于若当前事件的类型对应的规则流程是所述用于测试的规则流程时,根据所述用于测试的规则流程的加权有向图对当前事件进行条件匹配,但不执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作,仅保存当前事件的匹配路径信息。
可选的,所述规则流程选择单元,具体用于根据当前事件的事件类型在规则库中选择多个对应的规则流程;
所述规则流程执行单元,具体用于根据当前事件多个对应的规则流程的加权有向图分别独立地、并行对当前事件进行条件匹配,以分别独立地、并行执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
可选的,所述加权有向图中边所承载的条件是利用逻辑表达式表征的。
可选的,所述规则流程执行单元,包括:
边条件判断子单元,用于根据加权有向图和当前事件,判断加权有向图中被匹配的节点关联的边所承载的逻辑表达式的真伪;如果为真,则该条边被匹配命中,触发操作执行子单元;
操作执行子单元,用于执行被匹配命中的边关联的节点所承载的操作,再触发所述边条件判断子单元对下一个节点关联的边进行判断,直到匹配命中加权有向图中的结束节点为止。
可选的,当加权有向图中的一个节点关联多条边时,
则边条件判断子单元,具体用于:
按照边的权重由高到低的顺序,依次判定节点关联的每条边所承载的逻辑表达式的真伪,如果某条边判断为真,则停止判断节点关联的其他边,并触发操作执行子单元。
由上述实施例可以看出,与现有技术相比,本申请的优点在于:
本申请先根据当前事件的事件类型在规则库中选择对应的规则流程;其中,规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的、包含条件和对应操作的流程,规则流程之间相互独立;这种,基于加权有向图的方式表达规则流程,其修改方式比较简单,如局部规则修改只需对相关节点及其关联的后续节点,因此,其便于规则流程的维护,可扩展性非常好。再根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。这种,基于加权有向图的匹配方式,是沿着单向方式匹配,节点的操作不会影响上一节点的操作,不会出现回溯问题,匹配效率较高,能够提升规则引擎的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种规则引擎的模式匹配方法的流程图;
图2是本发明实施例提供的规则流程建立方法流程图;
图3是本发明实施例提供的一种加权有向图示例图;
图4是本发明实施例提供的一种加权有向图示例图;
图5是本发明实施例提供的一种规则引擎的模式匹配装置的结构图;
图6是本发明实施例提供的另一种规则引擎的模式匹配装置的结构图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例进行详细描述。
方法实施例
请参阅图1,图1本发明实施例提供的一种规则引擎的模式匹配方法的流程图,该方法可以由用户机器执行,用户机器可以是个人的PC机,也可以是各种类型的网站服务器,例如Web服务器,或者APP服务器。如图1所示,该方法可以包括步骤S101和步骤S102:
步骤101:根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的流程,规则流程之间相互独立;
步骤102:根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
本发明实施例的方法,应用于规则引擎中,而规则引擎是一种根据规则流程中包含的指定过滤条件,判断其是否能够匹配当前事件,以决定是否执行规则中所规定的动作的引擎,规则引擎一般嵌入在应用系统中,对应用系统前端接收到的事件进行处理。
在实现时,应用系统先进行事件采集,由于不同类型的设备上报的事件格式有较大的区域,所以,对于不同类型的事件分别进行归一化处理,事件归一化定义了较通用的事件的属性,如事件时间、事件名称、事件类型、事件信息内容、事件生成者信息等。
在实现时,还可以从大量事件中将符合一定条件的重复事件归并为一条事件,同时记录发次数。通过归并,可以减少事件数量,提供系统的处理能力。归并主要基于的条件包括:时间窗、源地址、目的地址、源端口、目的端口、事件类型等。
应用系统采集得到事件之后,将事件传送到规则引擎中,然后利用上述方法步骤101根据事件类型选择需要执行的规则流程。
一般情况下,不同的规则流程分别用于处理不同类型的事件;因此,一个事件只需要执行一个规则流程;但,特殊情况下,不同的规则流程可以用于处理相同类型的事件。这样,在规则库中针对一个事件可以选择到多个对应的规则流程,这些规则流程彼此独立地、并行地执行各自的操作。具体的:
根据当前事件的事件类型在规则库中选择多个对应的规则流程;
则根据当前事件多个对应的规则流程的加权有向图分别独立地、并行对当前事件进行条件匹配,以分别独立地、并行执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
另外,考虑到规则流程在建立初期,测试人员需要进行大量测试,以验证其性能;这就需要测试人员搭建测试平台来独立测试。为了简化测试人员的工作量,提高测试效率,本发明在图1所示方法的基础上还提供了可选的实现方案。具体如下:
所述规则库中还包括:用于测试的规则流程,所述用于测试的规则流程是指以加权有向图方式表达的、能够处理测试事件的流程;
则所述方法,还包括:
若当前事件的类型对应的规则流程是所述用于测试的规则流程时,根据所述用于测试的规则流程的加权有向图对当前事件进行条件匹配,但不执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作,仅保存当前事件的匹配路径信息。
这样,当有新的规则流程需要被测试时,则在规则库中增加该新的测试流程,而通过特定类型的事件来测试该测试流程的性能,由于测试过程关注的是规则流程的逻辑性是否正确,因此,在测试过程中,不需要真正执行动作,而只是记录事件的匹配路径信息即可。由于在规则库中规则流程间彼此独立,互不影响,因此,整个测试过程是独立执行的,既不会对其他规则流程的执行产生影响,也不会受到其他规则流程的影响。这就相当于在规则引擎内为测试人员提供了一个测试平台,便于测试人员操作。
接下来,对上述规则库中的规则流程的建立过程进行解释说明。
参见图2,图2是本发明实施例提供了规则流程建立方法流程图,如图2所示,该方法可以包括:
步骤201:从业务规则中获取用于描述条件和操作的信息;其中,业务规则包含用于处理特定类型事件的、包括条件和对应操作的内容;
步骤202:根据获取到的用于描述操作的信息创建对应的节点,所述节点用于承载操作;
步骤203:根据获取到的用于描述条件的信息创建与节点关联的边,其中,边包含:边起始节点、边终止节点、边承载的条件、边权重,以建立用于表示规则流程的加权有向图。
这里需要说明的是,在实现时,步骤202创建的节点承载的操作可以为空,将这种节点可以看作是虚拟处理节点,其不需要执行任何动作。一个节点可以承载一个操作,也可以承载多个操作。步骤203创建的边承载的条件也可以为空,将这种边可以看作是无条件边,也称之为永真边,这种边的条件判断结果永远为真。一般情况下,当一个节点关联多条边,其中一条为永真边时,该条永真边的权重应该设置为最低。
从上述步骤可以看出,该方法是利用加权有向图的方式来表达业务规则,使得加权有向图与规则流程之间具有一一映射关系,加权有向图中的节点(Node)对应规则流程的操作(Action)部分;一个节点可以对应一个或多个操作;加权有向图中的边(Edge)对应规则流程中的条件部分;边的要素包括边起始节点、边终止节点、边权重、边承载的条件,这样一个加权有向图就能够很好的诠释规则流程的全部内容,而加权有向图具有布局简单、便于维护等优点,这样,就方便业务人员维护该业务规则。
为了便于理解,下面再结合示例对加权有向图的原理进行解释说明。
加权有向图可以用公式G=(V,E)表示,其中,集合V是非空的顶点集(节点集),集合E是带权重有方向的边的集合,E中元素称为带权重的有向边。
例如,G=(V,E),V={v1,v2,v3,v4,v5},E={<v1,v2,T1,2>,<v1,v3,T2,1>,<v2,v4,T3,2>,<v3,v4,T4,1>,<v4,v5,T5,0>},其中,E中包含的有序对表示带权重、条件的有向边,有序对中的4个元素分别表示与边关联的起始节点、终止节点、条件、边的权重,其中,权重越高表示该条边的具有越高的遍历优先权。例如,有序对<v1,v2,T1,2>表示,起始节点V1到终止节点V2的边,携带条件T1,边的权重为2。基于这些信息可以唯一确定出一个加权有向图,如图3所示。
在实现时,还可以按照如下约束条件来生成用于表示规则流程的加权有向图:
(1)有且只有一个开始节点和一个结束节点;如图3中示出的开始节点为V1,结束节点为V5。
(2)有向图中任何一个节点都有到结束节点一条路径。
(3)任何两个节点最多只有一条边,不存在环路。
另外,在实现时,可以利用逻辑表达式来表征加权有向图中边所承载的条件。其中,逻辑表达式的形式多种多样,在本发明实施例中对逻辑表达式的具体形式不受限制,在实现时,多个简单逻辑表达式还可以通过与(&)或(||)非(!)组合成为更为复杂逻辑表达式。
一般的,逻辑表达式可以包括左值、操作符、右值,其中,左值可以是常量或函数;操作符合可以是大于、小于、等于等数学符号;右值也可以是常量或函数。下面通过示例来说明。
例如,边承载的条件是过滤商品标题含药品,则其逻辑表达式为:
Substr(title,’药品’)==TRUE;
如果,所述加权有向图中边所承载的条件是利用逻辑表达式表征的。则上述步骤102可以具体为:
根据加权有向图和当前事件,判断加权有向图中被匹配的节点关联的边所承载的逻辑表达式的真伪;
如果为真,则该条边被匹配命中,执行该条边关联的节点所承载的操作,继续判断下一个节点关联的边所承载的逻辑表达式的真伪,直到匹配命中加权有向图中的结束节点为止。
其中,当加权有向图中的一个节点关联多条边时,
则所述判断节点关联的边所承载的逻辑表达式的真伪,具体为:
按照边的权重由高到低的顺序,依次判定节点关联的每条边所承载的逻辑表达式的真伪,如果某条边判断为真,则停止判断节点关联的其他边。
下面结合图3对该方式进行举例说明。假设图3所示的加权有向图是规则库中一个规则流程的加权有向图,应用系统接收一个事件,根据事件的类型选择对应的规则流程,正好是图3所示的加权有向图表示的规则流程。
则匹配过程如下:
从图3所示的加权有向图中边分别是<v1,v2,T1,2>,<v1,v3,T2,1>,<v2,v4,T3,2>,<v3,v4,T4,1>,<v4,v5,T5,0>,则从加权有向图的开始节点V1开始判断,与节点V1关联的边有两条,由于节点V1与节点V2关联的边的权重大于节点V1和V3关联的边的权重,因此,先判断节点V1与节点V2关联的边所承载的条件T1,结合当前事件判断T1,如果判断T1的逻辑表达式为真,则执行V2所承载的操作,停止判断节点V1和V3关联的边;继续判断V2所关联的边,由于V2仅有一条关联的边,则直接判断V2与V4关联的边的条件T3的逻辑表达式的真伪,如果为真,则执行V4所承载的操作,并继续判断V4所关联的边,由于V4向下仅关联V5,则直接判断V4与V5关联的边的条件T5的逻辑表达式的真伪,如果为真,则执行V5所承载的操作,由于V5是加权有向图的结束节点,则匹配过程结束。
可以看出,基于加权有向图对事件进行匹配,能够匹配到一条从开始节点到结束节点的路径,在匹配过程中,执行被匹配的路径上节点所承载的操作。整个匹配过程,沿着有向图的有向边的引导,匹配过程不会出现回溯现象,匹配效率较高。
为了更清楚地体现本发明的优点,下面通过一个示例对比现有技术和分本发明技术的实现效果。
该示例描述的是,一个超市与多家银行合作,超市为用户提供的积分活动,积分的计算规则如下表所示:
但若利用现有技术的方法,则规则引擎维护序列类似如下规则,形成规则集,利用该规则集进行匹配,规则集如下表所示:
但利用本发明实施例提供的方法建立规则库中的规则流程如图4所示。结合上表和图4可以看出,本发明的方案与现有技术的方案相比,在规则引擎的应用中,具有如下优势:
由于规则引擎在应用中,维护人员需要对规则进行维护(初始建立)、对规则进行修改、或新增规则等处理,现有技术方案,完全是基于编程人员的编程思维,一般是先用excel表格或其他辅助工具,把规则维护好再导入规则引擎中。在修改规则时,必须完全了解已有的所有规则,以避免对其中一个规则的修改而影响其他规则。其操作较复杂,对维护人员的要求较高,工作量较大。
但本发明的方案,通过加权有向图来表示规则流程,这种方式类似于思维导图方式,降低了对维护人员的要求,不论多么复杂的规则都可以通过节点分解成简单的规则,方便维护人员进行规则维护。在规则进行修改时,其影响范围只局限于该节点及其后续节点,对其他分支几乎没有影响,可以通过新插入节点或边的方式快速修改。
装置实施例
与上述方法相对应,本申请实施例还提供了一种规则引擎的模式匹配装置,下面结合图5对该装置进行解释说明。如图5所示,该装置可以包括流程选择单元501和规则流程执行单元502。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
规则流程选择单元501,用于根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的、包含条件和对应操作的流程,规则流程之间相互独立;
规则流程执行单元502,用于根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
可选的,如图6所示,另一种装置结构图,具体是在上述图5所示装置的基础上,还增加有如下单元:规则流程创建单元503,用于创建所述规则流程;
所述规则流程创建单元包括:
信息获取子单元5031、节点创建子单元5032、边创建子单元5033;
信息获取子单元,用于从业务规则中获取用于描述条件和操作的信息;其中,业务规则包含用于处理特定类型事件的、包括条件和对应操作的内容;
节点创建子单元,用于根据获取到的用于描述操作的信息创建对应的节点,所述节点用于承载操作;
边创建子单元,用于根据获取到的用于描述条件的信息创建与节点关联的边,其中,边包含:边起始节点、边终止节点、边承载的条件、边权重,以建立用于表示规则流程的加权有向图。
可选的,所述规则库中还包括:用于测试的规则流程,所述用于测试的规则流程是指以加权有向图方式表达的、能够处理测试事件的流程;
则所述装置,还包括:
规则流程匹配单元,用于若当前事件的类型对应的规则流程是所述用于测试的规则流程时,根据所述用于测试的规则流程的加权有向图对当前事件进行条件匹配,但不执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作,仅保存当前事件的匹配路径信息。
可选的,所述规则流程选择单元,具体用于根据当前事件的事件类型在规则库中选择多个对应的规则流程;
所述规则流程执行单元,具体用于根据当前事件多个对应的规则流程的加权有向图分别独立地、并行对当前事件进行条件匹配,以分别独立地、并行执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
可选的,所述加权有向图中边所承载的条件是利用逻辑表达式表征的。
可选的,所述规则流程执行单元,包括:
边条件判断子单元,用于根据加权有向图和当前事件,判断加权有向图中被匹配的节点关联的边所承载的逻辑表达式的真伪;如果为真,则该条边被匹配命中,触发操作执行子单元;
操作执行子单元,用于执行被匹配命中的边关联的节点所承载的操作,再触发所述边条件判断子单元对下一个节点关联的边进行判断,直到匹配命中加权有向图中的结束节点为止。
可选的,当加权有向图中的一个节点关联多条边时,
则边条件判断子单元,具体用于:
按照边的权重由高到低的顺序,依次判定节点关联的每条边所承载的逻辑表达式的真伪,如果某条边判断为真,则停止判断节点关联的其他边,并触发操作执行子单元。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本申请所提供的一种规则引擎的模式匹配方法和装置进行了详细介绍,本文中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种规则引擎的模式匹配方法,其特征在于,所述方法包括:
根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的流程,规则流程之间相互独立;
根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
2.根据权利要求1所述的方法,其特征在于,通过以下方式建立规则流程:
从业务规则中获取用于描述条件和操作的信息;其中,业务规则包含用于处理特定类型事件的、包括条件和对应操作的内容;
根据获取到的用于描述操作的信息创建对应的节点,所述节点用于承载操作;
根据获取到的用于描述条件的信息创建与节点关联的边,其中,边包含:边起始节点、边终止节点、条件、边权重,以建立用于表示规则流程的加权有向图。
3.根据权利要求1所述的方法,其特征在于,
所述规则库中还包括:用于测试的规则流程,所述用于测试的规则流程是指以加权有向图方式表达的、能够处理测试事件的流程;
则所述方法,还包括:
若当前事件的类型对应的规则流程是所述用于测试的规则流程时,根据所述用于测试的规则流程的加权有向图对当前事件进行条件匹配,但不执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作,仅保存当前事件的匹配路径信息。
4.根据权利要求1所述的方法,其特征在于,
根据当前事件的事件类型在规则库中选择多个对应的规则流程;
则根据当前事件多个对应的规则流程的加权有向图分别独立地、并行对当前事件进行条件匹配,以分别独立地、并行执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
5.根据权利要求1所述的方法,其特征在于,
所述加权有向图中边所承载的条件是利用逻辑表达式表征的。
6.根据权利要求5所述的方法,其特征在于,所述根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作的步骤,具体是:
根据加权有向图和当前事件,判断加权有向图中被匹配的节点关联的边所承载的逻辑表达式的真伪;
如果为真,则该条边被匹配命中,执行该条边关联的节点所承载的操作,继续判断下一个节点关联的边所承载的逻辑表达式的真伪,直到匹配命中加权有向图中的结束节点为止。
7.根据权利要求6所述的方法,其特征在于,
当加权有向图中的一个节点关联多条边时,
则所述判断节点关联的边所承载的逻辑表达式的真伪,具体为:
按照边的权重由高到低的顺序,依次判定节点关联的每条边所承载的逻辑表达式的真伪,如果某条边判断为真,则停止判断节点关联的其他边。
8.一种规则引擎的模式匹配装置,其特征在于,所述装置包括:
规则流程选择单元,用于根据当前事件的事件类型在规则库中选择对应的规则流程;所述规则库包括:至少一个规则流程,规则流程是指以加权有向图方式表达的、能够处理特定类型事件的、包含条件和对应操作的流程,规则流程之间相互独立;
规则流程执行单元,用于根据当前事件对应的规则流程的加权有向图对当前事件进行条件匹配,以执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
规则流程创建单元,用于创建所述规则流程;
所述规则流程创建单元包括:
信息获取子单元、节点创建子单元、边创建子单元;
信息获取子单元,用于从业务规则中获取用于描述条件和操作的信息;其中,业务规则包含用于处理特定类型事件的、包括条件和对应操作的内容;
节点创建子单元,用于根据获取到的用于描述操作的信息创建对应的节点,所述节点用于承载操作;
边创建子单元,用于根据获取到的用于描述条件的信息创建与节点关联的边,其中,边包含:边起始节点、边终止节点、边承载的条件、边权重,以建立用于表示规则流程的加权有向图。
10.根据权利要求8所述的装置,其特征在于,所述规则库中还包括:用于测试的规则流程,所述用于测试的规则流程是指以加权有向图方式表达的、能够处理测试事件的流程;
则所述装置,还包括:
规则流程执行单元,用于若当前事件的类型对应的规则流程是所述用于测试的规则流程时,根据所述用于测试的规则流程的加权有向图对当前事件进行条件匹配,但不执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作,仅保存当前事件的匹配路径信息。
11.根据权利要求8所述的装置,其特征在于,
所述规则流程选择单元,具体用于根据当前事件的事件类型在规则库中选择多个对应的规则流程;
所述规则流程执行单元,具体用于根据当前事件多个对应的规则流程的加权有向图分别独立地、并行对当前事件进行条件匹配,以分别独立地、并行执行在加权有向图中被匹配的一条从开始节点到结束节点的路径上各节点所承载的操作。
12.根据权利要求8所述的装置,其特征在于,
所述加权有向图中边所承载的条件是利用逻辑表达式表征的。
13.根据权利要求12所述的装置,其特征在于,所述规则流程执行单元,包括:
边条件判断子单元,用于根据加权有向图和当前事件,判断加权有向图中被匹配的节点关联的边所承载的逻辑表达式的真伪;如果为真,则该条边被匹配命中,触发操作执行子单元;
操作执行子单元,用于执行被匹配命中的边关联的节点所承载的操作,再触发所述边条件判断子单元对下一个节点关联的边进行判断,直到匹配命中加权有向图中的结束节点为止。
14.根据权利要求12所述的装置,其特征在于,
当加权有向图中的一个节点关联多条边时,
则边条件判断子单元,具体用于:
按照边的权重由高到低的顺序,依次判定节点关联的每条边所承载的逻辑表达式的真伪,如果某条边判断为真,则停止判断节点关联的其他边,并触发操作执行子单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510970935.7A CN106909543B (zh) | 2015-12-22 | 2015-12-22 | 一种规则引擎的模式匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510970935.7A CN106909543B (zh) | 2015-12-22 | 2015-12-22 | 一种规则引擎的模式匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106909543A true CN106909543A (zh) | 2017-06-30 |
CN106909543B CN106909543B (zh) | 2020-08-25 |
Family
ID=59200617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510970935.7A Active CN106909543B (zh) | 2015-12-22 | 2015-12-22 | 一种规则引擎的模式匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909543B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451401A (zh) * | 2017-07-11 | 2017-12-08 | 武汉金豆医疗数据科技有限公司 | 一种医保智能审核方法和系统 |
CN108920057A (zh) * | 2018-07-11 | 2018-11-30 | 广州视源电子科技股份有限公司 | 电子白板的连接节点控制方法、装置、设备及存储介质 |
CN109493213A (zh) * | 2018-11-09 | 2019-03-19 | 杭州创金聚乾网络科技有限公司 | 一种基于业务规则库的借贷业务决策方法及系统 |
CN109542559A (zh) * | 2018-10-31 | 2019-03-29 | 微服云联科技(深圳)有限公司 | 看板卡片的处理方法、装置、计算机设备和存储介质 |
CN109684212A (zh) * | 2018-12-19 | 2019-04-26 | 浙江诺诺网络科技有限公司 | 一种可视化逻辑测试方法、装置、设备及可读存储介质 |
CN109738871A (zh) * | 2018-12-14 | 2019-05-10 | 中国人民解放军63893部队 | 基于规则引擎的雷达对抗装备试验裁决评估数据处理方法 |
CN110609838A (zh) * | 2019-09-09 | 2019-12-24 | 北京航天自动控制研究所 | 全局最优的随机事件发生时间序列与标准模板的匹配方法 |
CN111506494A (zh) * | 2020-02-25 | 2020-08-07 | 中信银行股份有限公司 | 一种业务流程实例化的方法 |
CN112068815A (zh) * | 2019-06-11 | 2020-12-11 | 华为技术有限公司 | 一种业务规则的处理方法及装置 |
CN112527838A (zh) * | 2020-12-10 | 2021-03-19 | 联通(浙江)产业互联网有限公司 | 基于规则引擎的业务决策方法、装置、设备及存储介质 |
CN113408875A (zh) * | 2021-06-03 | 2021-09-17 | 长江勘测规划设计研究有限责任公司 | 具备扩展性和结构化的水库调度规则库的构建方法 |
WO2022262737A1 (zh) * | 2021-06-17 | 2022-12-22 | 中兴通讯股份有限公司 | 数据处理方法、装置、芯片及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615269A (zh) * | 2009-08-11 | 2009-12-30 | 用友软件股份有限公司 | 一种工作流管理系统中的回退方法和装置 |
US20110131503A1 (en) * | 2009-09-14 | 2011-06-02 | Cbs Interactive, Inc. | Apparatus and methods for providing targeted advertising from user behavior |
CN102968309A (zh) * | 2012-11-30 | 2013-03-13 | 亚信联创科技(中国)有限公司 | 一种实现基于规则引擎的规则匹配方法和装置 |
CN104050543A (zh) * | 2014-06-30 | 2014-09-17 | 华为技术有限公司 | 流处理系统中的事件处理方法及流处理系统 |
-
2015
- 2015-12-22 CN CN201510970935.7A patent/CN106909543B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615269A (zh) * | 2009-08-11 | 2009-12-30 | 用友软件股份有限公司 | 一种工作流管理系统中的回退方法和装置 |
US20110131503A1 (en) * | 2009-09-14 | 2011-06-02 | Cbs Interactive, Inc. | Apparatus and methods for providing targeted advertising from user behavior |
CN102968309A (zh) * | 2012-11-30 | 2013-03-13 | 亚信联创科技(中国)有限公司 | 一种实现基于规则引擎的规则匹配方法和装置 |
CN104050543A (zh) * | 2014-06-30 | 2014-09-17 | 华为技术有限公司 | 流处理系统中的事件处理方法及流处理系统 |
Non-Patent Citations (2)
Title |
---|
万超: "基于Petri网的工作流引擎的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
张雅鹏: "主动数据仓库基于规则的事件匹配机制的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451401A (zh) * | 2017-07-11 | 2017-12-08 | 武汉金豆医疗数据科技有限公司 | 一种医保智能审核方法和系统 |
CN108920057B (zh) * | 2018-07-11 | 2021-04-06 | 广州视源电子科技股份有限公司 | 电子白板的连接节点控制方法、装置、设备及存储介质 |
CN108920057A (zh) * | 2018-07-11 | 2018-11-30 | 广州视源电子科技股份有限公司 | 电子白板的连接节点控制方法、装置、设备及存储介质 |
CN109542559A (zh) * | 2018-10-31 | 2019-03-29 | 微服云联科技(深圳)有限公司 | 看板卡片的处理方法、装置、计算机设备和存储介质 |
CN109542559B (zh) * | 2018-10-31 | 2022-03-22 | 爱捷软件开发(深圳)有限公司 | 看板卡片的处理方法、装置、计算机设备和存储介质 |
CN109493213A (zh) * | 2018-11-09 | 2019-03-19 | 杭州创金聚乾网络科技有限公司 | 一种基于业务规则库的借贷业务决策方法及系统 |
CN109738871A (zh) * | 2018-12-14 | 2019-05-10 | 中国人民解放军63893部队 | 基于规则引擎的雷达对抗装备试验裁决评估数据处理方法 |
CN109738871B (zh) * | 2018-12-14 | 2022-12-23 | 中国人民解放军63893部队 | 基于规则引擎的雷达对抗装备试验裁决评估数据处理方法 |
CN109684212A (zh) * | 2018-12-19 | 2019-04-26 | 浙江诺诺网络科技有限公司 | 一种可视化逻辑测试方法、装置、设备及可读存储介质 |
CN112068815A (zh) * | 2019-06-11 | 2020-12-11 | 华为技术有限公司 | 一种业务规则的处理方法及装置 |
CN112068815B (zh) * | 2019-06-11 | 2022-03-29 | 华为技术有限公司 | 一种业务规则的处理方法及装置 |
CN110609838B (zh) * | 2019-09-09 | 2022-04-29 | 北京航天自动控制研究所 | 全局最优的随机事件发生时间序列与标准模板的匹配方法 |
CN110609838A (zh) * | 2019-09-09 | 2019-12-24 | 北京航天自动控制研究所 | 全局最优的随机事件发生时间序列与标准模板的匹配方法 |
CN111506494A (zh) * | 2020-02-25 | 2020-08-07 | 中信银行股份有限公司 | 一种业务流程实例化的方法 |
CN112527838A (zh) * | 2020-12-10 | 2021-03-19 | 联通(浙江)产业互联网有限公司 | 基于规则引擎的业务决策方法、装置、设备及存储介质 |
CN112527838B (zh) * | 2020-12-10 | 2022-11-15 | 联通(浙江)产业互联网有限公司 | 基于规则引擎的业务决策方法、装置、设备及存储介质 |
CN113408875A (zh) * | 2021-06-03 | 2021-09-17 | 长江勘测规划设计研究有限责任公司 | 具备扩展性和结构化的水库调度规则库的构建方法 |
WO2022262737A1 (zh) * | 2021-06-17 | 2022-12-22 | 中兴通讯股份有限公司 | 数据处理方法、装置、芯片及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106909543B (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909543A (zh) | 一种规则引擎的模式匹配方法和装置 | |
Barbierato et al. | Performance evaluation of NoSQL big-data applications using multi-formalism models | |
Liu et al. | Storyflow: Tracking the evolution of stories | |
CN110192210A (zh) | 构建和处理用于动态结构化机器学习模型的计算图 | |
CN104142822B (zh) | 使用信息检索进行源代码流分析 | |
CN104572035B (zh) | 网页代码的动态生成方法和动态生成系统 | |
Fan et al. | A decreasing inertia weight particle swarm optimizer | |
US10713429B2 (en) | Joining web data with spreadsheet data using examples | |
Blum et al. | Hybrid metaheuristics | |
Shatnawi et al. | Recovering architectural variability of a family of product variants | |
Yang et al. | A dynamic constraint satisfaction approach for configuring structural products under mass customization | |
Keshavarz et al. | Minimizing total completion time in the flexible flowshop sequence-dependent group scheduling problem | |
CN107408281A (zh) | 数字资产管理供应 | |
CN106873957A (zh) | 一种业务流程的处理方法和设备 | |
Jiang et al. | QoS-aware automatic service composition: A graph view | |
Gunawan et al. | An iterated local search algorithm for the team orienteering problem with variable profits | |
Campagna et al. | Product and production process modeling and configuration | |
US20170300461A1 (en) | Representation of an Interactive Document as a Graph of Entities | |
CN103971191B (zh) | 工作线程管理方法和设备 | |
Kroer et al. | Symbolic configuration for interactive container ship stowage planning | |
Khomenko et al. | An algorithm for direct construction of complete merged processes | |
CN110019207A (zh) | 数据处理方法和装置以及脚本显示方法和装置 | |
Xiao et al. | The DReW system for nonmonotonic dl-programs | |
Gokyer et al. | Non-functional requirements to architectural concerns: ML and NLP at crossroads | |
AbuJarour et al. | Discovering linkage patterns among web services using business process knowledge |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |