首页> 中国专利> 一种决策引擎中规则运行文件的处理方法和装置

一种决策引擎中规则运行文件的处理方法和装置

摘要

本发明实施例提供一种决策引擎中规则运行文件的处理方法和装置,该方法包括:步骤S1:将同一个规则集以不同的版本号多次发布部署后生成多个规则运行文件;步骤S2:读取多个规则运行文件,并且解析、编译以及类加载多个规则运行文件,生成多个规则集Class类;步骤S3:获取多个所述规则集Class类,执行规则集Class类中的规则方法,获得规则方法的输出值;步骤S4:将规则方法的输出值赋值给用户自定义的输出参数变量,规则计算的结果则为输出参数变量的值。本发明实施例中的决策引擎可以支持在规则集多版本的场景下进行计算的技术问题。

著录项

  • 公开/公告号CN114942770A

    专利类型发明专利

  • 公开/公告日2022-08-26

    原文格式PDF

  • 申请/专利权人 北京宇信科技集团股份有限公司;

    申请/专利号CN202210657556.2

  • 发明设计人 徐凤阳;王瑞;谷浩伟;

    申请日2022-06-10

  • 分类号G06F8/41(2018.01);G06F9/445(2018.01);G06F9/455(2006.01);

  • 代理机构北京卓岚智财知识产权代理事务所(特殊普通合伙) 11624;

  • 代理人沈煜华

  • 地址 100044 北京市海淀区高梁桥斜街42号院1号楼5层1-519

  • 入库时间 2023-06-19 16:31:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-10-18

    实质审查的生效 IPC(主分类):G06F 8/41 专利申请号:2022106575562 申请日:20220610

    实质审查的生效

说明书

技术领域

本发明涉及Java软件技术领域,尤其涉及一种决策引擎中规则运行文件的处理方法和装置。

背景技术

决策引擎是一款业务规则运营管理产品,由推理引擎发展而来,实现了将业务规则从应用程序代码中分离出来以满足频繁变化的业务规则需求。

在实现本发明过程中,发明人发现现有技术中的决策引擎不支持在规则集多版本的场景下进行计算,以及决策引擎不支持在按规则优先级的场景下进行计算。

发明内容

有鉴于此,本发明实施例的目的在于提供一种决策引擎中规则运行文件的处理方法和装置,以解决现有技术中心决策引擎不支持在规则集多版本的场景下进行计算的技术问题。

为达到上述目的,第一方面,本发明提供一种决策引擎中规则运行文件的处理方法,包括:

步骤S1:将同一个规则集以不同的版本号多次发布部署后生成多个规则运行文件;

步骤S2:读取多个所述规则运行文件,并且解析、编译以及类加载多个所述规则运行文件,生成多个规则集Class类;

步骤S3:获取多个所述规则集Class类,执行所述规则集Class类中的规则方法,并获取所述规则方法的输出值;

步骤S4:将所述规则方法的输出值赋值给用户自定义的输出参数变量,获得所述输出参数变量的值。

在一些可能的实施方式中,所述步骤S1可以包括:

步骤S11:在决策引擎定义端的配置文件中为同一个规则集配置不同的版本号;

步骤S12:对同一个规则集以不同的版本号多次发布部署后,生成多个规则运行文件,每个所述规则运行文件的文件名称包括规则集id和版本号。

在一些可能的实施方式中,所述步骤S2可以包括:

步骤S21:读取多个所述规则运行文件;

步骤S22:对每个所述规则运行文件的规则内容进行语法解析,获得所述规则内容的伪代码,并将所述伪代码转化为规则集Java语言代码;

步骤S23:将每个所述规则运行文件的文件名作为规则集Java类名,编译所述规则集Java语言代码,生成多个Class二进制文件;

步骤S24:将所述多个Class二进制文件加载到JVM内存中,生成多个以所述规则运行文件的文件名命名的规则集Class类。

在一些可能的实施方式中,所述步骤S3可以包括:

步骤S31:获取每个所述规则集Class类,并利用Java反射机制分别将每个所述规则集Class类生成规则集Class类对象;

