CN112667287A - 规则文件的创建方法、装置、设备及计算机可读存储介质 - Google Patents
规则文件的创建方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112667287A CN112667287A CN202011595574.XA CN202011595574A CN112667287A CN 112667287 A CN112667287 A CN 112667287A CN 202011595574 A CN202011595574 A CN 202011595574A CN 112667287 A CN112667287 A CN 112667287A
- Authority
- CN
- China
- Prior art keywords
- file
- rule
- dynamic library
- module
- library
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及金融科技中的数据管理技术领域,公开了一种规则文件的调用方法、装置、设备及计算机可读存储介质,该方法包括:通过规则管理模块获取文件规则,并生成规则文件;通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;通过所述版本库模块对所述动态库进行维护。由此将获得的文件规则解析成源代码文件,并将所述源代码文件编译成动态库,然后由版本库模块对所述动态库进行维护,以供需要对调用方的数据进行处理时可以直接调用所述动态库,提高了调用规则文件的灵活性和便捷性,并节约了能耗。
Description
技术领域
本发明涉及金融科技(Fintech)中的数据管理技术领域,尤其涉及一种规则文件的创建方法、装置、设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(区块链Blockchain、大数据、分布式)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
当前主要通过硬编码或预加载配置文件的方式调用预先配置的规则文件,以根据调出的规则文件处理报文中的相关数据。但是硬编码的方式不够灵活,预加载配置文件的方式需要每次处理数据之前将配置文件解析成源代码文件,使得处理程序繁琐且耗费计算能耗。
发明内容
本发明提供一种规则文件的调用方法、装置、设备及计算机可读存储介质,旨在提高调用规则文件的灵活性和便捷性,并节约能耗。
为实现上述目的,本发明提供一种规则文件的创建方法,所述方法包括:
通过规则管理模块获取文件规则,并生成规则文件;
通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
通过所述版本库模块对所述动态库进行维护。
可选地,所述通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件,包括:
通过所述语法树解析模块将所述规则文件映射成语法树,所述语法树包括声明节点、子声明节点、子表达式节点;
根据预先设定的数据抽象范式依次对所述声明节点、所述子声明节点、所述子表达式节点进行转换,将转换获得的内容保存为源代码文件。
可选地,所述根据预先设定的数据抽象范式依次对所述声明节点、所述子声明节点、所述子表达式节点进行转换,将转换获得的内容保存为源代码文件,之后还包括:
基于所述数据抽象范式中的语言约束规范对所述源代码文件中的代码内容进行检验,以查找出不符合所述语音约束规范的代码内容。
可选地,所述通过所述版本库模块对所述动态库进行维护,包括:
通过所述版本库模块计算所述动态库的第一哈希值,将所述第一哈希值与所述编译引擎计算的第二哈希值进行校对,以判断所述动态库知否被更改;和/或
通过所述版本库模块根据所述动态库的中预先嵌入的版本号进行版本校对,并将所述动态库中的函数与数据抽象范式中设置的预设函数进行对比,以进行版本及函数校对;
若所述动态库未被更改和/或版本及函数校对成功,则保存所述动态库。
可选地,所述通过规则管理模块获取待文件规则,之后还包括:
保存所述文件规则的规则信息,将所述规则信息发送至分布式开源服务集群。
可选地,所述通过所述版本库模块对所述动态库进行维护,之后还包括:
通过执行引擎基于版本号遍历所述分布式开源服务集群,当遍历到新版本动态库时,则将调用函数链接至所述新版本动态库;
将所述新版本动态库中的新函数调用格式转换为预设函数调用格式。
可选地,所述通过所述版本库模块对所述动态库进行维护,之后还包括:
接收到调用方的调用请求时,获取所述调用请求中的目标端口号确定对应的目标动态库;
通过执行引擎调用所述目标动态库中的函数,以根据所述函数对所述调用请求中的数据进行处理,获得处理结果。
此外,为实现上述目的,本发明还提供一种规则文件的装置,所述规则文件的装置包括:
获取模块,用于通过规则管理模块获取文件规则,并生成规则文件;
解析模块,用于通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
编译模块,用于通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
维护模块,用于通过所述版本库模块对所述动态库进行维护。
此外,为实现上述目的,本发明还提供一种规则文件的创建设备,所述规则文件的创建设备包括处理器,存储器以及存储在所述存储器中的规则文件的创建程序,所述规则文件的创建程序被所述处理器运行时,实现如上所述的规则文件的创建方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有规则文件的创建程序,所述规则文件的创建程序被处理器运行时实现如上所述规则文件的创建方法的步骤。
相比现有技术,本发明提供一种规则文件的调用方法、装置、设备及计算机可读存储介质,通过规则管理模块获取文件规则,并生成规则文件;通过语法树解析模块对规则文件进行语法解析,获得所述规则文件的源代码文件;通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;通过版本库模块对所述动态库进行维护。由此将获得的文件规则解析成源代码文件,并将所述源代码文件编译成动态库,然后由版本库模块对所述动态库进行维护,以供需要对调用方的数据进行处理时可以直接调用所述动态库,提高了调用规则文件的灵活性和便捷性,并节约了能耗。
附图说明
图1是本发明各实施例涉及的规则文件的创建设备的硬件结构示意图;
图2是本发明规则文件的创建方法第一实施例的流程示意图;
图3是本发明规则文件的创建方法第一实施例涉及的语法树的示例图;
图4是本发明规则文件的创建方法第一实施例涉及的执行框架的示意图;
图5是本发明规则文件的创建装置第一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例主要涉及的规则文件的创建设备是指能够实现网络连接的网络连接设备,所述规则文件的创建设备可以是服务器、云平台等。
参照图1,图1是本发明各实施例涉及的规则文件的创建设备的硬件结构示意图。本发明实施例中,规则文件的创建设备可以包括处理器1001(例如中央处理器CentralProcessing Unit、CPU),通信总线1002,输入端口1003,输出端口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;输入端口1003用于数据输入;输出端口1004用于数据输出,存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。本领域技术人员可以理解,图1中示出的硬件结构并不构成对本发明的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种可读计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块、应用程序模块以及规则文件的创建程序。在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的规则文件的创建程序,并执行本发明实施例提供的规则文件的创建方法。
本发明实施例提供了一种规则文件的创建方法。
参照图2,图2是本发明规则文件的创建方法第一实施例的流程示意图。
本实施例中,所述规则文件的创建方法应用于规则文件的创建设备,所述方法包括:
步骤S101,通过规则管理模块获取文件规则,并生成规则文件;
所述规则管理模块基于web(网页)服务设置,所述规则管理模块包括可视化的规则编辑界面,以供技术人员在所述规则编辑界面上的编写区域进行输入字段、输出字段以及数据处理过程的的编辑,其中所述输入字段包括输入字段的名称、类型,所述输出字段包括输出字段的名称类型。所述数据处理过程是指对调用方的调用请求进行处理的过程,包括数据类型转换、字符串截取、大小写转换等。其中,所述数据处理过程可以通过编写自定义规则代码实现,也可以通过调用预设的函数。可以理解地,所述数据处理过程可以包括多个子过程,各个子过程可以对应于不同的处理方式,由此可灵活的实现复杂的数据处理过程。
当技术人员在所述规则编辑界面完成规则的编写并确认提交后,所述规则管理模块获取所述文件规则,并为所述文件规则设置ID(identification,身份标识)、处理端口、版本号等规则信息,以生成规则文件。
进一步地,保存所述文件规则的规则信息,将所述规则信息发送至分布式开源服务集群。
本实施例中,保存所述文件规则的ID、处理端口、版本号等规则信息,以供后续作为更新及回滚的依据。
一份完整的文件规则样例如下:
在所述文件规则样例中,x、y是输入字段的名称,z是输出字段的名称,,输入字段与输出字段的类型均为Integer(整数)。其中“Start(开始)”的内容“Json(JavaScriptObject Notation,高级编程语言JS对象简谱))request(请求)”表示对输入数据的声明,“End(结束)”的内容“Json response(响应)”表示对输出字段的声明,“Handler(处理函数)”包含的内容表示对数据字段的处理过程,该样例的处理过程是:将输入字段的x,y的整数字段求乘积z,并将z的的类型global to string(转化为字符串)后作为Stringresult(字符串结果),将结果填充到输出数据中。
本实施例中,所述分布式开源服务集群可以是zookeeper集群。zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。将所述规则信息发送至zookeeper集群后,zookeeper集群为所述规则信息分配znode(节点),并将所述规则信息中的ID以及所述znode标记为该规则信息的path(路径);zookeeper集群中的data(数据)为所述规则文件的版本号。
步骤S102,通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
当获得所述规则文件后,则通过语法树解析模块对所述规则文件进行语法解析,具体地,所述步骤S102包括:
通过所述语法树解析模块将所述规则文件映射成语法树,所述语法树包括声明节点、子声明节点、子表达式节点;
根据预先设定的数据抽象范式依次对所述声明节点、所述子声明节点、所述子表达式节点进行转换,将转换获得的内容保存为源代码文件。
本实施例中,所述语法树解析模块遵守预设的数据抽象范式,其中所述数据抽象范式中规定了输入字段的格式,输出字段的格式,字段类型与对应目标语言类型的映射,预设的函数调用格式、目标语言的语法和目标语言的约束规范等。
通过所述语法树解析模块基于Bison(野牛)解析器将所述规则文件进行语法分析,获得对应的语法树。所述语法树包括声明节点、子声明节点、子表达式节点。
语法树是对某种语法规定下的语言进行推导后生成的结构化模型。语法树可以表示语言中各词语的逻辑关系,同时语法树是源语言向目标语言编译的中间桥梁。
所述Bison解析器首先会将语法树分成Start、End及Handler声明节点。对于各个声明节点,又包含一系列的子声明节点和子表达式节点,子声明节点表示对输入字段、输出字段以及中间变量的命名和类型定义,子表达式节点表示对字段或者中间数据进行赋值、逻辑运算、函数运算等处理。
如图3所示,图3是本发明规则文件的创建方法第一实施例涉及的语法树的示例图。图3中Tree语法树的声明节点包括Start声明、End声明及Handler声明;Start声明的子声明节点包括Json和request。End声明的子声明节点包括Json和response。Handler声明的子声明节点包括=表达式(第一)、global_to_string以及=表达式(第二)。其中=表达式(第一)的子表达式节点包括:Integer申明、*表达式、z、.表达式、request、x、y等。global_to_string的子表达式节点包括:string申明、z、result。=表达式(第二)的子表达式节点包括.表达式、request、response、result。
当创建语法树后,则从所述语法树的根部自顶向下地进行转义可将规则文件的语言翻译成目标语言。本实施例中,所述目标语言可以是C++语言。
翻译过程具体包括:
子声明节点的转换:根据所述数据抽象范式中定义的字段类型和目标语言的类型映射,将所述语法树中的子声明节点的内容转换成目标语言的类型和变量名;
子表达式节点的转换,根据所述数据抽象范式中定义的目标语言的语法,将子表达式节点在的内容转换成目标语言的函数调用形式、逻辑运算形式以及赋值形式;
进一步地,获得所述源代码文件后,对所述源代码文件进行检验,具体包括:
基于所述数据抽象范式中的语言约束规范对所述源代码文件中的代码内容进行检验,以查找出不符合所述语音约束规范的代码内容;逐行对所述源代码文件中的代码内容进行扫描,并基于所述数据抽象范式中的语言约束规范确定每一行代码内容是否符合所述语言约束规范,查找出不符合所述语音约束规范的代码内容。
例如,对于exit(退出)、sleep(休眠)等系统或进程级别的函数要予以禁止,语言约束规范通过正则表达式定义。
在其它实施例中,也可以按所述语言约束规范对所述不符合所述语音约束规范的代码内容进行更正,获得符合所述语音约束规范的代码内容。
按上述过程将所述文件规则样例转换获得的源代码文件样例如下:
对于使用了预设函数的规则文件,其源代码中会包含global_function.h以实现对预设函数的引用。其中,globalfunction(全局函数)中的h是自定义的数据处理规则。
进一步地,还可以在数艘源代码文件中嵌入版本号,以供后续校对。所述源代码文件样例的version版本号是1_0_0。
步骤S103,通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
本实施例中,由所述编译引擎调用目标语言的编译器,通过所述编译器将所述源代码文件编译成动态库。其中,所述编译器可以是GCC、G++,其中GCC是(GNUCompilerCollection,GNU编译器套件)是由GNU开发的编程语言译器,GCC的初衷是为GNU操作系统专门编写的一款编译器,G++是GCC下的一个C++编译器。
当完成编译获得所述动态库后,则将所述动态库推送至预先设置的版本库。
步骤S104,通过所述版本库模块对所述动态库进行维护。
本实施例中,所述版本库负责维护动态库文件及其对应的版本信息,其版本信息包括:文件名,处理端口,文件哈希值,创建时间戳,版本号,动态库ID。这些信息来自于所述编译引擎的执行结果。
所述维护包括哈希值校对和版本校对,具体地,所述步骤S104包括:
通过所述版本库模块计算所述动态库的第一哈希值,将所述第一哈希值与所述编译引擎计算的第二哈希值进行校对,以判断所述动态库知否被更改。所述版本库接收到所述动态库后,计算所述动态库的第一哈希值,并且所述编译引擎在编译获得所述动态库后会计算第二哈希值并将数艘第二哈希值存入该动态库的版本信息中。将所述第一哈希值与所述第二哈希值进行比对,若二者一致,则判定所述动态库未被更改。
通过所述版本库模块根据所述动态库的中预先嵌入的版本号进行版本校对,以进行版本校对。本实施例中通过nm工具显示所述动态库的函数表,对动态库版本进行校对。
并将所述动态库中的函数与数据抽象范式中设置的预设函数进行对比,以进行函数校对。核验所述数据抽象范式中要求的预设函数是否有遗漏,以保证所述动态库中包括所述数据抽象范式中所要求的函数。
若所述动态库未被更改和/或版本及函数校对成功,则保存所述动态库。反之,若所述动态库被更改和/或版本及函数校对失败,则舍弃所述动态库。
基于上述步骤则创建出了可被调用的规则文件,当需要被调用时,则调用对应的动态库,以便基于所述规则文件进行数据处理。
进一步地,所述通过所述版本库模块对所述动态库进行维护,之后还包括:
通过执行引擎基于版本号遍历所述分布式开源服务集群,当遍历到新版本动态库时,则将调用函数链接至所述新版本动态库;
将所述新版本动态库中的新函数调用格式转换为预设函数调用格式。
本实施例中,所述执行引擎负责载入动态库,并执行函数调用实现数据处理。
具体地,所述执行引擎定时遍历所述zookeeper(分布式开源服务)集群的根path,并调用zookeeper集群的getData(检索数据)函数以监听所有子path的内容更新事件,即监听所有规则文件的ID对应的版本更新事件。当遍历到新版本动态库时,则确定监听了到版本更新事件,则将调用版本库的dlopen(打开)函数链接至所述新版本动态库,若所述执行引擎的执行进程已经链接过相同ID不同版本的动态库,则先调用dlclose(关闭)函数以断开预先链接的的动态库。其中dlopen是一个计算机函数,功能是以指定模式打开指定的动态库文件,并返回一个句柄给dlsym的调用进程,使用dlclose来卸载打开的动态库。dlclose用于关闭指定句柄的动态库,只有当此动态库的使用计数为0时,才会真正被系统卸载。
当链接至所述新版本动态库后,则根据与语法树解析模块中使用的相同的数据抽象范式,用dlsym函数将动态库中对应的新函数调用格式转换为预设函数调用格式,以供调用方调用所述动态库。其中,dlsym是一个计算机函数,功能是根据动态库操作句柄与符号,返回符号对应的地址,不但可以获取函数地址,也可以获取变量地址
进一步地,所述通过所述版本库模块对所述动态库进行维护,之后还包括:
接收到调用方的调用请求时,获取所述调用请求中的目标端口号确定对应的目标动态库;
通过执行引擎调用所述目标动态库中的函数,以根据所述函数对所述调用请求中的数据进行处理,获得处理结果。
通过所述执行引擎监听UDP(User Datagram Protocol,用户数据报协议)/TCP(Transmission Control Protocol,传输控制协议)网络端口以接收调用方的调用请求,其端口设置为规则文件的处理端口,当执行引擎接收到调用请求时,解析所述调用请求中的目标端口号,将端口号与所述目标端口号一致的动态库确定为目标动态库。
将所述调用请求中的待处理数据转换成所述数据抽象范式中定义的数据格式,通过执行引擎调用所述目标动态库中的函数,以通过所述函数对待处理数据进行处理,并输出返回值,将所述返回值确定为处理结果,并将所述处理结果进行格式转换后返回给所述调用方,由此实现了规则文件的应用。
进一步地,本实施例还执行版本回退,以同样的步骤拉取旧版本的动态库实现加载和替换,以对调用方的调用请求进行处理。
此外,预先搭建用于执行所述规则文件的创建方法的执行框架,具体地,参照图4,图4是本发明规则文件的创建方法第一实施例涉及的执行框架的示意图,参照图4,所述执行框架包括:
规则管理模块,用于获取文件规则;
语法树解析模块,用于对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
编译引擎,用于将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
版本库模块,用于通过所述版本库模块对所述动态库进行维护
执行引擎,调用所述动态库中的函数,以根据所述函数对所述调用请求中的数据进行处理,获得处理结果。
zookeeper集群,用于接收所述规则管理模块下发的规则文件的规则信息,并下发版本更新信息,以供执行引擎版本获取版本更新信息。
所述执行框架中的各个模块相互协调合作完成规则文件的创建及执行。
本实施通过上述方案,通过规则管理模块获取文件规则,并生成规则文件;通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;通过所述版本库模块对所述动态库进行维护。由此将获得的文件规则解析成源代码文件,并将所述源代码文件编译成动态库,然后由版本库模块对所述动态库进行维护,以供需要对调用方的数据进行处理时可以直接调用所述动态库,提高了调用规则文件的灵活性和便捷性,并节约了能耗。
此外,本实施例还提供一种规则文件的创建装置。参照图5,图5为本发明规则文件的创建装置第一实施例的功能模块示意图。
本实施例中,所述规则文件的创建装置为虚拟装置,存储于图1所示的规则文件的创建设备的存储器1005中,以实现规则文件的创建程序的所有功能:用于通过规则管理模块获取文件规则,并生成规则文件;用于通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;用于通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;用于通过所述版本库模块对所述动态库进行维护。
具体地,参照图5,所述规则文件的创建装置包括:
获取模块10,用于通过规则管理模块获取文件规则,并生成规则文件;
解析模块20,用于通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
编译模块30,用于通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
维护模块40,用于通过所述版本库模块对所述动态库进行维护。
进一步地,所述解析模块还用于:
通过所述语法树解析模块将所述规则文件映射成语法树,所述语法树包括声明节点、子声明节点、子表达式节点;
根据预先设定的数据抽象范式依次对所述声明节点、所述子声明节点、所述子表达式节点进行转换,将转换获得的内容保存为源代码文件。
进一步地,所述解析模块还用于:
基于所述数据抽象范式中的语言约束规范对所述源代码文件中的代码内容进行检验,以查找出不符合所述语音约束规范的代码内容。
进一步地,所述维护模块还用于:
通过所述版本库模块计算所述动态库的第一哈希值,将所述第一哈希值与所述编译引擎计算的第二哈希值进行校对,以判断所述动态库知否被更改;和/或
通过所述版本库模块根据所述动态库的中预先嵌入的版本号进行版本校对,并将所述动态库中的函数与数据抽象范式中设置的预设函数进行对比,以进行版本及函数校对;
若所述动态库未被更改和/或版本及函数校对成功,则保存所述动态库。
进一步地,所述获取模块还用于:
保存所述文件规则的规则信息,将所述规则信息发送至分布式开源服务集群。
进一步地,所述维护模块还用于:
通过执行引擎基于版本号遍历所述分布式开源服务集群,当遍历到新版本动态库时,则将调用函数链接至所述新版本动态库;
将所述新版本动态库中的新函数调用格式转换为预设函数调用格式。
进一步地,所述维护模块还用于:
接收到调用方的调用请求时,获取所述调用请求中的目标端口号确定对应的目标动态库;
通过执行引擎调用所述目标动态库中的函数,以根据所述函数对所述调用请求中的数据进行处理,获得处理结果。
此外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有规则文件的创建程序,所述规则文件的创建程序被处理器运行时实现如上所述规则文件的创建方法的步骤,此处不再赘述。
相比现有技术,本发明提出的一种规则文件的调用方法、装置、设备及计算机可读存储介质,通过规则管理模块获取文件规则,并生成规则文件;通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;通过所述版本库模块对所述动态库进行维护。由此将获得的文件规则解析成源代码文件,并将所述源代码文件编译成动态库,然后由版本库模块对所述动态库进行维护,以供需要对调用方的数据进行处理时可以直接调用所述动态库,提高了调用规则文件的灵活性和便捷性,并节约了能耗。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种规则文件的创建方法,其特征在于,所述方法包括:
通过规则管理模块获取文件规则,并生成规则文件;
通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
通过所述版本库模块对所述动态库进行维护。
2.根据权利要求1所述的方法,其特征在于,所述通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件,包括:
通过所述语法树解析模块将所述规则文件映射成语法树,所述语法树包括声明节点、子声明节点、子表达式节点;
根据预先设定的数据抽象范式依次对所述声明节点、所述子声明节点、所述子表达式节点进行转换,将转换获得的内容保存为源代码文件。
3.根据权利要求2所述的方法,其特征在于,所述根据预先设定的数据抽象范式依次对所述声明节点、所述子声明节点、所述子表达式节点进行转换,将转换获得的内容保存为源代码文件,之后还包括:
基于所述数据抽象范式中的语言约束规范对所述源代码文件中的代码内容进行检验,以查找出不符合所述语音约束规范的代码内容。
4.根据权利要求1所述的方法,其特征在于,所述通过所述版本库模块对所述动态库进行维护,包括:
通过所述版本库模块计算所述动态库的第一哈希值,将所述第一哈希值与所述编译引擎计算的第二哈希值进行校对,以判断所述动态库知否被更改;和/或
通过所述版本库模块根据所述动态库的中预先嵌入的版本号进行版本校对,并将所述动态库中的函数与数据抽象范式中设置的预设函数进行对比,以进行版本及函数校对;
若所述动态库未被更改和/或版本及函数校对成功,则保存所述动态库。
5.根据权利要求1所述的方法,其特征在于,所述通过规则管理模块获取待文件规则,之后还包括:
保存所述文件规则的规则信息,将所述规则信息发送至分布式开源服务集群。
6.根据权利要求5所述的方法,其特征在于,所述通过所述版本库模块对所述动态库进行维护,之后还包括:
通过执行引擎基于版本号遍历所述分布式开源服务集群,当遍历到新版本动态库时,则将调用函数链接至所述新版本动态库;
将所述新版本动态库中的新函数调用格式转换为预设函数调用格式。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述通过所述版本库模块对所述动态库进行维护,之后还包括:
接收到调用方的调用请求时,获取所述调用请求中的目标端口号确定对应的目标动态库;
通过执行引擎调用所述目标动态库中的函数,以根据所述函数对所述调用请求中的数据进行处理,获得处理结果。
8.一种规则文件的装置,其特征在于,所述规则文件的装置包括:
获取模块,用于通过规则管理模块获取文件规则,并生成规则文件;
解析模块,用于通过语法树解析模块对所述规则文件进行语法解析,获得所述规则文件的源代码文件;
编译模块,用于通过编译引擎将所述源代码文件编译成动态库,并将所述动态库推送至版本库模块;
维护模块,用于通过所述版本库模块对所述动态库进行维护。
9.一种规则文件的创建设备,其特征在于,所述规则文件的创建设备包括处理器,存储器以及存储在所述存储器中的规则文件的创建程序,所述规则文件的创建程序被所述处理器运行时,实现如权利要求1-7中任一项所述的规则文件的创建方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有规则文件的创建程序,所述规则文件的创建程序被处理器运行时实现如权利要求1-7中任一项所述规则文件的创建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595574.XA CN112667287A (zh) | 2020-12-28 | 2020-12-28 | 规则文件的创建方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595574.XA CN112667287A (zh) | 2020-12-28 | 2020-12-28 | 规则文件的创建方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112667287A true CN112667287A (zh) | 2021-04-16 |
Family
ID=75410119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011595574.XA Pending CN112667287A (zh) | 2020-12-28 | 2020-12-28 | 规则文件的创建方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667287A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448655A (zh) * | 2021-07-09 | 2021-09-28 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
CN113535148A (zh) * | 2021-07-22 | 2021-10-22 | 北京奇艺世纪科技有限公司 | 一种源代码的生成方法、装置及电子设备 |
CN113821195A (zh) * | 2021-09-10 | 2021-12-21 | 北京鲸鲮信息系统技术有限公司 | 目标语言的可执行程序的生成方法、装置及设备 |
CN113469740B (zh) * | 2021-06-28 | 2024-09-10 | 康键信息技术(深圳)有限公司 | 广告数据获取方法、装置、设备及存储介质 |
-
2020
- 2020-12-28 CN CN202011595574.XA patent/CN112667287A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113469740B (zh) * | 2021-06-28 | 2024-09-10 | 康键信息技术(深圳)有限公司 | 广告数据获取方法、装置、设备及存储介质 |
CN113448655A (zh) * | 2021-07-09 | 2021-09-28 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
CN113448655B (zh) * | 2021-07-09 | 2022-06-17 | 赞同科技股份有限公司 | C标准动态库的调用方法与装置 |
CN113535148A (zh) * | 2021-07-22 | 2021-10-22 | 北京奇艺世纪科技有限公司 | 一种源代码的生成方法、装置及电子设备 |
CN113535148B (zh) * | 2021-07-22 | 2023-07-21 | 北京奇艺世纪科技有限公司 | 一种源代码的生成方法、装置及电子设备 |
CN113821195A (zh) * | 2021-09-10 | 2021-12-21 | 北京鲸鲮信息系统技术有限公司 | 目标语言的可执行程序的生成方法、装置及设备 |
CN113821195B (zh) * | 2021-09-10 | 2023-12-22 | 北京字节跳动网络技术有限公司 | 目标语言的可执行程序的生成方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112667287A (zh) | 规则文件的创建方法、装置、设备及计算机可读存储介质 | |
CN106919434B (zh) | 一种代码生成方法及装置 | |
CN111736954B (zh) | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 | |
US9038036B2 (en) | Generation of source code and executable code from formal descriptions | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN115639980A (zh) | 一种低代码平台可拖拽的前端逻辑编排方法及装置 | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN117971236B (zh) | 基于词法和语法分析的算子解析方法、装置、设备及介质 | |
CN116414774A (zh) | 文件迁移方法、装置、设备及存储介质 | |
US7890548B2 (en) | Automation process system and method to upgrade from non-unicode transformation support to unicode data transformation support | |
CN110826074A (zh) | 一种应用漏洞检测方法、装置和计算机可读存储介质 | |
CN114510262A (zh) | 一种接口请求参数校验方法和装置 | |
WO2024109167A1 (zh) | 程序代码处理方法及装置 | |
CN110659022B (zh) | 一种基于Java自动调用Python脚本的方法 | |
US9747085B2 (en) | Source code generation from prototype source | |
CN114115884A (zh) | 一种编程服务的管理方法以及相关装置 | |
CN111399842A (zh) | 一种代码编译方法及装置 | |
CN116578282A (zh) | 代码生成方法、装置、电子设备及介质 | |
CN116185391A (zh) | 应用程序编程接口生成方法、装置、设备及存储介质 | |
CN115098158A (zh) | Sdk打包方法和装置、计算机设备及存储介质 | |
CN115525561A (zh) | 协议接口测试方法、装置、终端设备以及存储介质 | |
CN114661298A (zh) | 公共方法自动生成方法、系统、设备及介质 | |
CN114489653A (zh) | 基于编译器的数据处理方法、装置以及可读存储介质 | |
CN112052012B (zh) | 基于xslt和xsd的代码自动生成方法和设备 | |
CN110262787B (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 |