一种规则校验方法及装置与流程

文档序号:17860173发布日期:2019-06-11 22:48阅读:153来源:国知局
一种规则校验方法及装置与流程

本发明的实施例涉及通信技术领域,尤其涉及一种规则校验方法及装置。



背景技术:

随着联通集中业务支撑系统(centralbusinesssupportsystem,cbss)日益成为全集团产品、业务的承载主体,省分bss业务也逐步迁转,用户数量逐渐增多,互联网和消费者业务(tointernettocustomer,2i2c业务)蓬勃发展,2i产品是否能够转成非2i产品、两类2i产品是否能够互转等业务规则校验逐渐增多,现有框架中采用执行结构化查询语言(structuredquerylanguage,sql)语句来校验的方式难以满足新时代互联网化多并发,快速响应的需求,迫切需要推陈出新,打破现有在数据库中查询用户信息,编写sql语句进行规则校验的传统模式,采用新思路新技术,实现业务规则的配置简单化,校验高效化,敏捷开发,快速迭代。在此基础上,我们开发了规则校验引擎,用以实现高效灵活快速的规则匹配、校验、发布。

目前,cbss支撑系统受理业务流程为:输入用户号码进行查询,调用规则校验程序,校验用户是否能受理选择的业务,如校验通过,用户进行业务办理(如选择产品,增加服务等),选择完成后点击提交按钮,再次进行规则校验,校验是否选择的产品服务等是否满足要求,如满足要求,跳转到收费页面进行收费。现系统规则是以sql语句的形式存储在甲骨文公司(oracle)数据库中。当规则校验程序调用时,根据用户的号码信息和业务场景,全量查询出数据库中存储的该业务场景所有规则,并逐条执行sql语句,调用数据库进行查询。业务场景中所有sql语句全部执行完成,认为校验通过,可继续进行业务受理。对一些常用的表,每条sql语句执行时都会对该表进行查询,随着业务场景的逐渐增多,对同一张表的查询次数逐渐增多,造成了oracle数据库的性能降低,特定表的数据库消耗时间(database-time,db_time)居高不下,严重影响了系统性能以及规则校验响应时长。



技术实现要素:

本发明的实施例提供一种规则校验方法及装置,能够降低规则校验响应时长,提高系统性能。

第一方面,提供一种规则校验方法,包括:获取触点报文,将所述触点报文转换为预定格式;将所述预定格式的报文转换根据预定的模板转换为规则模型数据,其中,所述规则模型数据满足预定规则引擎的匹配要求;将所述规则模型数据存储至第一远程数据服务redis内存数据库;根据所述规则模型数据的业务场景从第二redis内存数据库调用至少一个规则引擎;通过所述规则引擎在第三redis内存数据库中读取规则对所述规则模型数据进行校验,并生成校验结果。上述方案中,由于对触电报文首先进行了格式转化,并根据预定的模板转换为规则模型数据;对于规则模型数据具体以redis内存数据库方式存储,在进行校验时,根据业务场景从redis内存数据库调用规则引擎,并使用规则引擎从redis内存数据库读取规则对规则模型数据进行校验,相比于现有技术,将规则和程序代码解耦,即将规则从“硬代码”分离,同时不再配置sql语句来执行规则,这样,规则引擎可以一次性处理所有规则的校验,精简了系统消耗,缩短了校验时长;能够降低规则校验响应时长,提高系统性能。

第二方面,提供一种规则校验装置,包括:获取模块,用于获取触点报文,将所述触点报文转换为预定格式;处理模块,用于将所述预定格式的报文转换根据预定的模板转换为规则模型数据,其中,所述规则模型数据满足预定规则引擎的匹配要求;所述处理模块还用于将所述规则模型数据存储至第一远程数据服务redis内存数据库;调用模块,用于根据所述处理模块转换的所述规则模型数据的业务场景从第二redis内存数据库调用至少一个规则引擎;所述调用模块,还用于通过所述规则引擎在第三redis内存数据库中读取规则对所述规则模型数据进行校验,并生成校验结果。