步骤S32:按照所述规则集Class类对象执行所述规则集Class类中的规则方法,获得规则方法的输出值。

第二方面,本发明实施例提供了一种决策引擎中规则运行文件的处理方法,包括:

步骤S1’:在决策引擎定义端的可视化界面设置规则集的规则优先级字段值之后,通过发布部署生成规则运行文件,所述规则优先级字段值存储在所述规则运行文件中;

步骤S2’:读取所述规则运行文件,并且解析、编译以及类加载所述规则运行文件,生成规则集Class类;

步骤S3’:获取所述规则集Class类,并按照所述规则优先级字段值依次执行所述规则集Class类中的规则方法,依次获得多个所述规则方法的输出值;

步骤S4’:将所述多个所述规则方法的输出值赋值给所述用户自定义的输出参数变量数组,获得所述输出参数变量数组的值。

在一些可能的实施方式中,所述步骤S2’可以包括:

步骤S21’:读取所述规则运行文件;

步骤S22’:对所述规则运行文件的规则内容进行语法解析,获得所述规则内容的伪代码,并把所述伪代码转化为规则集Java语言代码;

步骤S23’:将所述规则集Java语言代码编译成Class二进制文件;

步骤S24’:将所述Class二进制文件加载到JVM内存中生成规则集Class类。

在一些可能的实施方式中,所述步骤S3’可以包括:

步骤S31’:获取所述规则集Class类,并利用Java反射机制将所述规则集Class类生成规则集Class类对象;

步骤S32’:按照所述规则集Class类对象规则优先级字段值的升序排序的方式依次执行所述规则集Class类中的规则方法,获得规则方法的输出值。

第三方面,本发明实施例提供了一种决策引擎中规则运行文件的处理装置,包括:

第一文件生成模块,用于将同一个规则集以不同的版本号多次发布部署后生成多个规则运行文件;

第一读取编译模块,用于读取多个所述规则运行文件,并且编译多个所述规则运行文件,生成多个规则集Class类;

第一获取执行模块,用于获取多个所述规则集Class对象,执行所述规则集Class类中的规则方法,获得所述规则方法的输出值;

第一赋值返回模块,用于将所述规则方法的输出值赋值给用户自定义的输出参数变量,获得所述输出参数变量的值。

在一些可能的实施方式中,所述第一文件生成模块可以包括:

第一配置子模块,用于在决策引擎定义端的配置文件中为同一个规则集配置不同的版本号;

第一发布部署子模块,用于对同一个规则集以不同的版本号多次发布部署后,生成多个规则运行文件,每个所述规则运行文件的文件名称包括规则集id和版本号。

在一些可能的实施方式中,所述第一读取编译模块可以包括:

第一读取子模块,用于读取多个所述规则运行文件;

第一解析子模块,用于对每个所述规则运行文件的规则内容进行语法解析,获得所述规则内容的伪代码,并将所述伪代码转化为规则集Java语言代码;

第一编译子模块,用于将每个所述规则运行文件的文件名作为规则集Java类名,编译所述规则集Java语言代码,生成多个Class二进制文件;

第一加载生成子模块,用于将多个所述Class二进制文件加载到JVM内存中,生成多个以所述规则运行文件的文件名命名的规则集Class类。

在一些可能的实施方式中,所述第一获取执行模块可以包括:

第一获取与生成子模块,用于获取所述规则集Class类,并利用Java反射机制将所述规则集Class类生成规则集Class类对象;

第一执行子模块,按照所述规则集Class类对象执行所述规则集Class类中的规则方法,获得所述规则方法的输出值。

第四方面,本发明实施例提供了一种决策引擎中规则运行文件的处理装置,包括:

第二文件生成模块,用于在用户引擎定义端的可视化界面设置规则集的规则优先级字段值之后,通过发布部署生成规则运行文件,所述规则优先级字段值存储在所述规则运行文件中;

第二读取编译模块,用于取所述规则运行文件,并且编译所述规则运行文件,生成规则集Class类;

第二获取执行模块,用于获取所述规则集Class类,并按照所述规则优先级字段值依次执行所述规则集Class类中的规则方法,依次获得多个所述规则方法的输出值;

