一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种规则解析方法及规则解析器与流程

2022-03-23 02:21:04 来源:中国专利 TAG:


1.本技术实施例涉及金融科技(fintech)领域,尤其涉及一种规则解析方法及规则解析器。


背景技术:

2.随着计算机技术的发展,越来越多的技术(例如:云计算、大数据或区块链)应用在金融领域,传统金融业正在逐步向金融科技转变。在金融科技的大环境下,不断衍生出各种业务系统,如决策系统、智能营销系统。其中,在用户对业务系统进行使用期间,业务系统通过监测用户的信息是否满足自己设置的一些规则,当在满足时,业务系统方才能更好地对用户信息进行把握,从而为用户带去较佳的业务体验感。
3.目前而言,各业务系统分别具有一个规则引擎。对于任一个业务系统,技术人员预先在规则引擎中定义好该业务系统对自己所要求数据的一些规范,即规则;其中规则是以声明式的方式记载在业务代码中的。此外,目前的规则引擎仅能根据正则表达式对字符型的数据进行校验。
4.对于上文描述的业务系统的规则引擎,具有以下缺点:
5.1、随着业务系统的不同,需要技术人员手动配置一个全新的规则引擎,也即当前的规则引擎并不具有普适性;此外,当需要对处于使用状态的规则引擎中的规则进行更新时,则要求技术人员暂停对业务系统的使用并重新修改业务代码,以对新的规则进行定义,显然并不便于对业务系统的正常使用。
6.2、由于目前仅能对字符型的数据进行校验,而无法扩展到对其他更多种类的数据的校验,因此目前的规则引擎对数据校验的设置并不够完善。
7.综上,目前亟需一种普适性高、连贯性强、同时对数据能进行更全面校验的规则引擎,以对数据作出合理、高效判断的方案。


技术实现要素:

8.本技术提供一种规则解析方法及规则解析器,用以在无需将规则以声明式的方式写在业务代码的条件下而对进入各个业务系统的各种类型的数据进行合规性校验。
9.第一方面,本技术实施例提供一种规则解析方法,该方法包括:规则解析器对前端接收到的基于用户触发的网页请求进行变量提取;所述规则解析器若确定提取到第一待校验变量,则从规则库中匹配出与所述第一待校验变量同名的目标规则,且获取所述第一待校验变量在所述网页请求中的第一待校验数据;所述规则库是对设定的各待校验变量进行配置得到的,所述规则库中包括多个规则,任一规则包括待校验变量和对所述待校验变量的变量值进行定义的合规语法规范;所述规则解析器基于所述目标规则对所述第一待校验数据进行校验。
10.对于使用javascript语言编写的应用程序而言,使用解析器进行语法解析是其常规操作。基于此,本技术实施例中通过预先在规则库中配置好各种规则,任一规则包括待校
验变量和对待校验变量的变量值进行定义的合规语法规范,因此当基于用户触发的网页请求进入前端的时候,前端中的规则解析器将可以对网页请求进行解析,包括进行变量提取、确定待校验数据和用于校验待校验数据的目标规则,并使用目标规则对待校验数据进行校验,以确定该网页请求是否合乎应用程序开发的初衷。该方式中通过采用在规则库中配置数据校验的规则,并使用规则解析器进行规则的校验,从而无需因为是不同的业务系统而需要设置相应的规则引擎,因此本方案中由于使用javascript语言进行业务系统的编写,可以使对数据的校验无需因业务系统的不同而需要重复设置新的规则引擎,而且当有规则需要更新的时候,也无需停止业务系统,而只需要在规则库中更新规则即可实现,最后,本技术中对数据的校验也是多样的,而仅只需要定义好对变量的变量值进行校验的合规语法规范即可,而不再仅仅限于对字符型数据的校验了。
11.在一种可能实现的方法中,所述设定的各待校验变量包括基于第一设定样式传输的静态待校验变量和基于第二设定样式传输的动态待校验变量;所述规则解析器对所述前端接收到的基于用户触发的网页请求进行变量提取,包括:所述规则解析器基于第一正则表达和第二正则表达,分别对接收到的基于用户触发的网页请求进行变量提取;所述第一正则表达用于匹配所述网页请求中的基于所述第一设定样式的待校验变量,所述第二正则表达用于匹配所述请求中的基于所述第二设定样式的待校验变量。
12.上述方案中,对于业务系统在使用过程中可能存在的要求用户主动输入一些自己个人信息的场景(即表单填写的场景),其中所要求输入的信息既可以由用户手动进行输入(如填写身份证号),或者也可以由用户手动插入一个用于获取该信息的链接(如在填写个人经历的信息时,如果用户关于该内容已经预先设置过自己个人经历的网页,那么用户在填写个人经历的信息时,则可以直接键入自己个人经历所在网页的链接)。对于用户在某字段下所输入的信息,业务系统需要判断该信息是否合规,也即业务系统需要对用户输入的信息进行校验。本技术实施例中对于关于某字段用户手动输入该字段所要求的信息的场景,该字段在业务系统中可以定义为静态待校验变量,而对于关于某字段用户通过引入相关的链接而作为该字段所要求的信息的场景,该字段在业务系统中可以定义为动态待校验变量,其中,本技术实施例中对于静态待校验变量和动态待校验变量在用户触发网页请求并传输至前端的规则解析器时,二者的表现形式并不相同,其中静态待校验变量可以以第一设定样式进行传输,动态待校验变量可以以第二设定样式进行传输,从而在规则解析器接收到基于用户触发的网页请求时,将可以通过第一正则表达和第二正则表达来对该网页请求进行变量提取,从而在网页请求中含有静态待校验变量时,将可以通过第一正则表达将其匹配出来,而在网页请求中含有动态待校验变量时,将可以通过第二正则表达将其匹配出来,以便于后续基于所匹配出待校验变量而从规则库中匹配出以该待校验变量命名的校验规则,进而使用校验规则来对所匹配出来的待校验变量在网页请求中的待校验数据进行合规性校验。
13.在一种可能实现的方法中,所述第一待校验变量包括第一静态待校验变量;所述规则解析器若确定提取到第一待校验变量,则获取所述第一待校验变量在所述网页请求中的第一待校验数据,包括:所述规则解析器若确定提取到所述第一静态待校验变量,则从业务用数中获取与所述第一静态待校验变量同名的数据,并作为所述第一静态待校验变量在所述网页请求中的第一待校验数据。
14.上述方案中,当规则解析器通过使用第一正则表达而从网页请求中匹配出静态待校验变量(即第一静态待校验变量)后,将可以从业务用数中获取与该静态待校验变量同名的数据,并将所获取的数据作为该静态待校验变量在网页请求中的待校验数据,从而后续规则解析器将可以使用规则库中以该静态待校验变量命名的校验规则中的、对该静态待校验变量的变量值所定义的合规语法规范来对该待校验数据进行校验,以确定网页请求的合规性。
15.在一种可能实现的方法中,所述第一待校验变量包括第一动态待校验变量;所述规则解析器若确定提取到第一待校验变量,则获取所述第一待校验变量在所述网页请求中的第一待校验数据,包括:所述规则解析器若确定提取到所述第一动态待校验变量,则基于所述目标规则从所述网页请求中获取所述第一动态待校验变量指向的地址信息;所述规则解析器基于所述地址信息构建http请求并发送;所述规则解析器将针对所述http请求返回的数据作为所述第一待校验数据。
16.上述方案中,当规则解析器通过使用第二正则表达而从网页请求中匹配出动态待校验变量(即第一动态待校验变量)后,将可以依据目标规则而从网页请求中得到该动态待校验变量指向的地址信息,接着规则解析器将可以基于该地址信息构建http请求并发送,最后规则解析器将可以将针对该http请求而返回的数据作为该动态待校验变量在网页请求中的待校验数据,从而后续规则解析器将可以使用规则库中以该动态待校验变量命名的校验规则中的该动态待校验变量的变量值所作出的合规语法规范来对该待校验数据进行校验,以确定网页请求的合规性。
17.在一种可能实现的方法中,所述规则解析器基于所述目标规则对所述第一待校验数据进行校验,包括:所述规则解析器基于配置的规则执行函数,对所述目标规则进行解析,确定所述第一待校验变量对应的第一合规语法规范;所述规则解析器根据所述第一合规语法规范对所述第一待校验数据进行校验。
18.上述方案中,通过预先配置规则执行函数,如此在规则解析器获取到对第一待校验变量在网页请求中的第一待校验数据进行校验的目标规则时,规则解析器可使用所配置的规则执行函数来对目标规则进行解析,从而可以获取到与第一待校验变量相对应的第一合规语法规范,最后规则解析器将可以根据得到的第一合规语法规范来对第一待校验数据进行校验,以确定网页请求的合规性。
19.在一种可能实现的方法中,所述多个规则包括静态规则和动态规则;所述规则库是对设定的各待校验变量进行配置得到的,包括:针对设定的各待校验变量中的任一待校验变量,若确定所述待校验变量满足所述静态规则,则将所述待校验变量和所述待校验变量具有的方法配置在规则库中;若确定所述待校验变量满足动态规则,则将所述待校验变量和对所述待校验变量对应的待校验数据进行动态获取的方法配置在所述规则库中。
20.上述方案中,描述了规则库的形成过程,也即通过为各个待校验变量配置规则,规则即用于对待校验变量的变量值进行校验的合规语法规范,最后可将对各个待校验变量和相对应的规则所进行的集中管理作为规则库。其中,规则库中包括对满足静态规则的待校验变量所配置的规则,即静态规则,也包括对满足动态规则的待校验变量所配置的规则,即动态规则。具体的,对一满足静态规则的待校验变量,可以将该待校验变量和该待校验变量所具有的方法配置在规则库中,而对于一满足动态规则的待校验变量,可以将该待校验变
量和对该待校验变量对应的待校验数据进行动态获取的方法配置在规则库中。该方式通过使用规则库来对业务系统所需要用到的待校验变量对应的待校验数据进行合规语法规范的配置,那么后续规则解析器将可以基于所配置的规则库而对接收到的请求进行合规性的校验。
21.在一种可能实现的方法中,所述方法还包括:所述规则解析器对外部访问请求进行校验;其中,所述外部访问请求为后端服务器接收到的通过api方式发送的访问请求,所述规则解析器通过将com.eclipsesource.j2v8配置到maven pom.xml中得到。
22.上述方案中,对于一些并非为用户主动发起的网页请求,而是通过api方式进行发送的访问请求,即外部访问请求,当其进入到后端服务器时,由于事先已经将com.eclipsesource.j2v8配置到maven pom.xml中,因此此时后端服务器可通过加载前端的规则解析器,而使得可以基于规则解析器来对外部访问请求进行校验。该方式实现了对跨平台的访问请求的合规性校验。
23.第二方面,本技术实施例提供一种规则解析器,该规则解析器包括:变量提取单元,用于对前端接收到的基于用户触发的网页请求进行变量提取;处理单元,用于若确定提取到第一待校验变量,则从规则库中匹配出与所述第一待校验变量同名的目标规则,且获取所述第一待校验变量在所述网页请求中的第一待校验数据;所述规则库是对设定的各待校验变量进行配置得到的,所述规则库中包括多个规则,任一规则包括待校验变量和对所述待校验变量的变量值进行定义的合规语法规范;校验单元,用于基于所述目标规则对所述第一待校验数据进行校验。
24.第三方面,本技术实施例提供了一种计算设备,包括:
25.存储器,用于存储程序指令;
26.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面任一实现方法。
27.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一实现方法。
附图说明
28.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
29.图1为本技术实施例提供的一种规则解析方法的示意图;
30.图2为本技术实施例提供的一种规则解析器的示意图;
31.图3为本技术实施例提供的一种计算设备的示意图。
具体实施方式
32.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施
例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
33.对于当前投入使用的一些业务系统,常常要求技术人员以声明式的方式将规则记载在业务代码中以形成规则引擎,此外按照如此方式所开发出的规则引擎多数应用于后端场景下的字符型数据的校验。对此,随着业务系统的不同,则要求开发相对应的一个规则引擎,这显然是需要付出很大工作量的,此外由于当前的规则引擎与业务代码强耦合,因此在需要对既有的规则进行更新时,则需要暂停对业务系统的使用,这显然妨碍了业务系统的正常使用,最后当前的规则引擎所能校验的数据不够丰富。
34.针对上述技术问题,本技术实施例提供一种规则解析方法。如图1所示,为本技术实施例提供的一种规则解析方法的示意图,该方法包括以下步骤:
35.步骤101,规则解析器对前端接收到的基于用户触发的网页请求进行变量提取。
36.在本步骤中,对于用户在业务系统上进行的操作,比如对于表单填写的场景,当用户对表单中某一字段进行相关信息的填写时,则业务系统(具体指业务系统中的规则解析器)将可以对用户所填写的信息进行校验,以确定用户填写的信息是否满足业务系统在开发时候、对该字段所能够填写的值而作出的约束、规范。因此,对于该种用户对表单中的字段进行相关信息填写的场景,即为用户触发了一个网页请求,该网页请求在触发后可以由前端的规则解析器所接收到;在规则解析器接收到该网页请求后,将可以对该网页请求进行变量提取。
37.说明的是,本技术实施例中涉及的业务系统是通过javascript语言进行编写、开发而来的;作为一种示例,规则解析器可选用rule-enginer.js,其作为前端的规则解析引擎,将遵循javascript语言的规范。
38.步骤102,所述规则解析器若确定提取到第一待校验变量,则从规则库中匹配出与所述第一待校验变量同名的目标规则,且获取所述第一待校验变量在所述网页请求中的第一待校验数据。
39.其中,所述规则库是对设定的各待校验变量进行配置得到的,所述规则库中包括多个规则,任一规则包括待校验变量和对所述待校验变量的变量值进行定义的合规语法规范。
40.在本步骤中,对于一业务系统,可由技术人员预先配置好该业务系统中哪些数据是需要进行校验的数据,以及哪些数据是不需要进行校验的数据,其中该些需要进行校验的数据即为各待校验变量;针对各待校验变量中的任一待校验变量,技术人员还需进一步配置好用于对该待校验变量的变量值进行校验的合规语法规范。通过这两步的配置工作,关于业务系统中任一个需要被执行校验的数据,均可以形成一个相对应的规则,然后基于一个个的规则,将可以形成规则库。其中,规则库中的任一规则可以使用相应的待校验变量的变量名进行命名,如此后续规则解析器可直接基于待校验变量的变量名而从规则库中匹配出同名的校验规则以进行数据合规性的校验。
41.在规则解析器对网页请求进行变量提取的过程中,可能出现以下两种变量提取的结果:
42.情况1:并未提取到待校验变量。这表示当前的网页请求中并不存在需要被校验的变量。
43.情况2:能够提取到待校验变量。这表示当前的网页请求中存在有需要被校验的变量,其中该需要被校验的变量即为第一待校验变量。对此情况,规则解析器可确认自己需要对所提取出的第一待校验变量进行校验;为了实现对第一待校验变量的校验,规则解析器将可以从规则库中匹配出与该第一待校验变量同名的校验规则,同时还需要获取到该第一待校验变量在当前的网页请求中的待校验数据,其中该校验规则即目标规则,该待校验数据即第一待校验数据。
44.步骤103,所述规则解析器基于所述目标规则对所述第一待校验数据进行校验。
45.在本步骤中,在规则解析器确认可以从网页请求中提取到待校验变量,即第一待校验变量时,并从规则库中匹配出与第一待校验变量同名的目标规则以及获取到第一待校验变量在网页请求中的第一待校验数据后,规则解析器将可以基于所匹配出的目标规则来对第一待校验数据进行校验,以确定第一待校验数据的合规性。
46.对于使用javascript语言编写的应用程序而言,使用解析器进行语法解析是其常规操作。基于此,本技术实施例中通过预先在规则库中配置好各种规则,任一规则包括待校验变量和对待校验变量的变量值进行定义的合规语法规范,因此当基于用户触发的网页请求进入前端的时候,前端中的规则解析器将可以对网页请求进行解析,包括进行变量提取、确定待校验数据和用于校验待校验数据的目标规则,并使用目标规则对待校验数据进行校验,以确定该网页请求是否合乎应用程序开发的初衷。该方式中通过采用在规则库中配置数据校验的规则,并使用规则解析器进行规则的校验,从而无需因为是不同的业务系统而需要设置相应的规则引擎,因此本方案中由于使用javascript语言进行业务系统的编写,可以使对数据的校验无需因业务系统的不同而需要重复设置新的规则引擎,而且当有规则需要更新的时候,也无需停止业务系统,而只需要在规则库中更新规则即可实现,最后,本技术中对数据的校验也是多样的,而仅只需要定义好对变量的变量值进行校验的合规语法规范即可,而不再仅仅限于对字符型数据的校验了。
47.以下将结合示例分别对上述一些步骤进行详细说明。
48.在上述步骤102的一个实施中,所述多个规则包括静态规则和动态规则;所述规则库是对设定的各待校验变量进行配置得到的,包括:针对设定的各待校验变量中的任一待校验变量,若确定所述待校验变量满足所述静态规则,则将所述待校验变量和所述待校验变量具有的方法配置在规则库中;若确定所述待校验变量满足动态规则,则将所述待校验变量和对所述待校验变量对应的待校验数据进行动态获取的方法配置在所述规则库中。
49.在本技术的某些实施中,所述设定的各待校验变量包括基于第一设定样式传输的静态待校验变量和基于第二设定样式传输的动态待校验变量。
50.例如,对于业务系统在使用过程中可能存在的要求用户主动输入一些自己个人信息的场景,即表单填写的场景,其中所要求输入的信息既可以由用户手动进行输入,如用户需要对个人姓名、身份证号等内容进行填写,或者也可以由用户手动插入一个用于获取该信息的链接,如用户在填写个人经历的信息时,如果用户关于该内容已经预先设置过自己个人经历的网页,那么用户在填写个人经历的信息时,则可以直接键入自己个人经历所在网页的链接。
51.对于以上描述的两种信息填写的场景,其中假设身份证号这一字段和个人经历这一字段是技术人员预先配置好的需要进行数据合规性校验的两个待校验变量,则对于身份
证号这一待校验变量,本技术实施例中可以认为其符合静态规则,也即该待校验变量为静态待校验变量,因此需要将该待校验变量和该待校验变量所具有的方法配置成一条规则,进一步的,多条规则可以构成一组规则。
52.比如,静态待校验变量可定义为[%key%],其中key为变量在业务用数中定义的字段名,key在业务用数的类型决定了它拥有哪些方法,如数组型的变量可以使用include方法,字符型的变量可以使用replace方法等。
[0053]
规范实例如下:
[0054]
[%key1%].include([%key2%])&&([%key3%]==="1")
[0055]
应用实例如下:
[0056]
例如,假设业务系统需要识别用户录入的“数据类型”与“敏感信息”是否匹配,则:
[0057]
校验规则可配置为:[%dataclass%]=="details"&&[%sensitivelevel%]=="3"
[0058]
规则校验提示为:明细数据绝大数情况下会包含一级/二级敏感信息,请检查“数据类型”或“敏感信息”的填写是否正确。
[0059]
对于个人经历这一待校验变量,本技术实施例中可以认为其符合动态规则,也即该待校验变量为动态待校验变量,因此需要将该待校验变量以及和对该待校验变量对应的待校验数据进行动态获取的方法配置成一条规则。
[0060]
例如,区别于静态规则,本技术实施例中对动态待校验变量的定义方式并不同于对静态待校验变量的定义方式,其中动态待校验变量可定义为{{key}},其中key为变量在业务用数中定义的字段名;此外,还需要定义该种模式下如何动态获取到规则校验所需要的数据,即在实际的应用中满足动态信息校验的场景。在对动态变量信息的获取方式进行定义时,包括定义变量名和变量值获取方式。例如:
[0061]
httprequesturl::method=httprequesturlmethos?param1=value1&param2=value1
[0062]
其中,httprequesturl,表示动态获取数据的http请求地址;method,表示动态获取数据的http请求方法,通常有get、post、put等方法;param1,param2,表示http请求的参数,支持多个;value1、value2,表示http请求对应参数的值,支持多个。
[0063]
应用实例:
[0064]
例如,在对营销产品进行风险识别时,其校验规则可配置为:
[0065]
([%usagescene%]=='11')&&(([%marketingproduct%].sort().tostring()==[%products%].sort().tostring())||([%products%].length》0&&[%products%].every(i=》['产品1','产品2','产品3','产品4'].includes(i))&&[%marketingproduct%].length》0&&[%marketingproduct%].every(i=》['产品1','产品2','产品3','产品4'].includes(i))))&&('{{selfmsgproducts}}'!=”)
[0066]
selfmsgproducts:getselfmsgproducts::method=post?scope=1
[0067]
在上述步骤101的一个实施中,所述规则解析器对所述前端接收到的基于用户触发的网页请求进行变量提取,包括:所述规则解析器基于第一正则表达和第二正则表达,分别对接收到的基于用户触发的网页请求进行变量提取;所述第一正则表达用于匹配所述网页请求中的基于所述第一设定样式的待校验变量,所述第二正则表达用于匹配所述请求中
的基于所述第二设定样式的待校验变量。
[0068]
基于前述的例子,静态待校验变量和动态待校验变量分别定义为[%key%]、{{key}}这两种表现形式,即第一设定样式和第二设定样式,因此规则解析器在接收到一网页请求后可通过正则表达来匹配静态规则的key和动态规则key。
[0069]
例如,本技术实施例中可通过statickeys=rules.match(/(?《=\[%)(.*?)(?=\%])/g)这一正则表达匹配静态规则的key,以及可通过dynamickeys=rules.match(/(?《=\{\{)(.*?)(?=\}\})/g)这一正则表达匹配动态规则的key。其中,statickeys=rules.match(/(?《=\[%)(.*?)(?=\%])/g)这一正则表达即为第一正则表达,dynamickeys=rules.match(/(?《=\{\{)(.*?)(?=\}\})/g)这一正则表达即为第二正则表达。
[0070]
在本技术的某些实施中,所述第一待校验变量包括第一静态待校验变量;所述规则解析器若确定提取到第一待校验变量,则获取所述第一待校验变量在所述网页请求中的第一待校验数据,包括:所述规则解析器若确定提取到所述第一静态待校验变量,则从业务用数中获取与所述第一静态待校验变量同名的数据,并作为所述第一静态待校验变量在所述网页请求中的第一待校验数据。
[0071]
在本技术的某些实施中,所述第一待校验变量包括第一动态待校验变量;所述规则解析器若确定提取到第一待校验变量,则获取所述第一待校验变量在所述网页请求中的第一待校验数据,包括:所述规则解析器若确定提取到所述第一动态待校验变量,则基于所述目标规则从所述网页请求中获取所述第一动态待校验变量指向的地址信息;所述规则解析器基于所述地址信息构建http请求并发送;所述规则解析器将针对所述http请求返回的数据作为所述第一待校验数据。
[0072]
基于前述的例子,在规则解析器基于正则表达而从网页请求中获取到待校验变量时,若所获取的待校验变量为通过第一正则表达匹配出来的,则表示该待校验变量为静态待校验变量;进一步的,还需要获取该静态待校验变量对应的变量值,该变量值即为第一待校验数据。其中,规则解析器可从业务用数中通过key值映射获取statickeys中key所对应的value,并作为需要进行校验的数据。
[0073]
基于前述的例子,在规则解析器基于正则表达而从网页请求中获取到待校验变量时,若所获取的待校验变量为通过第二正则表达匹配出来的,则表示该待校验变量为动态待校验变量;进一步的,还需要获取该动态待校验变量对应的变量值,该变量值即为第一待校验数据。其中,规则解析器可针对dynamickeys,解析
[0074]
httprequesturl::method=httprequesturlmethos?param1=value1&param2=value1,从而获取到动态待校验变量指向的地址信息,接着规则解析器可基于所获取的地址信息构建http请求并发送,从而最终规则解析器可获取动态value,也即规则解析器可以将针对该http请求所返回的数据作为需要进行校验的数据。
[0075]
在上述步骤103的一个实施中,所述规则解析器基于所述目标规则对所述第一待校验数据进行校验,包括:所述规则解析器基于配置的规则执行函数,对所述目标规则进行解析,确定所述第一待校验变量对应的第一合规语法规范;所述规则解析器根据所述第一合规语法规范对所述第一待校验数据进行校验。
[0076]
例如,在规则解析器获取到待校验变量在网页请求中的待校验数据后,规则解析
器可通过key映射将相应的value(即待校验数据)映射到规则中的key中,映射之后的规则如:value1.include(value1)。
[0077]
其中,技术人员还预先定义了如下的规则执行函数:
[0078]
checkrule=rulelogic=》new function('dataobj',`return${rulelogic}`);
[0079]
其中,rulelogic表示预先为待校验变量配置的校验规则,'dataobj'表示待校验变量所对应的待校验数据。
[0080]
最后,规则解析器通过运行规则执行函数checkrule,并返回执行结果布尔值true或false。其中,若布尔值为true,则表示规则解析器确认网页请求中的待校验变量对应的待校验数据是合规的;若布尔值为false,则表示规则解析器确认网页请求的待校验数据对应的待校验数据是不合规的,此时规则解析器可以通过向用户反馈错误提示信息。
[0081]
具体的:首先checkrule源码会被解析器解析成ast(abstract syntax tree,抽象语法树),即把代码结构化成树状结构表示,这样做是为了更好的让编译器或者解释器理解,随着解释器会把ast解析成字节码,字节码是机器码的抽象,可以看作是小型的构建块,这些构建块组合到一起构成任何javascript功能,字节码比机器码占用更小的内存,但字节码不能够直接在处理器上运行,需要通过解释器将其转换为机器码后才能执行。
[0082]
在本技术的某些实施中,所述规则解析器对外部访问请求进行校验;其中,所述外部访问请求为后端服务器接收到的通过api方式发送的访问请求,所述规则解析器通过将com.eclipsesource.j2v8(拓展库)配置到maven pom.xml(项目对象模型)中得到。
[0083]
针对实际用数中,存在大量外部应用通过api的方式,直接向基于java语言开发的本地应用发起请求、进行数据提交的场景,该场景由于是直接通过http请求发起,并不通过网页,也即不会触发用户操作,因此无法触发前端的规则解析器。此时本技术实施例为了实现java应用程序同样可以执行上述规则解析的完整过程,并获得准确的校验结果,设计了如下的运算过程:
[0084]
1、在maven pom.xml中引入com.eclipsesource.j2v8;
[0085]
2、读取rule-enginer.js:readfiletostring("rule-enginer.js");
[0086]
3、获取规则校验方法checkrule:(v8function)v8.getobject("checkrule");
[0087]
4、准备需要校验的数据data:v8object,rules:v8arrary;
[0088]
5、执行规则校验:checkrule.call(null,data,rules),并返回校验结果。
[0089]
其中,该过程中要求java应用程序使用v8引擎作为其在前端的规则解析器。
[0090]
例如,假设业务系统需要识别用户录入的“数据类型”与“敏感信息”是否匹配,则:
[0091]
校验规则可配置为:[%dataclass%]=="details"&&[%sensitivelevel%]=="3"
[0092]
那么,若外部应用a直接通过http的方式向应用b的后台服务器提交数据data:{dataclass:"summary",sensitivelevel:"2"},应用b的后台服务器需要校验所提交数据data为真还是假,此时应用b的后台服务器直接加载应用b在前端的规则解析器,即rule-enginer.js,其中rule-enginer.js对所提交数据进行合规性校验的过程与前文所述的请求处理方法一致,不再赘述。
[0093]
基于同样的构思,本技术实施例提供一种规则解析器,如图2所示,为本技术实施例提供的一种规则解析器的示意图,该规则解析器包括变量提取单元201、处理单元202和
校验单元203;
[0094]
变量提取单元201,用于对前端接收到的基于用户触发的网页请求进行变量提取;
[0095]
处理单元202,用于若确定提取到第一待校验变量,则从规则库中匹配出与所述第一待校验变量同名的目标规则,且获取所述第一待校验变量在所述网页请求中的第一待校验数据;所述规则库是对设定的各待校验变量进行配置得到的,所述规则库中包括多个规则,任一规则包括待校验变量和对所述待校验变量的变量值进行定义的合规语法规范;
[0096]
校验单元203,用于基于所述目标规则对所述第一待校验数据进行校验。
[0097]
进一步的,对于该规则解析器,所述设定的各待校验变量包括基于第一设定样式传输的静态待校验变量和基于第二设定样式传输的动态待校验变量;变量提取单元201,具体用于:基于第一正则表达和第二正则表达,分别对接收到的基于用户触发的网页请求进行变量提取;所述第一正则表达用于匹配所述网页请求中的基于所述第一设定样式的待校验变量,所述第二正则表达用于匹配所述请求中的基于所述第二设定样式的待校验变量。
[0098]
进一步的,对于该规则解析器,所述第一待校验变量包括第一静态待校验变量;处理单元202,具体用于:若确定提取到所述第一静态待校验变量,则从业务用数中获取与所述第一静态待校验变量同名的数据,并作为所述第一静态待校验变量在所述网页请求中的第一待校验数据。
[0099]
进一步的,对于该规则解析器,所述第一待校验变量包括第一动态待校验变量;处理单元202,具体用于:若确定提取到所述第一动态待校验变量,则基于所述目标规则从所述网页请求中获取所述第一动态待校验变量指向的地址信息;基于所述地址信息构建http请求并发送;将针对所述http请求返回的数据作为所述第一待校验数据。
[0100]
进一步的,对于该规则解析器,校验单元203,具体用于:基于配置的规则执行函数,对所述目标规则进行解析,确定所述第一待校验变量对应的第一合规语法规范;根据所述第一合规语法规范对所述第一待校验数据进行校验。
[0101]
进一步的,对于该规则解析器,还包括规则配置单元204;所述多个规则包括静态规则和动态规则;规则配置单元204,用于:针对设定的各待校验变量中的任一待校验变量,若确定所述待校验变量满足所述静态规则,则将所述待校验变量和所述待校验变量具有的方法配置在规则库中;若确定所述待校验变量满足动态规则,则将所述待校验变量和对所述待校验变量对应的待校验数据进行动态获取的方法配置在所述规则库中。
[0102]
进一步的,对于该规则解析器,校验单元203,还用于对外部访问请求进行校验;其中,所述外部访问请求为后端服务器接收到的通过api方式发送的访问请求,所述规则解析器通过将com.eclipsesource.j2v8配置到maven pom.xml中得到。
[0103]
本技术实施例还提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(personal digital assistant,pda)等。该计算设备可以包括中央处理器(center processing unit,cpu)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(liquid crystal display,lcd)、阴极射线管(cathode ray tube,crt)等。
[0104]
存储器,可以包括只读存储器(rom)和随机存取存储器(ram),并向处理器提供存储器中存储的程序指令和数据。在本技术实施例中,存储器可以用于存储规则解析方法的程序指令;
[0105]
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行规则解析方法。
[0106]
如图3所示,为本技术实施例提供的一种计算设备的示意图,该计算设备包括:
[0107]
处理器301、存储器302、收发器303、总线接口304;其中,处理器301、存储器302与收发器303之间通过总线305连接;
[0108]
所述处理器301,用于读取所述存储器302中的程序,执行上述规则解析方法;
[0109]
处理器301可以是中央处理器(central processing unit,简称cpu),网络处理器(network processor,简称np)或者cpu和np的组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称asic),可编程逻辑器件(programmable logic device,简称pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,简称cpld),现场可编程逻辑门阵列(field-programmable gate array,简称fpga),通用阵列逻辑(generic array logic,简称gal)或其任意组合。
[0110]
所述存储器302,用于存储一个或多个可执行程序,可以存储所述处理器301在执行操作时所使用的数据。
[0111]
具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器302可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称ram);存储器302也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称hdd)或固态硬盘(solid-state drive,简称ssd);存储器302还可以包括上述种类的存储器的组合。
[0112]
存储器302存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
[0113]
操作指令:包括各种操作指令,用于实现各种操作。
[0114]
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
[0115]
总线305可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0116]
总线接口304可以为有线通信接入口,无线总线接口或其组合,其中,有线总线接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线总线接口可以为wlan接口。
[0117]
本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行规则解析方法。
[0118]
本领域内的技术人员应明白,本技术的实施例可提供为方法、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0119]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程
图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0120]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0121]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0122]
尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
[0123]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献