第三方面,提供一种规则校验装置,包括通信接口、处理器、存储器、总线;所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述规则校验装置运行时,所述处理器执行所述存储器存储的计算机执行指令,以使所述规则校验装置执行如上述的规则校验方法。

第四方面,提供一种计算机存储介质,包括指令,当所述指令在计算机上运行时,使得所述计算机执行如上述的规则校验方法。

第五方面,提供一种计算机程序产品,所述计算机程序产品包括指令代码,所述指令代码用于执行如上述的规则校验方法。

可以理解地,上述提供的任一种规则校验装置、计算机存储介质或计算机程序产品均用于执行上文所提供的第一方面对应的方法,因此,其所能达到的有益效果可参考上文第一方面的方法以及下文具体实施方式中对应的方案的有益效果,此处不再赘述。

附图说明

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

图1为本发明的实施例提供的系统架构的示意图;

图2为本发明的实施例提供的一种规则校验方法的流程示意图;

图3为本发明的实施例提供的一种规则校验装置的结构示意图;

图4为本发明的另一实施例提供的一种规则校验装置的结构示意图。

具体实施方式

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

首先对本申请的实施例应用的技术术语说明如下:

redis:全称:remotedictionaryserver,远程字典服务或远程数据服务。redis是一个开源的使用ansic(由美国国家标准协会(ansi)及国际标准化组织(iso)推出的关于c语言的标准)语言编写、支持网络、可基于内存亦可持久化的日志型、key-value(键-值)数据库,并提供多种语言的api(applicationprogramminginterface,应用程序编程接口)。redis是一个key-value存储系统。和memcached(高性能的分布式内存对象缓存系统)类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sortedset--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop(压入操作/弹出操作)、add/remove(添加/移除)及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

drools:也叫jbossrules。具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。

rete算法,提供了一个通用的逻辑,负责数据匹配功能的实现描述的元组对“事实”,制作“规则的模式匹配”生产系统(规则引擎)。

docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

微服务架构,是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说api应该是重点。微服务可以在“自己的程序”中运行,并通过“轻量级设备与超文本传输协议(hypertexttransferprotocol,http)型api进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个api)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。

分布式技术,一种基于网络的计算机处理技术,与集中式相对应。由于个人计算机的性能得到极大的提高及其使用的普及,使处理能力分布到网络上的所有计算机成为可能。分布式计算是和集中式计算相对立的概念,分布式计算的数据可以分布在很大区域。

目前,cbss支撑系统受理业务流程为:输入用户号码进行查询,调用规则校验程序,校验用户是否能受理选择的业务,如校验通过,用户进行业务办理(如选择产品,增加服务等),选择完成后点击提交按钮,再次进行规则校验,校验是否选择的产品服务等是否满足要求,如满足要求,跳转到收费页面进行收费。现系统规则是以sql语句的形式存储在甲骨文公司(oracle)数据库中。当规则校验程序调用时,根据用户的号码信息和业务场景,全量查询出数据库中存储的该业务场景所有规则,并逐条执行sql语句,调用数据库进行查询。业务场景中所有sql语句全部执行完成,认为校验通过,可继续进行业务受理。对一些常用的表,每条sql语句执行时都会对该表进行查询,随着业务场景的逐渐增多,对同一张表的查询次数逐渐增多,造成了oracle数据库的性能降低,特定表的数据库消耗时间(database-time,db_time)居高不下,严重影响了系统性能以及规则校验响应时长。

