一种提供决策信息的方法和装置
技术领域
本发明涉及计算机领域,特别涉及一种提供决策信息的方法和装置。
背景技术
规则引擎因其灵活性(规则定制者能基于业务程序之外改变程序执行逻辑),能节约软件研发成本,降低因开发周期相对修改规则更长、耗费人力更多而导致的各种风险,受到电商研发领域的重视。
规则引擎是专家系统的一个分支,作为人工智能的一个分支,它模仿人类的推理方式,运用试探方式进行推理,并使用人类能理解的术语解释和证明它的推理结论。Rete算法目前作为多数规则擎的规则匹配算法,在1979年由CharlesForgy博士在一篇论文中发表。
目前,主流的工作流系统有JBossDroolsExpert,VisualRules,ILOG等,其中Drools(下面对JBossDroolsExpert都简称为Drools)是开源的。Drools规则引擎包括三部分:规则库、匹配引擎和事实数据;其中推理引擎包括三部分:模式匹配器、执行计划和执行引擎;各连接部件的工作步骤:
1.规则文件在进入规则引擎之前,规则需要通过编译器被编译为Java字节码,并存于规则库;
2.推理引擎根据Rete算法,连接规则库中的规则匹配条件和事实数据进行匹配;
3.按照规则执行计划以及规则的优先级设置生成待执行规则队列;
4.执行规则队列中的规则。
在电子商务环境下,Drools规则引擎存在如下一些问题:
1.Drools规则引擎不支持构建规则决策树模型,因此无法建立规则决策树模型。在电商系统中有一些场景需要用到决策树模型,如促销、销量预测和价格调整等,Drools规则引擎将无法发挥作用,从而导致是否促销、销量预测以及价格调整等问题无法准确而快速的解决。
2.Drools规则引擎不支持调用指定范围的规则集合,如规则已经分好了组,Drools规则引擎需要按组调用该组内的所有规则,导致规则匹配范围大、内存消耗大和匹配效率低等问题。
发明内容
有鉴于此,本发明提供一种提供决策信息的方法和装置,能够在一些需要用到决策信息的场景时,准确而快速的解决待决策问题;同时由于设定了规则之间的关系,因而解决了规则匹配范围大、内存消耗大和匹配效率低的问题。
为实现上述目的,根据本发明的一个方面,提供了一种提供决策信息的方法。
本发明的提供决策信息的方法包括:接收规则制定者输入的规则文本;所述规则文本用于描述规则树中的多层规则节点以及每层规则节点与其子规则节点之间的关联关系;将所述规则文本编译为规则字节码,并将该规则字节码以键值对的形式进行存储;其中,键名为所述规则文本的规则名称;键值为规则名称所对应的规则字节码;接收规则消费者输入的规则名称,并根据该规则名称获取所对应的规则字节码,然后再将所接收的待决策数据与该规则字节码进行匹配以得到决策结果并输出。
可选地,所述接收规则制定者输入的规则文本的步骤之后包括:接收规则制定者输入的规则文本执行选项;所述规则文本执行选项包括:执行第一条匹配的规则文本和执行所有匹配的规则文本;对处于同一层的规则文本:当规则制定者输入的规则文本执行选项为执行第一条匹配的规则文本时,只执行该层第一条匹配的规则文本;当规则制定者输入的规则文本执行选项为执行所有匹配的规则文本时,依次执行该层所有匹配的规则文本。
可选地,所述接收规则消费者输入的规则名称的步骤之前包括:锁定当前所存储的规则文本的版本。
可选地,所述每层规则节点与其子规则节点之间的关联关系包括:节点所对应的规则文本的规则序号与其子节点对应的规则文本的规则序号之间的包含关系。
可选地,所述每层规则节点按照优先级顺序排列,且该优先级顺序即为该层节点所对应的规则文本的执行顺序。
根据本发明的另一方面,提供了一种提供决策信息的装置。
本发明的提供决策信息的装置,其特征在于,包括:接收模块,用于接收规则制定者输入的规则文本;所述规则文本用于描述规则树中的多层规则节点以及每层规则节点与其子规则节点之间的关联关系;编译模块,用于将所述规则文本编译为规则字节码,并将该规则字节码以键值对的形式进行存储;其中,键名为所述规则文本的规则名称;键值为规则名称所对应的规则字节码;决策模块,用于接收规则消费者输入的规则名称,并根据该规则名称获取所对应的规则字节码,然后再将所接收的待决策数据与该规则字节码进行匹配以得到决策结果并输出。
可选地,还包括执行选项接收模块,用于接收规则制定者输入的规则文本执行选项;所述规则文本执行选项包括:执行第一条匹配的规则文本和执行所有匹配的规则文本;对处于同一层的规则文本:当规则制定者输入的规则文本执行选项为执行第一条匹配的规则文本时,只执行该层第一条匹配的规则文本;当规则制定者输入的规则文本执行选项为执行所有匹配的规则文本时,依次执行该层所有匹配的规则文本。
可选地,还包括锁定模块,用于锁定当前所存储的规则文本的版本。
可选地,每层规则节点与其子规则节点之间的关联关系包括:节点所对应的规则文本的规则序号与其子节点对应的规则文本的规则序号之间的包含关系。
可选地,所述每层规则节点按照优先级顺序排列,且该优先级顺序即为该层节点所对应的规则文本的执行顺序。
根据本发明的技术方案,规则制定者所输入的规则文本按照树形层次结构组织,规则之间的关系明确,因此,能够在一些需要用到决策信息的场景时,准确而快速的解决待决策问题;同时由于增加了规则文本执行选项,当规则文本所描述的规则树包含大量规则节点,且规则文本执行选项为执行第一条匹配的规则文本,系统根据执行选项快速的输出决策结果,因而提高了系统输出决策信息的效率,进而解决了规则匹配范围大、内存消耗大和匹配效率低的问题。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种提供决策信息的方法的示意图;
图2是根据本发明实施例的一种提供决策信息的装置的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种提供决策信息的方法的示意图。如图1所示,该方法主要包括如下的步骤S10至S12。
步骤S10:接收规则制定者输入的规则文本。在该步骤中,规则文本用于描述规则树中的多层规则节点以及每层规则节点与其子规则节点之间的关联关系;其中,每层规则节点与其子规则节点之间的关联关系包括:节点所对应的规则文本的规则序号与其子节点对应的规则文本的规则序号之间的包含关系;并且每层规则节点按照优先级顺序排列,该优先级顺序即为该层节点所对应的规则文本的执行顺序。
本实施例以商品的调价规则树为例进行说明,其中,SKU为商品的库存量单位,该调价规则树所对应的规则文本如下:
1-1
when(SKU销量环比大于50%)
yes;
1-2(下含3条子规则:2-1,2-2,2-3)
when(SKU销量环比大于10%)
yes;
1-3
when(SKU销量环比小于0)
yes;
2-1
when(SKU近一月价格波动次数大于5)
yes;
2-2(下含3条子规则:3-1,3-2,3-3)
when(SKU近一月是否调过价格)
yes;
2-3
when(SKU近一月促销次数大于1)
yes;
3-1(下含3条子规则:4-1,4-2,4-3)
when(SKU好评率大于80%)
yes;
3-2
when(SKU好评率小于50%)
yes;
3-3
when(SKU评论数小于100)
yes;
4-1
when(SKU利率大于10%)
yes;
4-2(下含3条子规则:5-1,5-2,5-3)
when(SKU评论数小于10%)
yes;
4-3
when(SKU销量同比小于10%)
yes;
5-1
when(SKU库存小于10000并且SKU销量同比大于10%){
SKU调价5%
yes;
}
5-2
when(SKU库存大于等于10000)
yes;
5-3
when(SKU库存大于等于20000)
yes;
上述规则文本所描述的调价规则树包括5层,第一层包括3个规则节点,第一层规则节点对应的规则文本的规则序号即:1-1、1-2、以及1-3;在该规则树的第二层包括3个规则节点,规则节点所对应的规则文本的规则序号分别是2-1、2-2、以及2-3,根据规则文本中包括的规则节点与其子节点之间的关联关系可知,规则序号为2-1、2-2、以及2-3的规则文本所对应的规则节点为规则序号是1-2的规则文本所对应的规则节点的子节点;同理,该规则树的第三层、第四层、以及第五层分别都包括3个规则节点,且规则序号为3-1、3-2、以及3-3的规则文本所对应的规则节点为规则序号是2-2的规则文本所对应的规则节点的子节点;规则序号为4-1、4-2、以及4-3的规则文本所对应的规则节点为规则序号是3-1的规则文本所对应的规则节点的子节点;规则序号为5-1、5-2、以及5-3的规则文本所对应的规则节点为规则序号是4-2的规则文本所对应的规则节点的子节点。
规则文本中所给出每一层的规则序号即为该层规则节点的优先级排列顺序,也就是该层规则文本的执行顺序。例如,当规则文本执行到规则树的第三层时,首先将输入的数据与规则序号为3-1的规则文本进行匹配。
在步骤S10之后,系统接收规则制定者输入的规则文本执行选项,即执行第一条匹配的规则文本和执行所有匹配的规则文本;对处于同一层的规则文本:当规则制定者输入的规则文本执行选项为执行第一条匹配的规则文本时,只执行该层第一条匹配的规则文本;当规则制定者输入的规则文本执行选项为执行所有匹配的规则文本时,依次执行该层所有匹配的规则文本。当系统接收到规则制定者输入的规则文本后,规则制定者根据系统提供的规则文本执行选项对所输入的规则文本进行执行设定。以调价规则树为例,假设定规则制定者设定的规则文本执行选项为执行第一条匹配的规则文本,那么,当规则文本执行到第一层时,如果规则序号为1-1的规则文本与规则消费则所输入的待决策数据匹配,则在该层只执行规则序号为1-1的规则文本;当规则制定者输入的规则文本执行选项为执行所有匹配的规则文本时,如果规则文本执行到第二层时,规则序号为2-1、2-2、以及2-3的规则文本与规则消费者输入的待决策数据都匹配,那么系统依次执行这三条规则。在本实施例中,由于增加了规则文本执行选项,当规则文本所描述的规则树包含大量规则节点,且规则文本执行选项为执行第一条匹配的规则文本,系统根据执行选项快速的给出决策结果,因而提高了系统输出决策信息的效率。
步骤S11:将所述规则文本编译为规则字节码,并将该规则字节码以键值对的形式进行存储。其中,键名为所述规则文本的规则名称;键值为规则名称所对应的规则字节码。在此步骤中,系统对接收到的规则制定者输入的规则文本进行编译以生成规则字节码,然后将规则字节码保存到数据库,数据库保存成功后,再将规则字节码以键值对的形式保存至规则库缓存,其中,键名为规则文本的规则名称,并且在设定规则名称时,系统检查规则名称的唯一性和命名的合法性。编译后的规则字节码可以为Java规则字节码。
步骤S12:接收规则消费者输入的规则名称,并根据该规则名称获取所对应的规则字节码,然后再将所接收的待决策数据与该规则字节码进行匹配以得到决策结果并输出。在该步骤中,当规则消费者调用规则文本时,通过系统所提供的接口输入所调用的规则文本的名称,系统根据接收到的规则名称获取相应的规则字节码,然后系统根据规则制定者所设定的所调用规则的规则执行选项将规则字节码与规则消费者所输入的待决策数据进行匹配,从而得到决策结果并输出。
在步骤S12之前,规则消费者在调用规则文本之前锁定当前所存储的规则文本的版本,即在调用之前确定规则文本的版本,从而避免在多次调用一个规则文本的过程中,部分待决策数据运用旧版本规则,另一部分待决策数据运用新版本规则而导致的决策信息正确性问题。
图2是根据本发明实施例的一种提供决策信息的装置的示意图。如图2所示,本发明实施例的提供决策信息的装置20主要包括接收模块21、编译模块22、以及决策模块23。接收模块21用于接收规则制定者输入的规则文本;所述规则文本用于描述规则树中的多层规则节点以及每层规则节点与其子规则节点之间的关联关系;编译模块22用于将所述规则文本编译为规则字节码,并将该规则字节码以键值对的形式进行存储;其中,键名为所述规则文本的规则名称;键值为规则名称所对应的规则字节码;决策模块23用于接收规则消费者输入的规则名称,并根据该规则名称获取所对应的规则字节码,然后再将所接收的待决策数据与该规则字节码进行匹配以得到决策结果并输出。
本发明实施例的提供决策信息的装置20还可包括执行选项接收模块(图中未示出),用于接收规则制定者输入的规则文本执行选项;所述规则文本执行选项包括:执行第一条匹配的规则文本和执行所有匹配的规则文本;对处于同一层的规则文本:当规则制定者输入的规则文本执行选项为执行第一条匹配的规则文本时,只执行该层第一条匹配的规则文本;当规则制定者输入的规则文本执行选项为执行所有匹配的规则文本时,依次执行该层所有匹配的规则文本。
本发明实施例的提供决策信息的装置20还可包括锁定模块(图中未示出),用于锁定当前所存储的规则文本的版本。
根据本发明实施例的技术方案,规则制定者所输入的规则文本按照树形层次结构组织,规则之间的关系明确,因此,能够在一些需要用到决策信息的场景时,准确而快速的解决待决策问题;同时由于增加了规则文本执行选项,当规则文本所描述的规则树包含大量规则节点,且规则文本执行选项为执行第一条匹配的规则文本,系统根据执行选项快速的输出决策结果,因而提高了系统输出决策信息的效率,进而解决了规则匹配范围大、内存消耗大和匹配效率低的问题。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。