第二赋值返回模块,用于将多个所述规则方法的输出值赋值给用户自定义的输出参数变量数组,获得所述输出参数变量数组的值。

在一些可能的实施方式中,所述第二读取编译模块可以包括:

第二读取子模块,用于读取所述规则运行文件;

第二解析子模块,用于对所述规则运行文件的规则内容进行语法解析,获得所述规则内容的伪代码,并把所述伪代码转化为规则集Java语言代码;

第二编译子模块,用于将所述规则集Java语言代码编译成Class二进制文件;

第二加载生成子模块,用于将所述Class二进制文件加载到JVM内存中生成规则集Class类。

在一些可能的实施方式中,所述第二获取执行模块可以包括:

第二获取与生成子模块,用于获取所述规则集Class类,并利用Java反射机制将所述规则集Class类生成规则集Class类对象;

第二执行子模块,按照所述规则集Class类对象的规则优先级字段值的升序排序的方式依次执行所述规则集Class类中的规则方法,获得规则方法的输出值。

第五方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行上述任意一种决策引擎中规则运行文件的处理方法。

第六方面,提供了一种计算机设备,其特征在于,其包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的任意一种决策引擎中规则运行文件的处理方法。

上述技术方案具有如下有益效果:

本发明提供了一种决策引擎中规则运行文件的处理方法,包括:步骤S1:将同一个规则集以不同的版本号多次发布部署后生成多个规则运行文件;步骤S2:读取多个规则运行文件,并且解析、编译以及类加载多个规则运行文件,生成多个规则集Class类;步骤S3:获取多个规则集Class类,执行规则集Class类中的规则方法,获得规则方法的输出值;步骤S4:将规则方法的输出值赋值给用户自定义的输出参数变量,规则计算结果则为输出参数变量的值。本发明实施例中的决策引擎可以支持在规则集多版本的场景下进行计算的技术问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对本实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种决策引擎中规则运行文件的处理方法的流程图;

图2是本发明实施例的一种生成多个规则运行文件的方法流程图;

图3是本发明实施例的一种生成规则集Class类的方法流程图;

图4是本发明实施例的一种执行规则集Class类中的方法流程图;

图5是本发明实施例的一种Java语言中语法结构的示意图;

图6是本发明是实施例的另一种决策引擎中规则运行文件的处理方法的流程图;

图7是本发明实施例的另一种生成规则集Class类的方法流程图;

图8是本发明实施例的另一种执行规则集Class类中的方法流程图;

图9是本发明实施例的一种决策引擎中规则运行文件的处理装置的结构框图;

图10是本发明实施例的第一文件生成模块的结构框图;

图11是本发明实施例的第一读取编译模块的结构框图;

图12是本发明实施例的第一获取执行模块的结构框图;

图13是本发明实施例的另一种决策引擎中规则运行文件的处理装置的结构框图;

图14是本发明实施例的第二读取编译模块的结构框图;

图15是本发明实施例的第二获取执行模块的结构框图;

图16是本发明实施例的一种计算机设备的功能框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1是本发明实施例的一种决策引擎中规则运行文件的处理方法的流程图,如图1所示,其包括如下步骤:

步骤S1:将同一个规则集以不同的版本号多次发布部署后生成多个规则运行文件。

具体地,本实施例中,通过在配置文件中设置参数shuffle.multiVersion(规则集多版本)为true(真)后,同一个规则集以不同的版本号多次发布部署后,可以生成多个规则运行文件。另外,如果在配置文件中设置参数shuffle.multiVersion(规则集多版本)为false(假)后,即使同一个规则集多次发布部署后,也只生成一个规则运行文件,也就是说如果在配置文件中设置参数shuffle.multiVersion(规则集多版本)为false(假)后,即使发布部署是按照不同版本号来发布部署,也只能生成一个规则运行文件。因此本实施例可以根据实际需要灵活设置,一个规则运行文件对应一个规则集,一个规则集对应一个Java类文件,Java类名为规则集的id。

步骤S2:读取多个规则运行文件,并且解析、编译以及类加载多个规则运行文件,生成多个规则集Class类。