为解决上述问题,本申请的实施例提供一种规则校验方法,应用于如图1所示的系统架构,其中包括规则校验装置11,该装置可以为终端、服务器等,数据库服务器12,其中该数据库服务器可以存储有一个或多个redis内存数据库,如图1所示,db1、db2以及db3。其中redis内存数据库可以存储待校验报文的触点(例如,规则校验装置11或者规则校验装置11上运行的软件程序)发送的待校验的报文,在下述方案中均称为触点报文。另外,redis内存数据库可以存储至少一个规则引擎,并且规则引擎按业务场景进行归类,当需要进行规则校验时,根据业务场景,可以调用对应的规则引擎。同一业务场景规则关联在不同规则引擎,这样可以根据业务场景实现对规则引擎的统一调度,并且通过增加规则引擎方式,可实现系统业务规则校验能力的无限扩容。在本发明中。规则引擎采可以用drools的java开源引擎,并基于rete算法,保证规则线性增长时,运行时间不会线性增长。此外,redis内存数据库可以存储具体的规则,即规则文件内容。利用redis存取数据速度快的特点,将规则文件内容存到redis中,规则引擎可以实现随时读取。以redis建立规则库,统一管理规则,可以实现规则快速变更,减少重新启动引擎加载规则带来的风险。规则引擎根据业务场景从redis读取规则,并根据本次规则发布情况,加载规则和待校验的数据,实现规则校验。

基于上述的系统架构,参照图2所示,本申请的实施例提供的规则校验方法,包括如下步骤:

101、获取触点报文,将触点报文转换为预定格式。

在该步骤中,主要实现将触点报文转换为预定格式,从而在获得的触电报文为不同格式的报文时,统一整合为统一的格式。示例性的,触点报文可以为现有通信系统中不同触点的需要校验的任意数据报文,其可以为可扩展标记语言(extensiblemarkuplanguage,xml)文件形式,例如:可以是对用户身份校验的报文,如包含用户标识(可以为用户账号、电话号码、用户名称等)的报文;可以是对用户选择业务校验的报文,如包含用户选定业务的报文,或者可以是同时包含多种校验需求的报文。

102、将预定格式的报文转换根据预定的模板转换为规则模型数据,其中,规则模型数据满足预定规则引擎的匹配要求。

为实现后续通过规则对触点报文的校验,在该步骤中可以将预定格式的报文,按照规则制定的预定的模板,对预定格式的报文进行数据转换。为提高数据转换的准确性,在该过程中,若将预定格式的报文转换根据预定的模板转换为规则模型数据后,还包括:

s1、解析规则模型数据确定规则模型数据的业务场景。

s2、根据业务场景确定规则模型数据是否符合规则匹配的要求。

s3、若确定规则模型数据不符合规则匹配的要求,则对规则模型数据进行补齐。

具体的在步骤s2中可以解析该业务场景下所有规则需要使用的数据,判断继规则模型数据是否满足规则匹配的要求。当不满足时,调用数据适配服务,去对应数据中心补齐数据。

103、将规则模型数据存储至第一远程数据服务redis内存数据库。

104、根据规则模型数据的业务场景从第二redis内存数据库调用至少一个规则引擎。

105、通过规则引擎在第三redis内存数据库中读取规则对规则模型数据进行校验,并生成校验结果。

基于上述图1提供的系统架构,第一redis内存数据库、第二redis内存数据库以及第三redis内存数据库可以为同一个数据库或者分别设置的独立数据库。规则校验装置11可以在任一存储有该规则引擎对应规则的redis内存数据库读取规则。当然,当其它数据中心内部有用于校验的规则时,例如在区别于数据库服务器12的其他数据库服务器上具有用于校验的规则时,可以通过规则引擎的数据适配服务,调其它数据中心提供的子服务接口,取其它中心的规则校验结果。

另外,执行完步骤105之后,还可以根据校验结果,确定校验是否完成,若确定校验未完成时,则继续根据规则模型数据的业务场景从redis内存数据库调用至少一个规则引擎,迭代执行上述步骤105。直至完成校验。最后将校验结果反馈至触点。

