CN109783107B - 一种可视化的规则生成方法、装置及电子设备 - Google Patents
一种可视化的规则生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109783107B CN109783107B CN201910023537.2A CN201910023537A CN109783107B CN 109783107 B CN109783107 B CN 109783107B CN 201910023537 A CN201910023537 A CN 201910023537A CN 109783107 B CN109783107 B CN 109783107B
- Authority
- CN
- China
- Prior art keywords
- rule
- memory
- version number
- redis
- stored
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种可视化的规则生成方法、装置及电子设备,通过可视化界面接收规则的配置;对所述规则的配置进行解析以获得规则解析结果;根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。本发明通过可视化的界面对规则进行编写,效率高,便于操作和理解,且对操作人员的技术要求较低,且规则的编写和规则的解析完全独立、解耦,便于规则的维护和管理。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种可视化的规则生成方法、装置及电子设备。
背景技术
现有的规则编辑,通常需要操作人员通过脚本语言对规则进行编写,对操作人员的技术要求非常高,例如现有的Drools规则引擎,以如下方式实现:Drools是由Java语言编写的基于RATE算法的规则引擎实现,支持用脚本语言来编写规则,以drl文件(数据文件)存储和管理规则。现有的规则编辑的缺点主要有:(1)通过脚本语言编写规则入门门槛高,普通的运营和产品人员无法配置规则;(2)随着业务量增长,大量的规则drl文件难于维护和管理。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种可视化的规则生成方法、装置及电子设备,用于解决现有技术中只能用脚本语言编写规则而造成的规则编写程序复杂、效率低且对操作人员技术要求高等的问题。
为实现上述目的及其他相关目的,本发明提供一种可视化的规则生成方法,包括:通过可视化界面接收规则的配置;对所述规则的配置进行解析以获得规则解析结果;根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。
于本发明一具体实施例中,所述对所述规则的配置进行解析以获得规则解析结果的步骤还包括:将所述规则的配置解析为java源代码,且将解析为java源代码的规则的配置编译为能供Java虚拟机运行的class字节码。
于本发明一具体实施例中,所述内存中包括spring容器和规则注册表,所述根据所述规则解析结果将所述规则加载到内存中的步骤还包括:将与所述规则解析结果对应的bean名称存放于所述规则注册表,将与所述bean名称对应的规则实例存储于所述spring容器中;其中,所述class字节码存储于所述spring容器中。
于本发明一具体实施例中,还包括根据规则运行请求对所发布的规则进行运行的步骤。
于本发明一具体实施例中,所述对所发布的所述规则进行运行的步骤还包括:通过所述规则注册表获取待运行的规则的bean名称,根据该bean名称从所述spring容器中获取对应的规则实例以进行所述待运行的规则的运行。
于本发明一具体实施例中,还包括对所述内存中存储的规则进行回收的步骤。
于本发明一具体实施例中,在所述规则注册表中将待回收规则标记为待回收状态,以在进行规则回收时,对规则注册表中标记有所述待回收状态的规则进行回收。
于本发明一具体实施例中,还包括在所述规则注册表中标注规则的内存版本号的步骤。
于本发明一具体实施例中,还包括将发布的最新版本的规则存储于redis且将所发布的所有所述规则存储于DB中,所述根据规则运行请求对所发布的所述规则进行运行的步骤还包括:判断所述规则运行请求中是否包括请求版本号,若所述规则运行请求中包括所述请求版本号,则从所述内存中获取与所述请求版本号对应的规则进行运行;若所述规则运行请求中不包括所述请求版本号,且判断所述redis可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述redis中存储的与所述待运行的规则对应的redis版本号进行比对,当两者规则版本不同时,根据redis中存储的redis版本号的所述待运行的规则和所述redis版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
于本发明一具体实施例中,若所述规则运行请求中不包括所述请求版本号,且判断所述redis不可用且DB可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述DB中存储的与所述待运行的规则对应的最新的DB版本号进行比对,当两者规则版本不同时,根据DB中存储的最新的DB版本号的所述待运行的规则和所述最新的DB版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
于本发明一具体实施例中,若所述规则运行请求中不包括所述请求版本号,且判断所述redis和DB均不可用时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
于本发明一具体实施例中,以预设的心跳周期对所述redis和所述DB的状态进行检测以判断所述redis和所述DB是否可用。
为实现上述目的及其他相关目的,本发明还提供一种可视化的规则生成装置,包括:配置模块,用以通过可视化界面接收规则的配置;解析模块,用以对所述规则的配置进行解析以获得规则解析结果;加载发布模块,用以根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。
为实现上述目的及其他相关目的,本发明还提供一种电子设备,包括:处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行如上任一项所述的可视化的规则生成方法。
如上所述,本发明的可视化的规则生成方法、装置及电子设备,通过可视化界面接收规则的配置;对所述规则的配置进行解析以获得规则解析结果;根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。本发明通过可视化的界面对规则进行编写,效率高,便于操作和理解,且对操作人员的技术要求较低,且规则的编写和规则的解析完全独立、解耦,便于规则的维护和管理。
附图说明
图1显示为本发明的可视化的规则生成方法在一具体实施例中的流程示意图。
图2显示为本发明的可视化的规则生成方法在一具体实施例中的界面示意图。
图3显示为本发明的一具体实施例中应用的规则解析流程示意图。
图4显示为本发明的规则生成方法在一具体实施例中的应用示意图。
图5显示为本发明的规则生成方法在一具体实施例中的应用示意图。
图6显示为本发明的可视化的规则生成装置在一具体实施例中的组成示意图。
图7显示为本发明的电子设备在一具体实施例中的组成示意图。
元件标号说明
10 可视化的规则生成装置
11 配置模块
12 解析模块
13 加载发布模块
20 电子设备
21 处理器
22 存储器
S11~S13 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
请参阅图1,显示为本发明的可视化的规则生成方法在一具体实施例中的流程示意图。所述可视化的规则生成方法可应用于具有显示屏的电子设备中,所述方法包括:
S11:通过可视化界面接收规则的配置;在一些实施例中,可以在所述显示屏上显示规则配置接口,且根据该规则配置接口进行规则的可视化编辑,所述规则的可视化编辑例如包括规则的文字内容的编辑、逻辑关系的编辑以及规则内执行步骤的触发条件的编辑等,参阅图2,显示为本发明的可视化的规则生成方法在一具体实施例中的界面示意图。图2通过连线和对框的中文字内容等的编辑,编辑形成了简单的规则,即年龄大于18岁的成员即显示为成年人。在一些实施例中,所述显示屏可以为触摸显示屏。
S12:对所述规则的配置进行解析以获得规则解析结果;
S13:根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。
在具体应用中,可通过规则后台服务实现所述通过可视化界面接收规则的配置以及规则发布等的步骤,且通过规则引擎服务实现所述规则解析以及规则加载和后续的运行等的步骤。
在一些实施例中,所述对所述规则的配置进行解析以获得规则解析结果的步骤还包括:将所述规则的配置解析为java源代码,且将解析为java源代码的规则的配置编译为能供Java虚拟机运行的class字节码。其中,在可视化界面中编辑的规则,会被解析为xml格式的文件,且该解析步骤,则将该xml格式的文件解析为java源代码,且将解析为java源代码的规则的配置编译为能供Java虚拟机运行的class字节码。其中,规则xml解析成java源代码,其满足groovy语法,groovy是支持JVM(java虚拟机)的动态语言,其语法跟java相近,能跟java语言无缝对接,groovy的优势是支持动态编译,在服务运行期间动态的编译groovy对象,规则java源代码通过groovy类加载器编译成JVM能够运行的class字节码。
参阅图3,图3显示为本发明的一具体实施例中应用的规则解析流程示意图。图3中,通过规则后台服务在可视化页面画规则流程图后,将可视化流程图生成xml格式的文件,将该xml格式的文件发送至所述规则引擎服务中,且通过xerces解析xml格式的文件,其中,xerces是一个开放源代码的xml语法分析器,且根据解析为xml格式的文件,拼接规则判断代码字符串,且模板替换关键字,以生成java类,且将规则java类编译成class字节码。
参阅图4,图4显示为本发明的规则生成方法在一具体实施例中的应用示意图。图4中显示了所述规则后台服务和所述规则引擎服务的运行内容以及数据交互方式。所述规则后台服务和所述规则引擎服务可部署于多个网络节点上,各节点间的规则后台服务和所述规则引擎服务通过service mesh进行负载均衡,其中,Service Mesh是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,Service Mesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。所述规则后台服务通过http接口与网络交互,且规则后台服务和所述规则引擎服务之间通过http接口进行交互。其中,所述规则管理服务主要用于规则管理、规则组权限管理、规则流程图管理以及维度变量管理等。所述规则引擎服务主要用于规则运行、规则Java编译、规则xml编译、规则标记、规则Class实例管理、规则注册表管理、规则回收、规则下线以及规则测试等。
且所述规则管理服务和所述规则引擎服务在运行过程中的所有数据均存储于所述DB(数据库)中。且将已经运行过和当前运行的规则均加载于所述内存中,且将最新版本的规则存储于redis中以便于对所有节点的规则进行更新。其中,redis为缓存工具,有过期时间,性能比DB更优,所以通常在设计上会在DB的上面加一层redis,防止穿透到DB,以防大量的数据访问刷爆数据库(DB)。DB具体为关系型数据库,默认是持久化存储方案。本发明通过DB来存储所有的数据,包括规则。DB已经是最底层的存储,可以理解为永远存储的都是最新的数据。内存无法持久化存储,重启服务,内存的数据就被销毁了,而DB是持久化工具,所以将数据都存储到DB当中,则内存中的数据销毁时,可以从DB中加载所需要的数据。而内存操作性能要优于DB操作,所以,每次第一次运行规则的时候,就将规则加载到内存,在之后的运行操作都是在内存中运行,以减少DB操作,提升运行性能。即本发明将规则加载到内存中进行运行,而不需要每次从数据库中进行提取,有效提高规则运行的效率。
且本发明在规则运行之前就通过JVM的类加载机制将规则java转换成字节码,即将编译这一性能消耗很大的步骤在规则运行之前完成,而不用在每次运行某一规则时再次启动对该规则的编译,更加有效的提升规则的运行效率。
在一些实施例中,所述内存中包括spring容器和规则注册表,所述根据所述规则解析结果将所述规则加载到内存中的步骤还包括:将与所述规则解析结果对应的bean名称存放于所述规则注册表,将与所述bean名称对应的规则实例存储于所述spring容器中;其中,所述class字节码存储于所述spring容器中。其中,所述规则引擎服务包括对规则的发布、运行和回收。
即所述可视化的规则生成方法,还包括根据规则运行请求对所发布的规则进行运行的步骤。
在一些实施例中,所述对所发布的所述规则进行运行的步骤还包括:通过所述规则注册表获取待运行的规则的bean名称,根据该bean名称从所述spring容器中获取对应的规则实例以进行所述待运行的规则的运行。
所述可视化的规则生成方法还包括通过JVM(java虚拟机)中的GC(GarbageCollection,垃圾回收)对所述内存中存储的规则进行回收的步骤,具体包括:在所述规则注册表中将待回收规则标记为待回收状态,以在进行规则回收时,对规则注册表中标记有所述待回收状态的规则进行回收。
在一些实施例中,还包括在所述规则注册表中标注规则的内存版本号的步骤。本发明的所述规则生成方法还用以通过所述规则引擎服务提供规则多版本的控制方案,一个规则存在多个版本,支持多个版本同时运行,版本与版本之间互相独立,互不干扰。历史版本不允许修改,同样是在内存中管理,由注册表来标记历史版本号。
本发明还包括根据规则运行请求运行规则的步骤。具体的,将发布的最新版本的规则存储于redis且将所发布的所有所述规则存储于DB中,所述根据规则运行请求对所发布的所述规则进行运行的步骤还包括:
判断所述规则运行请求是否包括请求版本号,若所述规则运行请求中包括所述请求版本号,则从所述内存中获取与所述请求版本号对应的规则进行运行;所述请求版本号一般是已经在内存中运行过的历史版本号。
若所述规则运行请求中不包括所述请求版本号,则默认以内存中、redis中以及DB中的最新版本的规则进行运行,且判断所述redis可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述redis中存储的与所述待运行的规则对应的redis版本号进行比对;
当两者规则版本不同时,根据redis中存储的redis版本号的所述待运行的规则和所述redis版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;
当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
若所述规则运行请求中不包括所述请求版本号,且判断所述redis不可用且DB可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述DB中存储的与所述待运行的规则对应的最新的DB版本号进行比对;
当两者规则版本不同时,根据DB中存储的最新的DB版本号的所述待运行的规则和所述最新的DB版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;
当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
若所述规则运行请求中不包括所述请求版本号,且判断所述redis和DB均不可用时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
例如,可通过调度器判断当前采用内存、DB或redis中的规则进行运行。
本发明还包括以预设的心跳周期对所述redis和所述DB的状态进行检测以判断所述redis和所述DB是否可用。
具体的,操作人员根据对可视化界面中指定的规则运行的接口进行选择,以运行指定的规则,且获取当前版本比对级别,判断redis可用时,根据redis存储的规则版本与当前内存中的版本进行比对,当两者版本不同时,根据redis中的版本进行运行,当两者版本相同时,根据内存中的版本进行运行;当redis不可用,DB可用时,根据DB存储的规则版本与当前内存中的版本进行比对,当两者版本不同时,根据DB中的版本进行运行,当两者版本相同时,根据内存中的版本进行运行;当redis和DB均不可用时,根据当前内存中的版本进行运行。且通过对redis和DB进行心跳检查,将心跳检查的结果及时发送至调度器中,调度器根据关于redis和DB的心跳检查结果,判断当前根据redis进行版本比对,还是降级至DB进行版本比对或者降级至内存中的版本直接运行,调度器还可根据关于redis和DB的心跳检查结果,判断根据内存中的版本直接运行,还是升级至DB进行版本比对以后运行,或者是升级至redis进行版本比对以后运行。
该服务降级或升级方案,保证规则运行接口不对外部资源强依赖,使得redis或DB发生问题时,不会影响到规则运行接口的正常使用。
下面例举一个实例对规则的运行进行说明:
1.当前运行的规则A,版本是V1。
2.规则A运行,首先会到Redis获取最新版本。发现与内存中版本一致,继续运行V1版本的规则A(也有可能redis查询不到版本,因为没有发生规则变更,这时同样运行当前版本)。
3.规则后台服务更新规则A,并发布规则A,此时规则版本升级到V2。发布过程中,会将最新的规则A更新到数据库(DB),同时也会将最新规则和版本号存储到redis,并设置过期时间。
4.运行规则A,到redis获取最新版本,此时获取到的版本是V2,发现版本升级了,将规则更新为V2版本,并运行最新的规则。假如直到redis缓存过期了,规则A都没有被运行,此时调度器会在redis过期时间内将规则升级为V2版本,所以不存在更新不到的情况。
如图5,显示为本发明的规则生成方法在一具体实施例中的应用示意图。图中Actor即操作人员,从图5可以看出,在所述规则后台服务中创建规则、可视化编辑规则且将编辑的规则解析为xml文件,将该xml文件发送至规则引擎服务的xml解析器中进行解析,解析为java源代码,并将java源代码发送至groovy解析器,以生成class字节码,根据该class字节码进行规则的注册,且形成规则实例存储于spring上下文容器中。规则后台服务对生成的规则进行测试后进行发布,且根据规则引擎服务对规则进行运行。
其中,spring是java的开源框架,spring的一个特点之一是对类实例生命周期的管理,默认都是单例的(一个类,只初始化一个实例)。这一特性正是规则类所需要的。所以,规则实例化后,我们将规则实例的引用交给spring容器,由spring容器管理。而spring的生命周期是跟着整个服务进程的消亡而停止的。
本发明的可视化的规则生成方法,通过可视化界面接收规则的配置;对所述规则的配置进行解析以获得规则解析结果;根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。本发明通过可视化的界面对规则进行编写,效率高,便于操作和理解,且对操作人员的技术要求较低,且规则的编写和规则的解析完全独立、解耦,便于规则的维护和管理。
参阅图6,图6显示为本发明的可视化的规则生成装置在一具体实施例中的组成示意图。所述可视化的规则生成装置10包括:配置模块11、解析模块12以及加载发布模块13。
所述配置模块11用以通过可视化界面接收规则的配置。
所述解析模块12用以对所述规则的配置进行解析以获得规则解析结果;在一些实施例中,所述解析模块12还用以将所述规则的配置解析为java源代码,且将解析为java源代码的规则的配置编译为能供Java虚拟机运行的class字节码。
所述加载发布模块13用以根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。
所述内存中包括spring容器和规则注册表,所述加载发布模块13还用以将与所述规则解析结果对应的bean名称存放于所述规则注册表,将与所述bean名称对应的规则实例存储于所述spring容器中;其中,所述class字节码存储于所述spring容器中。
在一些实施例中,所述可视化的规则生成装置10还包括运行模块,用以根据规则运行请求对所发布的规则进行运行。具体例如为,通过所述规则注册表获取待运行的规则的bean名称,根据该bean名称从所述spring容器中获取对应的规则实例以进行所述待运行的规则的运行。
在一些实施例中,所述可视化的规则生成装置10还包括回收模块,用以对所述内存中存储的规则进行回收,具体例如为在所述规则注册表中将待回收规则标记为待回收状态,以在进行规则回收时,对规则注册表中标记有所述待回收状态的规则进行回收。
所述加载发布模块13还用以在所述规则注册表中标注规则的内存版本号,且将发布的最新版本的规则存储于redis且将所发布的所有所述规则存储于DB中,所述运行模块用以判断所述规则运行请求中是否包括请求版本号,若所述规则运行请求中包括所述请求版本号,则从所述内存中获取与所述请求版本号对应的规则进行运行;
若所述规则运行请求中不包括所述请求版本号,且判断所述redis可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述redis中存储的与所述待运行的规则对应的redis版本号进行比对,当两者规则版本不同时,根据redis中存储的redis版本号的所述待运行的规则和所述redis版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
若所述规则运行请求中不包括所述请求版本号,且判断所述redis不可用且DB可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述DB中存储的与所述待运行的规则对应的最新的DB版本号进行比对,当两者规则版本不同时,根据DB中存储的最新的DB版本号的所述待运行的规则和所述最新的DB版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
若所述规则运行请求中不包括所述请求版本号,且判断所述redis和DB均不可用时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
所述运行模块还用以以预设的心跳周期对所述redis和所述DB的状态进行检测以判断所述redis和所述DB是否可用。
所述可视化的规则生成装置10为与所述可视化的规则生成方法对应的装置项,两者技术方案对应,所有关于所述可视化的规则生成方法的描述均可应用于本实施例中,在此不加赘述。
参阅图7,显示为本发明的电子设备在一具体实施例中的组成示意图。所述电子设备20例如为运行所述可视化的规则生成方法的计算机或服务器,所述电子设备20包括处理器21和存储器22,所述存储器22用于存储计算机程序,所述处理器21用于执行所述存储器22存储的计算机程序,以使所述电子设备20执行可视化的规则生成方法,所述可视化的规则生成方法参阅图1及关于图1的相关描述。
所述存储器22可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器22还可以包括远离一个或多个处理器21的存储器22,例如经由RF电路或外部端口以及通信网络访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。存储器控制器可控制设备的诸如CPU和外设接口之类的其他组件对存储器22的访问。
所述处理器21可操作地与存储器22和/或非易失性存储设备耦接。更具体地,处理器21可执行在存储器22和/或非易失性存储设备中存储的指令以在计算设备中执行操作,诸如生成图像数据和/或将图像数据传输到电子显示器。如此,处理器21可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。
综上所述,本发明的可视化的规则生成方法、装置及电子设备,通过可视化界面接收规则的配置;对所述规则的配置进行解析以获得规则解析结果;根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布。本发明通过可视化的界面对规则进行编写,效率高,便于操作和理解,且对操作人员的技术要求较低,且规则的编写和规则的解析完全独立、解耦,便于规则的维护和管理。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (9)
1.一种可视化的规则生成方法,其特征在于,包括:
通过可视化界面接收规则的配置;
对所述规则的配置进行解析以获得规则解析结果;
根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布;
根据规则运行请求对所发布的规则进行运行;
将发布的最新版本的规则存储于redis且将所发布的所有所述规则存储于DB中;
其中,所述对所述规则的配置进行解析以获得规则解析结果的步骤还包括:将所述规则的配置解析为java源代码,且将解析为java源代码的规则的配置编译为能供Java虚拟机运行的class字节码;
所述内存中包括spring容器和规则注册表,所述根据所述规则解析结果将所述规则加载到内存中的步骤还包括:将与所述规则解析结果对应的bean名称存放于所述规则注册表,将与所述bean名称对应的规则实例存储于所述spring容器中,在所述规则注册表中标注规则的内存版本号;其中,所述class字节码存储于所述spring容器中;
所述根据规则运行请求对所发布的所述规则进行运行的步骤还包括:判断所述规则运行请求中是否包括请求版本号,若所述规则运行请求中包括所述请求版本号,则从所述内存中获取与所述请求版本号对应的规则进行运行;若所述规则运行请求中不包括所述请求版本号,且判断所述redis可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述redis中存储的与所述待运行的规则对应的redis版本号进行比对,当两者规则版本不同时,根据redis中存储的redis版本号的所述待运行的规则和所述redis版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
2.根据权利要求1所述的可视化的规则生成方法,其特征在于,所述对所发布的所述规则进行运行的步骤还包括:通过所述规则注册表获取待运行的规则的bean名称,根据该bean名称从所述spring容器中获取对应的规则实例以进行所述待运行的规则的运行。
3.根据权利要求1所述的可视化的规则生成方法,其特征在于,还包括对所述内存中存储的规则进行回收的步骤。
4.根据权利要求3所述的可视化的规则生成方法,其特征在于,在所述规则注册表中将待回收规则标记为待回收状态,以在进行规则回收时,对规则注册表中标记有所述待回收状态的规则进行回收。
5.根据权利要求1所述的可视化的规则生成方法,其特征在于,若所述规则运行请求中不包括所述请求版本号,且判断所述redis不可用且DB可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述DB中存储的与所述待运行的规则对应的最新的DB版本号进行比对,
当两者规则版本不同时,根据DB中存储的最新的DB版本号的所述待运行的规则和所述最新的DB版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;
当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
6.根据权利要求1所述的可视化的规则生成方法,其特征在于,若所述规则运行请求中不包括所述请求版本号,且判断所述redis和DB均不可用时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
7.根据权利要求1所述的可视化的规则生成方法,其特征在于,以预设的心跳周期对所述redis和所述DB的状态进行检测以判断所述redis和所述DB是否可用。
8.一种可视化的规则生成装置,其特征在于,包括:
配置模块,用以通过可视化界面接收规则的配置;
解析模块,用以对所述规则的配置进行解析以获得规则解析结果;
加载发布模块,用以根据所述规则解析结果将所述规则加载到内存中并将加载于所述内存中的规则进行发布;
所述可视化的规则生成装置还用以执行以下过程:根据规则运行请求对所发布的规则进行运行;将发布的最新版本的规则存储于redis且将所发布的所有所述规则存储于DB中;
其中,所述对所述规则的配置进行解析以获得规则解析结果的过程还包括:将所述规则的配置解析为java源代码,且将解析为java源代码的规则的配置编译为能供Java虚拟机运行的class字节码;
所述内存中包括spring容器和规则注册表,所述根据所述规则解析结果将所述规则加载到内存中的过程还包括:将与所述规则解析结果对应的bean名称存放于所述规则注册表,将与所述bean名称对应的规则实例存储于所述spring容器中,在所述规则注册表中标注规则的内存版本号;其中,所述class字节码存储于所述spring容器中;
所述根据规则运行请求对所发布的所述规则进行运行的过程还包括:判断所述规则运行请求中是否包括请求版本号,若所述规则运行请求中包括所述请求版本号,则从所述内存中获取与所述请求版本号对应的规则进行运行;若所述规则运行请求中不包括所述请求版本号,且判断所述redis可用时,将所述内存中存储的与待运行的规则对应的内存版本号与所述redis中存储的与所述待运行的规则对应的redis版本号进行比对,当两者规则版本不同时,根据redis中存储的redis版本号的所述待运行的规则和所述redis版本号对所述内存中存储的所述待运行的规则和所述内存版本号进行更新,且根据所述内存中更新后的待运行的规则进行规则的运行;当两者规则版本相同时,直接根据所述内存中存储的所述待运行的规则进行规则的运行。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行如权利要求1至7中任一项所述的可视化的规则生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910023537.2A CN109783107B (zh) | 2019-01-10 | 2019-01-10 | 一种可视化的规则生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910023537.2A CN109783107B (zh) | 2019-01-10 | 2019-01-10 | 一种可视化的规则生成方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783107A CN109783107A (zh) | 2019-05-21 |
CN109783107B true CN109783107B (zh) | 2022-05-24 |
Family
ID=66500350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910023537.2A Active CN109783107B (zh) | 2019-01-10 | 2019-01-10 | 一种可视化的规则生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783107B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110941420A (zh) * | 2019-11-22 | 2020-03-31 | 绿漫科技有限公司 | 一种基于Actor模型的规则引擎***及其方法 |
CN111427789B (zh) * | 2020-03-26 | 2022-08-16 | 平安医疗健康管理股份有限公司 | 自动验证规则的方法、装置、计算机设备和存储介质 |
CN111782262B (zh) * | 2020-06-30 | 2024-05-14 | 深圳赛安特技术服务有限公司 | 数据动态发布方法、装置、***、设备及存储介质 |
CN112488855B (zh) * | 2020-11-23 | 2024-02-13 | 中国人寿保险股份有限公司 | 一种基于规则模板的业务校验方法及设备 |
CN113885961B (zh) * | 2021-10-09 | 2024-07-26 | 上海得帆信息技术有限公司 | 一种aPaaS平台的公式规则可视化实现的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104715001A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于对数据处理***的集群中的共享资源执行写入操作的方法和*** |
CN107315611A (zh) * | 2017-06-26 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种应用***规则管理方法及装置 |
CN107632842A (zh) * | 2017-09-26 | 2018-01-26 | 携程旅游信息技术(上海)有限公司 | 规则配置和发布方法、***、设备及存储介质 |
-
2019
- 2019-01-10 CN CN201910023537.2A patent/CN109783107B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104715001A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于对数据处理***的集群中的共享资源执行写入操作的方法和*** |
CN107315611A (zh) * | 2017-06-26 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种应用***规则管理方法及装置 |
CN107632842A (zh) * | 2017-09-26 | 2018-01-26 | 携程旅游信息技术(上海)有限公司 | 规则配置和发布方法、***、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
Spring框架在模型层的应用及原理;温立辉;《福建电脑》;20170525(第5期);第147-148页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109783107A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783107B (zh) | 一种可视化的规则生成方法、装置及电子设备 | |
US9904522B2 (en) | Web development system | |
US10114630B2 (en) | Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine | |
US8875306B2 (en) | Customization restrictions for multi-layer XML customization | |
US8966465B2 (en) | Customization creation and update for multi-layer XML customization | |
US11429365B2 (en) | Systems and methods for automated retrofitting of customized code objects | |
US8538998B2 (en) | Caching and memory optimizations for multi-layer XML customization | |
US8788542B2 (en) | Customization syntax for multi-layer XML customization | |
US20110296391A1 (en) | Systems and Methods for Dynamically Replacing Code Objects Via Conditional Pattern Templates | |
US20090204884A1 (en) | Multi-layer xml customization | |
CN104679500B (zh) | 实体类自动生成实现方法及装置 | |
US8438557B2 (en) | Reusing an application object | |
US11294791B2 (en) | Code optimization for connected managed runtime environments | |
CN116301951B (zh) | 一种基于kubernetes的微服务应用安装升级方法及装置 | |
CN115599386A (zh) | 代码生成方法、装置、设备及存储介质 | |
CN110162299A (zh) | web程序及其快速开发框架、开发方法与相关设备 | |
CN117009240A (zh) | 代码分析方法、***、装置、电子设备及存储介质 | |
CN110968339A (zh) | 前端构建工具的方法、装置以及电子设备 | |
CN113031964B (zh) | 一种大数据应用的管理方法、装置、设备及存储介质 | |
CN115129348A (zh) | 应用程序的资源更新方法、装置、设备及可读存储介质 | |
CN113791809A (zh) | 应用异常处理方法、装置以及计算机可读存储介质 | |
KR20040050463A (ko) | 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법 | |
US20240160412A1 (en) | Non-intrusive build time injection tool for accelerating launching of cloud applications | |
US20220414101A1 (en) | Shifting left database degradation detection | |
CN113626423A (zh) | 业务数据库的日志管理方法、装置、*** |
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 |