具体的,通过Java I/O输入/输出流依次读取多个规则运行文件,并解析所述规则运行文件的规则内容,将规则内容的伪代码解析为规则集Java语言代码,之后再把规则集Java语言代码通过Java编译器编译成Class二进制文件,把Class二进制文件利用Java类加载机制加载到JVM(Java虚拟机)内存中生成规则集Class类。

本实施例中,规则集Class类是指规则运行文件(一种xml格式的文件)解析为Java语言的源代码后,通过编译以及类加载机制加载到JVM(Java虚拟机)内存中生成的Class类,称作规则集Class类。

步骤S3:获取多个规则集Class类,执行规则集Class类中的规则方法,获得规则方法的输出值。

具体的,从JVM(Java虚拟机)内存中,获取多个规则集Class类,然后执行则集Class类中的规则方法,获得规则方法的输出值。其中,规则方法是指规则运行文件编译生成规则集Class类后,原规则运行文件中的一个规则对应规则集Class类中的一个方法,此方法称作规则集Class类中的规则方法。

步骤S4:将规则方法的输出值赋值给用户自定义的输出参数变量,获得输出参数变量的值。

本发明实施例通过配置规则集多版本,将同一个规则集,通过设置版本号(例如设置为时间戳),来生成多个规则运行文件,从而达到同一个规则不同版本中按照不同的规则方法的执行的计算所得到的值赋值给用户自定义的输出参数变量,就可以获得用户自定义的输出参数变量的值(即规则计算结果为输出参数变量的值)为不同的场景,另外,本实施例中,之所以将规则方法得输出值进一步转化成用户自定义的输出参数变量的值,是为了便于用户通过输出参数变量的名称就可以理解这个规则方法的输出值的含义,比如用户定义了一个中文名称输出参数变量。

图2是本发明实施例的一种生成多个规则运行文件的方法流程图,如图2所示,在一些实施例中,步骤S1可以包括:

步骤S11:在决策引擎定义端的配置文件中为同一个规则集配置不同的版本号;

步骤S12:对同一个规则集以不同的版本号多次发布部署后,生成多个规则运行文件,每个规则运行文件的文件名称以规则集id和版本号命名。其中,版本号可以为时间戳,每个规则运行文件的文件名称以规则集id加时间戳来命名。

本发明实施例中,可以根据客户业务需要,在业务场景上支持多个版本的规则运行文件同时存在,以满足客户一段时间内,在相同规则集不同版本下、不同的规则的计算结果不同,以便于业务数据规则进行横向的比对分析。

图3是本发明实施例的一种将多个规则运行文件生成规则集Class类的方法流程图,如图3所示,在一些实施例中,步骤S2可以包括:

步骤S21:读取多个规则运行文件;

步骤S22:对每个规则运行文件的规则内容进行语法解析,获得规则内容的伪代码,并将伪代码转化为规则集Java语言代码;

步骤S23:将每个规则运行文件的文件名作为规则集Java类名,编译规则集Java语言代码,生成多个Class二进制文件;

步骤S24:将多个Class二进制文件加载到JVM内存中,生成多个以规则运行文件的文件名命名的规则集Class类。

具体地,通过Java I/O输入/输出流依次循环读取多个规则运行文件,在读取完读取多个规则运行文件之后,对每个规则运行文件的规则内容进行语法解析,将规则内容的伪代码解析为规则集Java语言代码,之后再把规则集Java语言代码通过Java编译器编译成Class二进制文件,即把规则运行文件中的伪代码转换成Java语言可识别的代码,如把“如果...那么...”解析为Java语言中的“If(表达式){...}else{...}”,获得规则内容的伪代码,并将伪代码转化为规则集Java语言代码,通过Java编译器编译多个规则运行文件(文件名为规则集id+时间戳),以规则集id+时间戳来编译不同的规则运行文件,从而生成多个Class二进制文件,再把多个Class二进制文件加载到JVM(Java虚拟机)内存中生成以规则集id+时间戳命名的规则集Class类。