经验证,将上述方案应用于支撑系统的业务受理流程时,规则校验部分耗时由2-3秒缩短到300-400ms。充分保证了规则校验的高效、准确、响应迅速的系统要求。

上述方案中,由于对触电报文首先进行了格式转化,并根据预定的模板转换为规则模型数据;对于规则模型数据具体以redis内存数据库方式存储,在进行校验时,根据业务场景从redis内存数据库调用规则引擎,并使用规则引擎从redis内存数据库读取规则对规则模型数据进行校验,相比于现有技术,将规则和程序代码解耦,即将规则从“硬代码”分离,同时不再配置sql语句来执行规则,这样,规则引擎可以一次性处理所有规则的校验,精简了系统消耗,缩短了校验时长。能够降低规则校验响应时长,提高系统性能。此外,由于规则分布式存储于redis内存数据库,校验时,可以通过与业务场景关联的规则引擎读取,实现了灵活修改及灵活拼装规则,实现了规则的快速配置。此外,如步骤101中所述,本申请提供的方案可以适应不同格式的触电报文,因此能够兼容多样性的触点,现有技术新增触点都需要修改代码来调用规则校验逻辑。本申请中,通过步骤101设计了统一数据格式,并能够通过获取配置在xml文件中的不同触点,将不同格式的触点报文转换成统一的规则模型数据,进行规则校验。

参照图3所示,提供一种规则校验装置,包括:

获取模块31,用于获取触点报文,将所述触点报文转换为预定格式;

处理模块32,用于将所述预定格式的报文转换根据预定的模板转换为规则模型数据,其中,所述规则模型数据满足预定规则引擎的匹配要求;

所述处理模块32还用于将所述规则模型数据存储至第一远程数据服务redis内存数据库;

调用模块33,用于根据所述处理模块32转换的所述规则模型数据的业务场景从第二redis内存数据库调用至少一个规则引擎;

所述调用模块33,还用于通过所述规则引擎在第三redis内存数据库中读取规则对所述规则模型数据进行校验,并生成校验结果。

可选的,所述处理模块32还用于解析所述规则模型数据确定所述规则模型数据的业务场景;根据所述业务场景确定所述规则模型数据是否符合规则匹配的要求;若确定所述规则模型数据不符合规则匹配的要求,则对所述规则模型数据进行补齐。

可选的,所述调用模块33,还用于所述处理模块32根据所述调用模块生成的所述校验结果确定校验未完成时,根据所述规则模型数据的业务场景从所述redis内存数据库调用至少一个规则引擎。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,其作用在此不再赘述。

在采用集成的模块的情况下,规则校验装置包括:存储单元、处理单元以及接口单元。处理单元用于对规则校验装置的动作进行控制管理,例如,处理单元用于支持规则校验装置执行图2中的过程102-105;接口单元用于支持规则校验装置与其他设备的信息交互,例如,执行图2中的过程101。存储单元,用于存储规则校验装置的程序代码和数据。

其中,以处理单元为处理器,存储单元为存储器,接口单元为通信接口为例。其中,规则校验装置参照图4中所示,包括通信接口401、处理器402、存储器403和总线404,通信接口401、处理器402通过总线404与存储器403相连。

处理器402可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本申请方案程序执行的集成电路。

存储器503可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。

其中,存储器403用于存储执行本申请方案的应用程序代码,并由处理器402来控制执行。通讯接口401用于与其他设备进行信息交互,例如支持规则校验装置执行步骤101。处理器402用于执行存储器403中存储的应用程序代码,从而实现本申请实施例中规则校验装置执行的方法,例如步骤102-105。

此外,还提供一种计算存储媒体(或介质),包括在被执行时进行上述实施例中的规则校验装置执行的方法操作的指令。另外,还提供一种计算机程序产品,包括上述计算存储媒体(或介质)。

其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,其作用在此不再赘述。

应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文全称:read-onlymemory,英文简称:rom)、随机存取存储器(英文全称:randomaccessmemory,英文简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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