代码生成方法及装置与流程

文档序号:12362768阅读:257来源:国知局
代码生成方法及装置与流程
本发明涉及计算机软件
技术领域
,尤其涉及代码生成方法及装置。
背景技术
:目前众多应用软件的开发是以数据为中心,对其进行增、删、改、查,进而实现绝大部分业务处理的功能。通常在一个应用程序的开发过程中,对数据表编写实体类和增、删、改、查方法时,都会存在着一些相同的操作过程和操作方法,由于目前代码的编写主要依靠程序员手工进行,势必需要大量的人力和时间进行重复性的代码编写工作。同时,程序员的编码风格还会有所区别,不利于程序的后期维护。现在虽然已有一些代码生成方法和系统,但主要存在以下几个问题:1、通常是针对某一种特定的系统开发的,不具有通用性,也不可避免代码生成过程中的重复性工作。且现有的代码生成器一般只涉及程序开发过程中的一部分,如Java代码、专门的DAO或脚本生成器,没有一种前台到后端可完全定制的代码生成平台。2、代码生成器的输入一般是详细设计文档,多为Xml、Excel等格式,需要定义较为精确的格式,比如几行几列,每一行列表示的含义等,当修改其中一部分定义时,往往会涉及较大范围的改动。特别地,由于系统间存在或多或少的差异性,将一套系统的定义应用于另一套系统时,时常会出现兼容性、一致性等方面的问题,极大地限制了代码生成器的广泛应用。3、输入到输出的过程表现为一个黑箱模型,只有代码生成后才能验证模板的正确性与适用性,若生成的代码存在问题,则需要重新定义或修改模板,并重复整个过程,无法实现生成过程的可视化、代码的实时预览、系统参数的动态调整以及个性化代码模板的灵活配置等功能。综上,现有的代码生成方法和系统在广泛应用方面还存在较大的局限性,有待进一步改进和提高。技术实现要素:本发明实施例提供一种代码生成方法,用以解决现有代码生成方法缺乏通用性、生成过程无法可视化的问题,该方法包括:对PDM(PhysicalDataModel,物理数据模型)文件进行语义分析,获得PDM文件对象;将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;将表目录树显示在可视化界面中;在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置;对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置;将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;在确认预览代码正确之后,生成与预览代码相对应的前后台代码。一个实施例中,对PDM文件进行语义分析,包括:解析PDM文件中的表名、字段名、字段属性及额外语义之一或组合。一个实施例中,对所确定的表对象进行表结构信息配置,包括:对所确定的表对象进行字段属性、子表和外键表的配置。一个实施例中,字段属性包括:字段顺序、数据类型、长度、精度、是否为空、是否为SQL(StructuredQueryLanguage,结构化查询语言)条件及对应前台界面控件的选择之一或组合。一个实施例中,所述的代码生成方法还包括:若预览代码存在问题,则修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合,重新生成预览代码。本发明实施例还提供一种代码生成装置,用以解决现有代码生成方法缺乏通用性、生成过程无法可视化的问题,该装置包括:表结构信息解析模块,用于对PDM文件进行语义分析,获得PDM文件对象;将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;将表目录树显示在可视化界面中;代码生成引擎,用于在可视化界面中确定需要生成代码的表对象,对所确定的表对象 进行表结构信息配置;对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置;代码预览模块,用于将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;代码输出模块,用于在确认预览代码正确之后,生成与预览代码相对应的前后台代码。一个实施例中,表结构信息解析模块具体用于:在对PDM文件进行语义分析时,解析PDM文件中的表名、字段名、字段属性及额外语义之一或组合。一个实施例中,代码生成引擎具体用于:在对所确定的表对象进行表结构信息配置时,对表对象进行字段属性、子表和外键表的配置。一个实施例中,代码生成引擎具体用于:在对表对象进行字段属性的配置时,对字段顺序、数据类型、长度、精度、是否为空、是否为SQL条件及对应前台界面控件的选择之一或组合进行配置。一个实施例中,代码生成引擎还用于:在预览代码存在问题时,修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合;代码预览模块还用于:在代码生成引擎修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合后,重新生成预览代码。本发明实施例中,对PDM文件进行语义分析,获得PDM文件对象;将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;将表目录树显示在可视化界面中;在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置;对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置;将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;在确认预览代码正确之后,生成与预览代码相对应的前后台代码;可以解决现有代码生成方法缺乏通用性、生成过程无法可视化的问题,提高软件程序开发效率、降低开发成本、缩短开发周期。进一步的,若预览代码存在问题,则修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合,重新生成预览代码;可以解决现有代码生成方法系统参数、代码模板无法动态调整的问题,进一步提高软件程序开发效率、降低开发成本、 缩短开发周期。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本发明实施例中代码生成方法的示意图;图2为本发明实施例中可视化界面的实例图;图3为本发明实施例中在可视化界面中进行字段属性配置的示例图;图4为本发明实施例中在可视化界面中进行外键表配置的示例图;图5为本发明实施例中在可视化界面中进行自定义模板配置的示例图;图6为本发明实施例中可视化界面中自定义模板选择对话框的示例图;图7为本发明实施例中可视化界面中自定义模板文件编辑界面的示例图;图8为本发明实施例中可视化界面中变量设置界面的示例图;图9为本发明实施例中可视化界面中数据类型设置界面的示例图;图10为本发明实施例中可视化界面中数据库默认对照类型设置界面的示例图;图11为本发明实施例中可视化界面中代码预览及生成界面的示例图;图12为本发明实施例中可视化界面中预览代码示例图;图13为本发明实施例中可视化界面中文件生成日志示例图;图14为本发明实施例中代码生成装置的示意图;图15为本发明实施例中代码生成装置的应用示例图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。鉴于现有技术的不足,本发明实施例提供一种代码生成方法。本发明实施例的代码生成方法是基于语义分析的代码自动生成方法,旨在解决现有代码生成方法缺乏通用性、生 成过程无法可视化的问题,从而提高软件程序开发效率、降低开发成本、缩短开发周期。图1为本发明实施例中代码生成方法的示意图。如图1所示,本发明实施例中代码生成方法可以包括:步骤101、对PDM文件进行语义分析,获得PDM文件对象;步骤102、将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;步骤103、将表目录树显示在可视化界面中;步骤104、在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置;步骤105、对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置;步骤106、将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;步骤107、在确认预览代码正确之后,生成与预览代码相对应的前后台代码。由图1所示流程可以得知,本发明实施例将代码自动生成的输入统一为PDM文件,能够提供系统初始设计所需要的基础元素,以及相关元素之间的关系,使得系统间无改动直接复用成为可能;同时,生成过程的可视化、生成代码的实时预览以及个性化代码模板(自定义模板)的灵活配置等功能,均使得代码生成方法的通用性和普遍适用性得到较大的提升,大大降低开发成本,缩短开发周期,提高产品质量。具体实施时,先对PDM文件进行语义分析,获得PDM文件对象,将PDM文件对象转换为表目录树,将表目录树显示在可视化界面中。其中,对输入的PDM文件进行语义分析,例如可以包括:解析PDM文件中的表名、字段名、字段属性(类型、长度等)、额外语义(字典值)等之一或组合。表目录树包含与PDM文件对象对应的表对象。表目录树可以支持模糊搜索。图2示出了本发明实施例中可视化界面的一个实例图。将表目录树显示在可视化界面之后,在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置。其中对所确定的表对象进行表结构信息配置,可以包括:对所确定的表对象进行字段属性、子表和外键表的配置。下面举一例说明进行表结构信息配置。本例中,可视化界面中包含多个菜单,在可视化界面中选中需要生成代码的表对象后,字段等信息会显示在可视化界面的一菜单例如“表选择区”菜单内,在该菜单中可设置字段属性、子表、外键表。字段属性的修改包括:字段顺序、数据类型、长度、精度、是否为空、是否为SQL条件、前台界面控件的选择等之一或组合,图3示出了本发明实施例中在可视化界面中进行字段属性配置的示例图;子表设置:在“表选择区”菜单tab页中子表区域可根据需要点击“增加子表”选项和“删除子表”选项来增加和删除子表,点击“增加子表”选项会弹出表选择对话框,在对话框中可以选择子表,双击子表后,列表自动显示子表信息;外键表设置:在“表选择区”菜单tab页列表中的外键对应表列可以修改,点击该单元格会弹出表选择对话框,图4示出了本发明实施例中在可视化界面中进行外键表配置的示例图。在对话框中可以选择修改字段对应的外键表,双击表节点后,该单元格会自动设置成选择表的表名。具体实施时,还需对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置。例如可以进行系统配置,主要包括配置自定义模板,对系统参数和自定义参数进行配置,如配置变量、数据类型设置等。还可以在可视化界面的一菜单例如“代码生成区”菜单中选择所需生成的系统代码模板。下面举一例说明进行系统配置,主要包括自定义模板、变量、数据类型设置等。图5为本例中在可视化界面中进行自定义模板配置的示例图。在可视化界面左上角菜单区点击系统配置-->模板配置菜单,弹出模板配置界面,如图5所示。点击“增加模板”选项,模板列表会自动增加一行,分别输入模板名称,点击模板文件列则弹出选择模板文件对话框,图6为本例中可视化界面中自定义模板选择对话框的示例图。选择编写好的模板后,模板的文件名会自动设置到模板名称列,再输入“输出文件根目录”、“文件后缀”值;增加模板,或修改模板后点击“保存”选项,可以保存该模板;点击“编辑”选项,弹出选择行的模板文件内容编辑窗口,如图7所示为本例中可视化界面中自定义模板文件编辑界面的示例图,可以编辑模板内容,点击编辑窗口下方的“保存”选项则可以保存修改内容,点击编辑窗口下方的“取消”选项则操作取消;点击“删除”选项,则可以删除选择行的模板信息。对系统参数和自定义参数进行配置时,变量配置主要设置输出文件根目录、表名前缀、变量设置。图8为本例中可视化界面中变量设置界面的示例图,如图8所示,点击“增加变量”选择变量列表会自动增加一行,输入变量名称、类型、变量值,点击“保存”选项则可保存设置变量,实现参数变量的动态实时设定和调整。对系统参数和自定义参数进行配置时,数据类型设置主要是设置数据类型和编程语言 类型对应关系,生成代码时根据类型对照设置将数据类型转化成编程语言程序类型。图9为本例中可视化界面中数据类型设置界面的示例图,如图9所示,点击“增加类型”选项自动增加一行数据类型设置,输入数据类型、编程语言程序类型、设置默认类型;设置默认类型有以下几个数据库类型对照,如图10所示为可视化界面中数据库默认对照类型设置界面的示例图,选择数据库后自动设置成该数据库默认对照类型。实施例中,在“代码生成区”菜单中选择所需生成的系统代码模板时,可视化界面中可设有一“模板名称”菜单,该菜单可列为下拉框,选择一个模板后,模板文件、输出文件根目录、输出包、后缀,会自动根据模板设置里的值进行联动。具体实施时,将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,可生成预览代码。例如在可视化界面中选择一个或多个模板,点击“生成预览”选项,根据勾选的模板,生成预览代码的各tab页签,如图11所示的代码预览及生成界面的示例图所示。可方便地预览生成的代码,一个预览代码示例参见图12的预览代码示例图。在确认预览代码正确之后,生成与预览代码相对应的前后台代码。若预览代码存在问题,则修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合,重新生成预览代码。例如,若某个代码文件或某段代码存在问题,则实时修改对应的模板,并重新生成该模板的预览代码。如果某个文件生成有问题,可以查看详细的生成日志,如图13所示的文件生成日志示例图所示。根据文件生成日志中的错误提示,修改对应的模板并重新生成预览。确认代码无问题后,即可生成对应的前后台代码。例如,可以在可视化界面中选择一个或多个模板,点击“生成文件”选项,根据勾选的模板,自动生成文件,包括Action层、Service层、DAO层、VO层、前台页面(Mxml、ActionScript)等代码,同时在xml中注册bean和action信息。如果勾选了“是否生成子表”选项,子表也会按照模板一同生成,生成文件的规则如附表1所示。表1代码自动生成方法的文件生成规则表文件属性值备注文件名选择表的表名转化成类名+后缀名文件绝对路径生成文件根目录+包名文件内容按模板生成实施例中,可以通过JunJava、FreeMarker、velocity等Java模板引擎完成类似代码的本地创建,生成的代码为文件,非常规范和标准,并且有代码高亮显示等效果。这些代码按照标准的生成格式进行生成,开发人员几乎可以完全拷贝实际需要的大部分代码,进而将时间用于编写业务逻辑,从而避免了很多重复操作。由上述实施例可知,本发明实施例提供的代码生成方法,可以实现各类系统代码的自动生成,结合可视化界面和灵活配置的自定义模板,进而有效避免代码开发过程中重复性工作,并使得生成过程可视化、简化,提高软件程序开发效率。基于同一发明构思,本发明实施例中还提供了一种代码生成装置,如下面的实施例所述。由于代码生成装置解决问题的原理与代码生成方法相似,因此代码生成装置的实施可以参见代码生成方法的实施,重复之处不再赘述。图14为本发明实施例中代码生成装置的示意图。如图14所示,本发明实施例中代码生成装置可以包括:表结构信息解析模块141,用于对PDM文件进行语义分析,获得PDM文件对象;将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;将表目录树显示在可视化界面中;代码生成引擎142,用于在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置;对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置;代码预览模块143,用于将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;代码输出模块144,用于在确认预览代码正确之后,生成与预览代码相对应的前后台代码。具体实施时,表结构信息解析模块141具体可以用于:在对PDM文件进行语义分析时,解析PDM文件中的表名、字段名、字段属性及额外语义之一或组合。具体实施时,代码生成引擎142具体可以用于:在对所确定的表对象进行表结构信息配置时,对表对象进行字段属性、子表和外键表的配置。具体实施时,代码生成引擎142具体可以用于:在对表对象进行字段属性的配置时,对字段顺序、数据类型、长度、精度、是否为空、 是否为SQL条件及对应前台界面控件的选择之一或组合进行配置。具体实施时,代码生成引擎142还可以用于:在预览代码存在问题时,修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合;代码预览模块143还可以用于:在代码生成引擎修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合后,重新生成预览代码。图15为本发明实施例中代码生成装置的应用示例图。如图15所示,应用该代码生成装置自动生成代码的过程可以包括:S1、表结构信息解析模块对输入的PDM文件进行语义分析,获得PDM文件对象;将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;将表目录树显示在可视化界面中;S2、代码生成引擎在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置,包括进行表配置:字段属性、子表和外键表配置;S3、代码生成引擎在可视化界面中进行系统配置,包括进行自定义模板配置,系统参数和自定义参数配置(包括变量配置和数据类型配置);S4、代码生成引擎在模板库中进行系统模板配置;S5、代码预览模块将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;S6、代码生成引擎在预览代码存在问题时,修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合;代码预览模块重新生成预览代码;S7、代码输出模块在确认预览代码正确之后,生成与预览代码相对应的前后台代码,例如输出As文件、Xml文件、java文件等。综上所述,本发明实施例中,对PDM文件进行语义分析,获得PDM文件对象;将PDM文件对象转换为表目录树,其中,表目录树包含与PDM文件对象对应的表对象;将表目录树显示在可视化界面中;在可视化界面中确定需要生成代码的表对象,对所确定的表对象进行表结构信息配置;对系统参数和系统代码模板进行配置,对自定义参数和自定义模板进行配置;将表结构信息、系统参数和自定义参数,填充至由系统代码模板和自定义模板构成的模板群中,生成预览代码;在确认预览代码正确之后,生成与预览代码相对应的前后台代码,可以解决现有代码生成方法缺乏通用性、生成过程无法可视化的问题,提高软件程序开发效率、降低开发成本、缩短开发周期。进一步的,若预览代码存在问题,则修改相应的表结构信息、系统参数、自定义参数、系统代码模板和自定义模板之一或组合,重新生成预览代码;可以解决现有代码生成方法系统参数、代码模板无法动态调整的问题,进一步提高软件程序开发效率、降低开发成本、缩短开发周期。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1