由于在Java语言中,应用程序之所以能运行计算结果,需要由3个阶段:Java语言代码的编译、Class类加载以及运行计算。Java语言代码只有编译、类加载成功后才可以进行计算,程序才能运行。所以在本发明实施例的决策引擎中的规则运行文件要变成Java语言可执行代码,必须要先把规则运行文件解析为Java语言代码,然后经过编译、加载以及运行计算,从而得到规则计算结果。

另外,本发明实施例中,多个规则运行文件将生成多个规则集Class类,由于Java中规定加载到JVM内存中的Class类名不能重复,所以本实施例使用规则集id+时间戳来保证了Class类名的唯一,即Class类名不重复。

图4是本发明实施例的一种获取多个规则集Class类并执行规则集Class类中的方法流程图,如图4所示,在一些实施例中,步骤S3可以包括:

步骤S31:获取规则集Class类,并利用Java反射机制将规则集Class类生成规则集Class类对象;

步骤S32:按照规则集Class类对象执行规则集Class类中的规则方法,获得规则方法的输出值。

具体地,本实施例中,可以通过指定版本号来获取指定版本的规则集Class类对象,通过规则集id+时间戳(即运行文件的文件名)从JVM中获取到指定版本的规则集Class类对象,通过规则集Class对象执行规则集Class类中的规则方法,获得规则方法的输出值。规则集Class类对象是指利用Java反射机制由规则集Class类生成的Java对象,称作规则集Class类对象;另外,在Java语言中,类是对一类事务的抽象出的结果,一个类主要描述的是状态和动作。

图5是本发明实施例的一种Java语言中语法结构的示意图,如图5所示,对象是类(例如[修饰符列表]class类名)的一个具体个体,对象由属性、方法组成。方法是对象的动作,“对象.方法()”称作通过对象执行方法。

本发明实施例通过变换不同的时间戳,可以得到同一个规则集id的对应不同时间戳版本下的规则方法的输出值。将规则方法的输出值赋值给输出参数变量,获得输出参数变量值,即规则计算结果则为输出参数变量的值,从而实现同一个规则集不同版本对应的不同计算结果。

实施例二

图6是本发明实施例的另一种决策引擎中规则运行文件的处理方法的流程图,如图6所示,该方法包括如下步骤:

步骤S1’:在决策引擎定义端的可视化界面设置规则集的规则优先级字段值之后,通过发布部署生成规则运行文件,规则优先级字段值存储在规则运行文件中。

具体地,通过决策引擎定义端的可视化界面设置规则集的“规则优先级”字段值之后,通过发布部署功能,生成规则运行文件,“规则优先级”字段值就存储在规则运行文件中,即规则运行文件中包含名称为“规则优先级”的字段,该规则运行文件中包含多个规则。

步骤S2’:读取规则运行文件,并且解析、编译以及类加载该规则运行文件,生成规则集Class类。

具体的,通过Java I/O输入/输出流读取多个规则运行文件,并解析所述规则运行文件的规则内容,将把规则内容的伪代码解析为规则集Java语言代码,之后再把规则集Java语言代码通过Java编译器编译成Class二进制文件,把Class二进制文件加载到JVM(Java虚拟机)内存中生成规则集Class类。

步骤S3’:获取规则集Class类,并按照规则优先级字段值,依次执行规则集Class类中的规则方法,依次获得多个规则方法的输出值。

具体的,在JVM(Java虚拟机)内存中获取规则集Class类,并按照名称为“规则优先级”字段的值依次执行规则集Class类中的每一个规则方法,规则方法的输出值依次存储到Java集合数组中,即多个规则方法的多个输出值,用结合数组存储。

步骤S4’:将Java集合数组的值赋值给用户自定义的输出参数变量数组,获得参数变量数组的值。

本发明实施例中,对于同一个规则集无需指定执行的具体规则,而是按照“规则优先级”字段的值,对规则集内的所有规则方法全部都进行执行,然后返回同一个规则集内不同的规则方法对应的多个输出值,即每一个规则方法对应一个输出值,多个规则方法会输出多个输出值,多个规则方法的输出值会存储到Java集合数组中,最后Java集合数组的值赋值给输出参数变量数组,获得输出参数变量数组的值,即规则计算结果则为输出参数变量数组的值。另外,本实施例中,之所以将多个规则方法得输出值进一步转化成用户自定义的输出参数变量数组的值,是为了便于用户通过输出参数变量数组的名称就可以理解多个规则方法的输出值的含义,比如用户定义了一个中文名称输出参数变量数组。

