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

一种运行环境适配系统及方法与流程

2022-06-11 12:28:48 来源:中国专利 TAG:
1.本发明属于程序开发
技术领域
:,具体涉及一种运行环境适配系统及方法。
背景技术
::2.随着国家对信息化建设的重视,对信息安全建设的加强,各重要系统要求使用安全可靠的国产系统,其中涉及软件、硬件使用国产化替换。大量原有应用系统需要迁移至国产化进行运行,而由于底层技术支撑的差异,系统无法直接进行迁移,需要对源代码和运行环境进行改造、适配和重构等操作。3.解决此类问题的传统办法,是由技术人员对原系统的源代码进行人工迁移,由于迁移前后的技术路线差异大,涉及的技术栈繁杂,技术人员需要投入大量的调试工作,尤其是在操作系统、应用中间件和关系型数据库层面投入大量时间,开发效率低,而且存在复杂度高、可读性差、易出错等诸多问题,进而影响适配成功率和系统的稳定性。技术实现要素:4.针对现有技术的上述不足,本发明提供一种运行环境适配系统及方法,以解决上述技术问题。5.第一方面,本发明提供一种运行环境适配系统,包括:文件解析模块、配置库适配模块、文件适配模块和至少一个配置库;所述配置库内存储至少一个第二代码文件;6.所述文件解析模块用于解析待适配源代码包,得到至少一个第一代码文件;7.所述配置库适配模块用于确定所述第一代码文件所应适配的目标配置库;8.所述文件适配模块用于根据目标运行环境的技术栈,确定所述目标配置库内的作为所述第一代码文件的适配目标的所述第二代码文件。9.进一步地,所述配置库适配模块包括备选子模块和确定子模块;10.所述备选子模块用于根据所述第一代码文件的文件类型确定备选的配置库;11.所述确定子模块用于将第一代码文件与所述备选的配置库进行适配,在适配成功的情况下,确定该备选的配置库为目标配置库。12.进一步地,所述配置库包括sql配置库、依赖库和组件库。13.进一步地,还包括文件划分模块,所述文件划分模块用于按照文件类型将第一代码文件分类为代码片段、组件文件和依赖文件;14.所述确定子模块还用于以sql脚本为适配元素将代码片段与所述sql配置库进行匹配;15.所述确定子模块还用于以文件名称为适配元素将组件文件与所述组件库进行匹配;16.所述确定子模块还用于以文件名称为适配元素将依赖文件与所述依赖库进行匹配。17.进一步地,所述文件适配模块中所述的技术栈包括技术架构、操作系统、中间件和数据库。18.进一步地,所述配置库还包括代码配置库;所述系统还包括特征解析模块和语言确定模块;19.所述特征解析模块用于解析待适配源代码包,得到代码语言特征;20.所述语言确定模块用于将所述代码语言特征与代码配置库中的规则进行逐条匹配,确定所述待适配源代码包的开发语言。21.进一步地,还包括:代码包生成模块,用于对确定的所述第二代码文件进行检验,在检验通过的情况下生成所述目标运行环境下新源代码包。22.进一步地,还包括:代码包验证模块,用于验证所述新源代码包的文件完整性。23.第二方面,本发明提供一种运行环境适配方法,包括:24.解析待适配源代码包,得到至少一个第一代码文件;25.确定所述第一代码文件所应适配的目标配置库;26.根据目标运行环境的技术栈,确定所述目标配置库内的作为所述第一代码文件的适配目标的第二代码文件。27.进一步地,所述确定所述第一代码文件所应适配的目标配置库,包括:28.按照文件类型将第一代码文件分类为代码片段、组件文件和依赖文件;29.以sql脚本为适配元素将代码片段与sql配置库进行匹配;30.以文件名称为适配元素将组件文件与组件库进行匹配;31.以文件名称为适配元素将依赖文件与依赖库进行匹配。32.本发明的有益效果在于:33.本发明提供的一种运行环境适配系统及方法,通过分析应用程序的源代码文件,并根据适配的目标运行环境的技术栈,在配置库中适配到适用与目标运行环境的新的代码文件,能够容易地生成可在国产化软硬件平台进行运行的代码包,降低应用程序的开发成本。34.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。附图说明35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。36.图1是本发明一个实施例的系统的示意性框图。37.图2是本发明另一个实施例的系统的示意性框图。38.图3是本发明另一个实施例的系统的示意性框图。具体实施方式39.为了使本
技术领域
:的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。40.图1是本发明一个实施例的提供一种运行环境适配系统,包括:文件解析模块、配置库适配模块、文件适配模块和至少一个配置库;所述配置库内存储至少一个第二代码文件;所述文件解析模块用于解析待适配源代码包,得到至少一个第一代码文件;所述配置库适配模块用于确定所述第一代码文件所应适配的目标配置库;所述文件适配模块用于根据目标运行环境的技术栈,确定所述目标配置库内的作为所述第一代码文件的适配目标的所述第二代码文件。41.在本实施例中,待适配源代码包为要进行适配工作的应用程序的打包可运行的文件包,本实施例以单个文件地形式进行处理。本系统首先通过配置库适配模块适配到目标配置库,然后通过文件适配模块适配该目标库配置库内的第二代码文件,适配到目标运行环境的技术栈的第二代码文件。本实施例将采用“配置库-文件”两级模块,进行目标第二代码文件的适配,提升了匹配准确性和匹配效率。42.可选地,作为本发明一个实施例,所述配置库适配模块包括备选子模块和确定子模块;所述备选子模块用于根据所述第一代码文件的文件类型确定备选的配置库;所述确定子模块用于将第一代码文件与所述备选的配置库进行适配,在适配成功的情况下,确定该备选的配置库为目标配置库。43.可选地,作为本发明一个实施例,所述配置库包括sql配置库、依赖库和组件库。44.可选地,作为本发明一个实施例,还包括文件划分模块,所述文件划分模块用于按照文件类型将第一代码文件分类为代码片段、组件文件和依赖文件;所述确定子模块还用于以sql脚本为适配元素将代码片段与所述sql配置库进行匹配;所述确定子模块还用于以文件名称为适配元素将组件文件与所述组件库进行匹配;所述确定子模块还用于以文件名称为适配元素将依赖文件与所述依赖库进行匹配。45.在本实施例中,代码片段的备选的配置库为sql配置库,依赖文件的备选的配置库为依赖库,组件文件的备选的配置库为组件库。配置库内存储第一层匹配规则,根据第一层匹配规则确定所述第一代码文件的目标配置库;所述sql配置库的第一层匹配规则为以sql脚本为适配元素;所述sql配置库的第一层匹配规则为以文件名称为适配元素;所述sql配置库的第一层匹配规则为以文件名称为适配元素。配置库内存储第二层匹配规则,所述第二层匹配规则为以技术栈为适配元素。46.例如,文件名称为“rely-v3.2.jar”的依赖文件,依赖库的第一层匹配规则为“rely((.|\n) ?).jar”,则判断该文件符合第一层匹配规则,则在该配置库内继续按照文件名称匹配第二层匹配规则。47.可选地,作为本发明一个实施例,所述文件适配模块中所述的技术栈包括技术架构、操作系统、中间件和数据库。48.值得说明的,通常根据第一代码文件的“文件名称 技术架构”并不能直接匹配到第二代码文件,因为在特殊情况下,两个第二层匹配规则定义是完全相同的,例如java、c两个第一层匹配规则下,都会包含public关键字的第二层匹配规则。配置库库中的规则可能包含数万条,如果都设计成一级进行逐一匹配,处理量庞大,匹配效率较低。49.本实施例提供的sql配置库包括关系型数据库的规则定义,具体包括oracle,sqlserver,db2,mysql、highgo、kingbase、dm、gbase、oceanbase、gaussdb数据库;sql配置库记录每一种关系型数据库的书写规范和函数,以及各类数据库书写规范和函数之间的匹配对应关系。50.本实施例提供的一种sql配置库如下表所示。[0051][0052][0053]本实施例提供的依赖库包括服务端运行环境所需要的依赖文件,以及对应国产化技术架构下的对应文件包。[0054]本实施例提供的一种依赖库如下表所示。[0055][0056]本实施例的组件库包括服务端运行环境所需要的组件文件,以及对应各类国产化技术架构下的对应组件文件。[0057]本实施例提供的一种组件库如下表所示。[0058][0059][0060]可选地,作为本发明一个实施例,所述配置库还包括代码配置库;所述系统还包括特征解析模块和语言确定模块;所述特征解析模块用于解析待适配源代码包,得到代码语言特征;所述语言确定模块用于将所述代码语言特征与代码配置库中的规则进行逐条匹配,确定所述待适配源代码包的开发语言。[0061]本实施例提供的代码配置库包括编译型和解释型开发语言的书写规范,具体包括java、python、c、c 、c#、php、delphi语言的书写语法;该配置库用于分析模块对用户输入的源代码文件进行分析,判断应用程序的开发语言。[0062]本实施例提供的一种代码配置库如下表所示[0063]编号层级匹配规则语言匹配率…………………………c-j-1001.javajava99%c-j-1011.classjava99%c-j-1022^packagejava25%c-j-1032^importjava5%c-j-1042^publicclassjava30%…………………………[0064]可选地,作为本发明一个实施例,对所述第二代码文件进行检验,在检验通过的情况下生成所述目标运行环境下该应用程序的新源代码包。[0065]如图2所示,可选地,作为本发明一个实施例,还包括:代码包生成模块,用于对确定的所述第二代码文件进行检验,在检验通过的情况下生成所述目标运行环境下新源代码包。[0066]如图3所示,可选地,作为本发明一个实施例,还包括:代码包验证模块,用于验证所述新源代码包的文件完整性。[0067]本发明实施例还提供一种运行环境适配方法,包括:解析待适配源代码包,得到至少一个第一代码文件;确定所述第一代码文件所应适配的目标配置库;根据目标运行环境的技术栈,确定所述目标配置库内的作为所述第一代码文件的适配目标的第二代码文件。[0068]可选地,作为本发明一个实施例,所述确定所述第一代码文件所应适配的目标配置库,包括:按照文件类型将第一代码文件分类为代码片段、组件文件和依赖文件;以sql脚本为适配元素将代码片段与sql配置库进行匹配;以文件名称为适配元素将组件文件与组件库进行匹配;以文件名称为适配元素将依赖文件与依赖库进行匹配。[0069]为了便于对本发明的理解,下面以本发明一种运行环境适配方法的原理,结合实施例中配置库的内容,对本发明提供的适配方法做进一步的描述。[0070]具体的,所述运行环境适配方法包括:[0071]1、接收用户上传的待适配的应用程序的源代码包。[0072]2、接收用户选择的适配后应用程序再国产化运行环境所运行的技术栈,技术栈包括技术架构、操作系统、中间件、数据库,其中技术架构和操作系统为必选项,中间件和数据库为可选项;在本实施例中,适配后国产化运行环境的数据库型号的代码为“hg”,目标适配的国产化运行环境的技术架构为arm架构。[0073]3、对用户上传的源代码包进行解析,进行初步检验,分析文件中是否包括可适配的代码,得到第一代码文件,并生成第一代码文件的文件清单,本实施例的文件清单如下表所示。[0074][0075][0076]4、提取源代码包中的代码语言特征,与代码配置库中的规则进行逐条匹配,确定该源代码包的开发语言;[0077]5、读取s3的文件清单,遍历每个第一代码文件,执行s6至s10;[0078]6、检查第一代码文件的文件类型;[0079]7、该第一代码文件的文件类型为代码片段时,备选配置库为sql配置库,检查文件a是否包括sql脚本,将sql脚本与sql配置库进行逐条匹配,获取对应适配前后数据库的匹配规则,当有更新时,更新文件内容;[0080]例如:[0081]7.1、第一代码文件a1经s6确定为代码片段,文件名为“code.sql”,文件a1内容如下;[0082]……[0083]selectdate_diff(atime-btime)fromtable1;[0084]selectdate_diff(atime-btime)fromtable2;[0085]selectdate_diff(atime-btime)fromtable3;[0086]……[0087]7.2、第一代码文件a1适配sql配置库中的“selectdate_diff((.|\n) ?)”规则;[0088]7.3、因为在s2中适配后目标数据库型号的代码为“hg”,按照sql配置库中“s-a-100-hg”规则,“code.sql”文件适配后的第二代码文件a2的内容为:[0089]……[0090]selectdate_part(datepart,atime-btime)fromtable1;[0091]selectdate_part(datepart,atime-btime)fromtable2;[0092]selectdate_part(datepart,atime-btime)fromtable3;[0093]……[0094]7.4、把第一代码文件a1的“code.sql”文件名称更新为“code.sql-备份”,将适配后的第二代码文件a2的文件名称更新为“code.sql”。[0095]8、该第一代码文件的文件类型为依赖文件时,备选配置库为依赖库,以该第一代码文件的文件名称为第一匹配指标,按照第一层匹配规则确定目标依赖库,将文件名称、国产化运行环境的技术架构、操作系统中的至少一种作为第二匹配指标,按照第二层匹配规则进行匹配,用匹配到的第二代码文件替换第一代码文件;[0096]例如:[0097]8.1、第一代码文件b1经s6确定为依赖文件,文件名为“rely-v3.2.jar”;[0098]8.2、以“文件名称”为匹配指标,b命中依赖库中第一层匹配规则的“rely((.|\n) ?).jar”规则;[0099]8.3、因为在s2中适配后目标技术架构为arm架构,按照依赖配置库中第二层匹配规则中的“r-200-v3.2-arm”规则,将第一代码文件b1替换为第二代码文件b2,其中第二代码文件b2的命名为“rely-v3.2-arm.jar”;[0100]8.4、将第一代码文件b1的“rely-v3.2.jar”更名为“rely-v3.2.jar-备份”;将适配后的第二代码文件b2的文件名称更新为“rely-v3.2.jar”。[0101]9、该第一文件代码的文件类型为组件文件时,备选配置库为组件库,以该第一代码文件的文件名称为第一匹配指标,按照第一层匹配规则确定目标组件库,将文件名称、国产化运行环境的技术架构、操作系统中的至少一种作为第二匹配指标,按照第二层匹配规则进行匹配,用匹配到的第二代码文件替换第一代码文件;[0102]例如:[0103]9.1、第一代码文件c1经s6确定为组件文件,文件名为“comp-aop-1.6.4.js”;[0104]9.2、该第一代码文件c1命中依赖库中第一层匹配规则中的“comp-aop((.|\n) ?).js”规则;[0105]9.3、因为在s2中适配后目标技术架构为arm架构,按照依赖配置库中第二层匹配规则中的c-300-arm-1.6.4规则,将第一代码文件c1替换为第二代码文件c2,其中,第二代码文件c2的命名为“comp-aop-1.6.4-arm.js”;[0106]9.4、将第一代码文件c1的文件名称更新为“comp-aop-1.6.4.js-备份”,将第二代码文件c2的文件名称更新为“comp-aop-1.6.4.js”。[0107]10、若当前第一代码文件是本次遍历的最后一个文件时,执行步骤11,否则返回s5;将根据步骤5至步骤10的适配过程记录称适配方案。[0108]11、利用步骤4确定的开发语言确定将所述源代码加载到目标国产化运行环境中进行编译,并结合步骤5至步骤10的替换的第二代码文件,编译生成新的源代码包,并检验代码包的完整性;[0109]12、在代码包的完整性检验通过的情况下,输出新的源代码包,以及文件清单和适配方案。[0110]在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0111]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0112]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0113]尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

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

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

相关文献