本发明涉及通信技术领域,尤其是涉及一种源代码生成方法及装置。
背景技术:
每次新产品和项目开发启动时候都需要重新搭建很多源代码工程。包括前端和前台以及后台等工程。这种传统生成代码工程的方法造成很多项目框架不统一,并且不利于开发效率的提高。
技术实现要素:
本发明提供了一种源代码生成方法及装置,可以缓解每次新产品开发启动时都要重新搭建源代码工程的问题,统一项目框架,节省源代码的搭建时间,以提升开发效率。
第一方面,本发明实施例提供了一种源代码生成方法,该方法包括:获取界面指令,根据所述界面指令确定目标模板工程和目标依赖工程;所述目标模板工程包括预先配置的用于实现目标功能的源代码;所述目标依赖工程包括预先配置的用于确定所述目标模板工程的依赖关系的源代码;加载所述目标模板工程的基础数据和所述目标依赖工程的基础数据,得到加载结果;所述目标模板工程的基础数据是预先配置的与所述目标功能对应的参数;所述目标依赖工程的基础数据是预先配置的与所述依赖关系对应的参数;若所述加载结果中,与所述目标模板工程相关的所述目标依赖工程之间不冲突,将所述加载结果作为目标源代码。
第二方面,本发明实施例还提供一种源代码生成装置,该装置包括:获取模块,用于获取界面指令,根据所述界面指令确定目标模板工程和目标依赖工程;所述目标模板工程包括预先配置的用于实现目标功能的源代码;所述目标依赖工程包括预先配置的用于确定所述目标模板工程的依赖关系的源代码;加载模块,用于加载所述目标模板工程的基础数据和所述目标依赖工程的基础数据,得到加载结果;所述目标模板工程的基础数据是预先配置的与所述目标功能对应的参数;所述目标依赖工程的基础数据是预先配置的与所述依赖关系对应的参数;输出模块,用于若所述加载结果中,与所述目标模板工程相关的所述目标依赖工程之间不冲突,将所述加载结果作为目标源代码。
第三方面,本发明实施例还提供一种计算机设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述源代码生成方法。
第四方面,本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述源代码生成方法。
本发明实施例带来了以下有益效果:本发明实施例提供了一种源代码生成方案,该方案包括:首先获取界面指令,并根据界面指令从预先配置的多个模板工程和多个依赖工程中选择模板工程和目标依赖工程,其中,模板工程包括用于实现多种功能的源代码;依赖工程包括用于确定模板工程的依赖关系的源代码;之后,为目标模板工程和目标依赖工程分别加载基础数据,得到加载结果,其中,目标模板工程的基础数据是预先配置的与目标功能对应的参数;目标依赖工程的基础数据是预先配置的与依赖关系对应的参数;若加载结果中,与目标模板工程相关的目标依赖工程之间不冲突,将加载结果作为目标源代码。本发明实施例在预先配置的源代码中确定目标模板工程和目标依赖工程,以代替重新搭建源代码工程的步骤,提高了生成源代码的效率;并且,通过对模板工程和依赖工程进行复用,能够得到框架统一的目标源代码。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的源代码生成流程图;
图2为本发明实施例提供的源代码生成执行过程示意图;
图3为本发明实施例提供的一种源代码生成装置结构框图;
图4为本发明实施例提供的另一种源代码生成装置结构框图;
图5为本发明实施例提供的计算机设备结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,随着公司项目越来愈多,项目基本都是分布式java框架、nodejs前端框架以及后台脚本工程开发。开发人员每次开发项目,都需要重新搭建很多分布式工程和添加依赖工程,造成项目启动过程耽误时间,而影响项目工期。
基于此,本发明实施例提供的一种源代码生成方法及装置,可以解决基础工程和依赖快速生成和快速导出的问题,从而提升开发效率。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种源代码生成方法进行详细介绍。
本发明实施例提供了一种源代码生成方法,参见图1所示的一种源代码生成方法流程图,该方法包括以下步骤:
步骤s102,获取界面指令,根据界面指令确定目标模板工程和目标依赖工程。
在本发明实施例中,界面指令包括用户选择的目标模板工程和目标依赖工程等信息。用户根据实际需求通过界面指令在多个预先配置的模板工程和多个依赖工程中选择需要的工程作为标模板工程或目标依赖工程。能够实现某种功能的源代码可以作为一个模板工程,能够用于确定模板工程的依赖关系的源代码,可以作为一个依赖工程。
需要说明的是,依赖关系可以用于确定模板工程之间的继承关系,例如,模板工程a中的部分源代码与模板工程b中的部分源代码相同,或者根据模块工程b中的部分源代码进行修改、删除或补充得到模板工程a中的源代码,那么可以说模板工程a依赖于模板工程b,二者存在依赖关系。
另外需要说的是,在本发明实施例中,可以选择多个目标模板工程,也可以选择多个目标依赖工程。
步骤s104,加载目标模板工程的基础数据和目标依赖工程的基础数据,得到加载结果。
在本发明实施例中,目标模板工程的基础数据是预先配置的与目标模板工程中的目标功能对应的参数,目标依赖工程的基础数据是预先配置的与目标依赖工程中的依赖关系对应的参数。在确定了目标模板工程和目标依赖工程之后,将目标模板工程的基础数据和目标依赖工程的基础数据分别加载到目标模板工程和目标依赖工程中,得到加载结果。
需要说明的是,可以通过framemark模板得到加载结果。
步骤s106,若加载结果中,与目标模板工程相关的目标依赖工程之间不冲突,将加载结果作为目标源代码。
在本发明实施例中,与目标模板工程相关的目标依赖工程,是用于确定该目标模板工程与其他目标模板工程之间关系的目标依赖工程;一个目标模板工程可能需要多个目标依赖工程,以确定与不同目标模板工程之间的依赖关系。
得到加载结果之后,与目标模板工程相关的多个目标依赖工程之间可能存在冲突,例如,在目标依赖工程1中,目标模板工程a,依赖于目标工程b,在目标依赖工程2中,目标模板工程a,依赖于目标工程c,若目标工程b和目标工程c的同时存在会引起矛盾,则认为与目标模板工程a相关的目标依赖工程1和目标依赖工程2之间冲突。
在本发明实施例中,如果不存在冲突,可以将加载结果作为目标源代码进行输出,以使开发人员能够使用目标源代码或基于目标源代码继续进行开发。在得到目标源代码的过程中,无需重新搭建新的源代码工程,从已经搭建过的模板工程和依赖工程中进行选择的过程,替代了搭建的过程,节省了开发时间,并且,在不同的开发过程中,复用了已经搭建过的模板工程、依赖工程以及基础数据,能够使框架得到统一。
本发明实施例提供了一种源代码生成方案,该方案包括:首先获取界面指令,并根据界面指令从预先配置的多个模板工程和多个依赖工程中选择模板工程和目标依赖工程,其中,模板工程包括用于实现多种功能的源代码;依赖工程包括用于确定模板工程的依赖关系的源代码;之后,为目标模板工程和目标依赖工程分别加载基础数据,得到加载结果,其中,目标模板工程的基础数据是预先配置的与目标功能对应的参数;目标依赖工程的基础数据是预先配置的与依赖关系对应的参数;若加载结果中,与目标模板工程相关的目标依赖工程之间不冲突,将加载结果作为目标源代码。本发明实施例在预先配置的源代码中确定目标模板工程和目标依赖工程,以代替重新搭建源代码工程的步骤,提高了生成源代码的效率;并且,通过对模板工程和依赖工程进行复用,能够得到框架统一的目标源代码。
考虑到为了提升目标源代码的可用性,并保证生成目标源代码过程的自动进行,该方案还可以执行如下步骤:
若加载结果中,与目标模板工程相关的目标依赖工程之间冲突,根据预设规则删除存在冲突的目标依赖工程中的一个或多个目标依赖工程;预设规则用于确定要删除的目标依赖工程;将删除了一个或多个目标依赖工程的加载结果作为目标源代码。
在本发明实施例中,预设规则是预先根据实际需求设置的用于决策的规则,可以用于确定要删除或要保留的目标依赖工程。如果与目标模板工程相关的目标依赖工程之间存在冲突,根据预设规则自动保留目标依赖工程,并自动删除目标依赖工程中的一个或多个与要保留的目标依赖工程产生冲突的目标依赖工程。在删除或保留目标依赖工程时,也同时删除或保留相应的基础数据。最后,将删除了一个或多个目标依赖工程的加载结果作为目标源代码。
考虑到为了提升目标源代码的可用性,并实现对冲突目标依赖工程的选择控制,该方案还可以执行如下步骤:
若加载结果中,与目标模板工程相关的目标依赖工程之间冲突,生成依赖冲突排除通知;依赖冲突排除通知用于提示下发勾选指令;获取勾选指令,并跟据勾选指令删除存在冲突的目标依赖工程中的一个或多个目标依赖工程;将删除了一个或多个目标依赖工程的加载结果作为目标源代码。
在本发明实施例中,为了便于对选择目标依赖过程的控制,当与目标模板工程相关的目标依赖工程之间存在冲突时,生成依赖冲突排除通知,依赖冲突排除通知用于提示用户当前存在冲突,并提示用户下发指令,用户可以通过界面下发勾选指令,之后,获取用户下发的勾选指令,并根据勾选指令确定要删除或要保留的目标依赖工程,并对要删除的目标依赖工程进行删除,在删除或保留目标依赖工程时,也同时删除或保留相应的基础数据。最后,将删除了一个或多个目标依赖工程的加载结果作为目标源代码。
考虑到为了提高数据处理的效率,加载目标模板工程的基础数据和目标依赖工程的基础数据,可以按照如下步骤执行:
在redis(remotedictionaryserver,远程字典服务)数据库中加载目标模板工程的基础数据和目标依赖工程的基础数据。
在本发明实施例中,在redis数据库中实现对目标模板工程基础数据,以及目标依赖工程基础数据的加载,可以减轻内存数据库的压力,提高计算性能。
考虑到为了便于使用目标源代码,该方法还可以包括如下步骤:
将目标源代码所在数据库的信息同步至目标数据库中。
在本发明实施例中,目标数据库可以根据实际需求进行选择或者指定,本发明实施例对此不作具体要求。目标源代码所在数据库中有与目标源代码相关的信息,在同步时,需要将与目标源代码相关信息也进行同步。
考虑到为了提高各个步骤数据处理的效率,获取界面指令之前,还可以执行如下步骤:
生成多种微服务;多种微服务至少包括:模板引擎微服务、规则引擎微服务、基础数据微服务和sql(structuredquerylanguage,结构化查询语言)同步微服务中的一种或几种;将多种微服务通过注册中心进行注册;根据注册后的多种微服务执行源代码生成方法。
在本发明实施例中,可以用模板引擎微服务执行获取界面指令,并根据界面指令确定目标模板工程和目标依赖工程的步骤,可以用规则引擎微服务执行判断加载结果中,与目标模板工程相关的目标依赖工程之间是否冲突的步骤,可以用基础数据执行加载目标模板工程的基础数据和目标依赖工程的基础数据,得到加载结果的步骤,可以用sql同步微服务执行将目标源代码所在数据库的信息同步至目标数据库中的步骤。
参见图2所示的源代码生成执行过程示意图,下面以一个具体实施例说明该方法的实施步骤。
(1)模板引擎微服务、规则引擎微服务、基础数据微服务、sql同步微服务通过注册中心注册服务。
(2)部分固化的环境数据、工程数据、依赖关系数据等在项目启动时候调用基础数据微服务加载到redis内存中。
(3)用户选择模板工程、填写工程名称、选择依赖架包以及基础工程后提前申请到规则引擎。
(4)规则引擎根据提交申请的预定义的语义模块编写业务决策,并接收接受申请数据输入,解释业务规则,并根据业务规则做出业务决策。
(5)业务决策后调用相应的模板引擎,替换相应变量和模板逻辑判断,生成基础模板工程。
(6)完成基础模板工程后调用sql同步微服务,创建数据库和同步sql语句到项目数据库中。
(7)开发人员导入基础数据模板,开发测试。
本发明实施例提供了一种源代码生成方法及装置,该方法可以实现导出源代码工程快速进入开发,对不同项目选择不同模板工程和依赖工程,可以减轻架构师和开发人员工作量,还能够统一源代码基础工程,提升开发的效率。
本发明实施例还提供一种源代码生成装置,参见图3所示的一种源代码生成装置结构框图,该装置包括:获取模块71,用于获取界面指令,根据界面指令确定目标模板工程和目标依赖工程;目标模板工程包括预先配置的用于实现目标功能的源代码;目标依赖工程包括预先配置的用于确定目标模板工程的依赖关系的源代码;加载模块72,用于加载目标模板工程的基础数据和目标依赖工程的基础数据,得到加载结果;目标模板工程的基础数据是预先配置的与目标功能对应的参数;目标依赖工程的基础数据是预先配置的与依赖关系对应的参数;输出模块73,用于若加载结果中,与目标模板工程相关的目标依赖工程之间不冲突,将加载结果作为目标源代码。
在一个实施例中,输出模块,还用于:若加载结果中,与目标模板工程相关的目标依赖工程之间冲突,根据预设规则删除存在冲突的目标依赖工程中的一个或多个目标依赖工程;预设规则用于确定要删除的目标依赖工程;将删除了一个或多个目标依赖工程的加载结果作为目标源代码。
在一个实施例中,输出模块,还用于:若加载结果中,与目标模板工程相关的目标依赖工程之间冲突,生成依赖冲突排除通知;依赖冲突排除通知用于提示下发勾选指令;获取勾选指令,并跟据勾选指令删除存在冲突的目标依赖工程中的一个或多个目标依赖工程;将删除了一个或多个目标依赖工程的加载结果作为目标源代码。
在一个实施例中,加载模块,具体用于:在redis数据库中加载目标模板工程的基础数据和目标依赖工程的基础数据。
在一个实施例中,参见图4所示的另一种源代码生成装置结构框图,该装置还包括同步模块74,具体用于:将目标源代码所在数据库的信息同步至目标数据库中。
在一个实施例中,参见图4所示的另一种源代码生成装置结构框图,该装置还包括:微服务模块75,用于:生成多种微服务;多种微服务至少包括:模板引擎微服务、规则引擎微服务、基础数据微服务和sql同步微服务中的一种或几种;将多种微服务通过注册中心进行注册;根据注册后的多种微服务执行源代码生成方法。
本发明实施例还提供一种计算机设备,参见图5所示的计算机设备结构示意框图,该计算机设备包括存储器81、处理器82,存储器中存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一种方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的计算机设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述
本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述任一种方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。