图7是本发明实施例的另一种生成规则集Class类的方法流程图,如图7所示,步骤S2’可以包括:

步骤S21’:读取规则运行文件;

步骤S22’:对规则运行文件的规则内容进行语法解析,获得规则内容的伪代码,并把伪代码转化为规则集Java语言代码;

步骤S23’:将规则集Java语言代码编译成Class二进制文件;

步骤S24’:将Class二进制文件加载到JVM内存中生成规则集Class类。

具体地,在读取完读取规则运行文件之后,对读取规则运行文件的规则内容进行语法解析,获得规则内容的伪代码,并将伪代码转化为规则集Java语言代码,通过Java编译器编译读取的规则运行文件,将规则运行文件生成Class二进制文件,再把Class二进制文件加载到JVM(Java虚拟机)内存中会生成规则集Class类。

由于在Java语言中,应用程序之所以能运行计算结果,需要由3个阶段:Java语言代码的编译、Class类加载以及运行计算。Java语言代码只有编译、类加载成功后才可以进行计算,程序才能运行。所以在本发明实施例的决策引擎中的规则运行文件要变成Java语言可执行代码,必须要先把规则运行文件解析为Java语言代码,然后经过编译、加载以及运行计算,从而得到规则计算结果。

图8是本发明实施例的另一种执行规则集Class类中的方法流程图,如图8所示,步骤S3’可以包括:

步骤S31’:获取规则集Class类,并利用Java反射机制将规则集Class类生成规则集Class类对象;

步骤S32’:按照规则集Class类对象的规则优先级字段值的升序排序的方式依次执行规则集Class类中的规则方法,获得规则方法的输出值。

具体地,本步骤是获取规则集Class类,并利用Java反射机制将规则集Class类生成规则集Class类对象,按照规则集Class对象的规则集“规则优先级”字段的值,按照升序的排序,依次调用同一个规则集内的每一个规则方法,即每一个规则方法对应一个输出值,多个规则方法会输出多个输出值,多个规则方法的输出值会存储到Java集合数组中,最后Java集合数组的值赋值给输出参数变量数组,规则计算结果则为输出参数变量数组的值。

本发明实施例中,对于同一个规则集无需指定调用的具体规则,而是按照“规则集优先级”字段的值,是对规则集内的所有规则方法全部都进行调用,然后返回同一个规则集内的多个规则方法的输出值。

本发明实施例提供的一种决策引擎中规则运行文件的处理方法,通过将决策引擎中规则运行文件解析为Java代码后,进行规则计算,决策引擎既可以支持在规则集多版本的场景下进行规则计算,决策引擎也可以支持在按规则优先级的场景下进行规则计算。

实施例三

图9是本发明实施例的一种决策引擎中规则运行文件的处理装置的结构框图,如图9所示,该计算装置100包括:

第一文件生成模块10,用于将同一个规则集以不同的版本号多次发布部署后生成多个规则运行文件;

第一读取编译模20,用于读取多个规则运行文件,并且编译多个规则运行文件,生成多个规则集Class类对象;

第一获取执行模块30,用于获取多个规则集Class类对象,执行规则集Class类中的规则方法,获得规则方法的输出值;

第一赋值返回模块40,用于将规则方法的输出值赋值给用户自定义的输出参数变量,获得输出参数变量的值。

图10是本发明实施例的第一文件生成模块的结构框图,如图10所示,在一些实施例中,第一文件生成模块10包括:

第一配置子模块101,用于在决策引擎定义端的配置文件中为同一个规则集配置不同的版本号;

第一发布部署子模块102,用于对同一个规则集以不同的版本号多次发布部署后,生成多个规则运行文件,每个规则运行文件的文件名称包括规则集id和版本号。

图11是本发明实施例的第一读取编译模块的结构框图,如图11所示,第一读取编译模块20包括:

第一读取子模块201,用于读取多个规则运行文件;

第一解析子模块202,用于对每个规则运行文件的规则内容进行语法解析,获得规则内容的伪代码,并将伪代码转化为规则集Java语言代码;

第一编译子模块203,用于按照每个规则运行文件的文件名作为规则集Java类名,编译规则集Java语言代码,生成多个Class二进制文件;

第一加载生成子模204,用于将多个Class二进制文件加载到JVM内存中生成多个以规则运行文件的文件名命名的规则集Class类。

图12是本发明实施例的第一获取执行模块的结构框图,如图12所示,第一获取执行模块30包括:

第一获取与生成子模块301,用于获取规则集Class类,并利用Java反射机制将规则集Class类生成规则集Class类对象;

第一执行子模块302,按照规则集Class类对象执行规则集Class类中的规则方法,获得规则方法的输出值。

实施例四

图13是本发明实施例的另一种决策引擎中规则运行文件的处理装置的结构框图,如图13所示,该处理装置100’包括:

第二文件生成模块10’,用于在决策引擎定义端的可视化界面设置规则集的规则优先级字段值之后,通过发布部署生成规则运行文件,规则优先级字段值存储在规则运行文件中;

第二读取编译模块20’,用于取规则运行文件,并且解析、编译以及类加载规则运行文件,生成规则集Class类;

第二获取执行模块30’,用于获取规则集Class类,并按照规则优先级字段值依次执行规则集Class类中的规则方法,依次获得多个规则方法的输出值;

第二赋值返回模块40’,用于将规则方法的输出值赋值给用于自定义的输出参数变量数组,获得输出参数变量数组的值。

图14是本发明实施例的第二读取编译模块的结构框图,如图14所示,该第二读取编译模块20’,包括:

第二读取子模块201’,用于读取规则运行文件;

第二解析子模块202’,用于对规则运行文件的规则内容进行语法解析,获得规则内容的伪代码,并把伪代码转化为规则集Java语言代码;

第二编译子模块203’,用于将规则集Java语言代码编译成多个Class二进制文件;

第二加载生成子模块204’,用于将Class二进制文件加载到JVM内存中生成规则集Class类。

图15是本发明实施例的第二获取执行模块的结构框图,如图15所示,该第二获取执行模块30’包括:

第二获取与生成子模块301’,用于获取规则集Class类,并利用Java反射机制将规则集Class类生成规则集Class类对象;

第二执行子模块302’,按照规则集Class类对象的规则优先级字段值的升序排序的方式依次执行规则集Class类中的规则方法,获得规则方法的输出值组。

本发明实施例提供的一种决策引擎中规则运行文件的编译计算装置,通过将决策引擎中规则运行文件解析为Java代码后,进行规则计算,决策引擎既可以支持在规则集多版本的场景下进行规则计算,决策引擎也可以支持在按规则优先级的场景下进行规则计算。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

实施例五

本发明实施例还提供了一种机器可读存储介质,其上存储有程序,该程序被处理器执行时实现上述一种决策引擎中规则运行文件的处理方法。

本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现上述的一种决策引擎中规则运行文件的处理方法。

本申请实施例还提供了一种计算机设备,该计算机设备包括:一个或多个处理器、存储介质和通信总线,存储介质存储有处理器可执行的机器可读指令,当计算机设备运行时,处理器与存储介质之间通过通信总线通信,处理器执行机器可读指令,以执行或实现如前述任一实施方式所述方法的各步骤。

图16是本发明实施例的一种计算机设备的功能框图,如图16所示,该计算机设备包括:通过系统总线连接的处理器A01、网络接口A02、显示屏A04、输入装置A05和存储器(图中未示出)。其中,该计算机设备的处理器A01用于提供计算和控制能力。该计算机设备的存储器包括内存储器A03和非易失性存储介质A06。该非易失性存储介质A06存储有操作系统B01和计算机程序B02。该内存储器A03为非易失性存储介质A06中的操作系统B01和计算机程序B02的运行提供环境。该计算机设备的网络接口A02用于与外部的终端通过网络连接通信。该计算机程序被处理器A01执行时以实现上述决策引擎中规则运行文件的处理方法。该计算机设备的显示屏A04可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置A05可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号