一种代码自动生成方法及装置制造方法及图纸

技术编号:33536967 阅读:20 留言:0更新日期:2022-05-19 02:20
本发明专利技术提供了一种代码自动生成方法及装置,该方法包括:接收用户编写的模型描述语言生成代码请求;根据代码自动生成请求调用模板解析引擎,模板解析引擎通过逐行解析并检索目标代码模板;解析引擎解析模型描述语言中的业务属性集合、样式属性集合替换目标代码模板中的占位符,得到生成代码。本发明专利技术的代码自动生成方法中,可以按照用户编写的模型描述语言解析确定目标代码模板,进而用业务属性、样式属性替换目标代码模板中的占位符,便可得到自动生成的代码和数据库表,更加智能,灵活,另外,在需要生成其他类型的代码时,只需要对代码模板库扩展即可,缓解了现有的代码自动生成方法中,配置繁杂且代码生成的扩展能力差的技术问题。题。题。

【技术实现步骤摘要】
一种代码自动生成方法及装置


[0001]本专利技术涉及软件工程的
,特别是代码自动生成方法及装置。

技术介绍

[0002]代码生成技术是一种利用程序生成代码的技术,它用程序来编程,致力于解放编码生产力。代码生成的原理是读取工程领域元数据,按照一定的设计模式和规则,结合产生出符合编程规范的源代码。常用的代码生成方法主要有以下几种:(1)基于模板生成代码(目前常用工具有FreeMarker、Velocity、JET等)(2)基于模型生成代码(3)基于DOM生成代码(4)基于代码注释解析生成代码(5)基于对象关系生成代码等。
[0003]现有的代码生成技术均能提高软件开发效率而且软件代码风格高度一致,但也存在以下的缺陷问题:
[0004](1)研发人员参与度较高、需要一定的开发经验才能掌握。如基于模板生成代码需要编写模板文件;基于模型生成代码建模步骤复杂(需要构建MDA四层元模型体系);基于DOM生成代码需要利用XML构建DOM语法树;基于代码注释解析生成代码需要输出伪代码逻辑;基于对象关系生成代码需要具备一定的面向对象和关系数据库基础。
[0005](2)页面组织结构固定单一,组件元素无法全覆盖,个性化页面定制困难,无法完全体现“设计即编程”的思想。
[0006]目前存在的代码生成技术生成的前端页面大都是与数据库、实体类元数据对应的列表和表单页面,页面表现形式固定单一(各组件样式已固定),数据库、实体类字段外的HTML表现形式(如字体,段落,分割线...)等无法与页面深度融合。/>
技术实现思路

[0007]本专利技术的目的在于克服现有技术中的不足,提供一种代码自动生成方法及装置,操作简单,可扩展性强,可省略复杂的设计、建模步骤,提高方法的普适性。
[0008]为达到上述目的,本专利技术是采用下述技术方案实现的:
[0009]第一方面,本专利技术提供一种代码自动生成方法,包括以下步骤:
[0010]接收用户发送的模型描述语言的代码自动生成请求,其中,代码自动生成请求中至少携带模型描述语言的以下信息:元数据集合、目标数据;
[0011]根据模型描述语言代码自动生成请求调用解析引擎获得目标代码模板,所述目标代码模板与代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含占位符;
[0012]根据模型描述语言代码自动生成请求中的目标数据替换目标代码模板中的占位符,得到前端代码文件;
[0013]根据模型描述语言代码自动生成请求中的数据库表相关信息、元数据集合调用数据库模式定义语言,得到数据库表;
[0014]根据数据库表结构的代码生成工具生成控制层、业务逻辑层、数据访问层代码,得到后端代码文件。
[0015]进一步的,根据模型描述语言代码自动生成请求调用解析引擎获得目标代码模板,包括:
[0016]根据分割规则,所述分割规则包括巴科斯范式规则和自定义扩展规则,所述分割规则包括巴科斯范式规则和自定义扩展规则,分割模型描述语言请求,得到多条模型描述语言分割子语句;
[0017]根据模型描述语言分割子语句第一句,通过判断识别得到前端UI框架名称;
[0018]根据所述UI框架名称,从数据库得到前端框架中已经预设的需要引入的JS文件信息、前端HTML的头文件信息、其他基础引入文件字符串;
[0019]遍历每一条模型描述语言分割子语句,根据规则解析得到控件名称;
[0020]根据控件名称匹配与之名称相同的模板解析类,得到目标代码HTML模板、JS脚本模板。
[0021]进一步的,根据模型描述语言代码自动生成请求中的目标数据替换目标代码模板中的占位符,得到前端代码文件的方法包括:
[0022]步骤A:根据规则解析模型语言中的目标数据,得到样式属性集合、业务属性集合;所述目标数据包括样式属性和业务属性;
[0023]步骤B:根据所述样式属性集合、业务属性集合替换所述目标代码HTML模板、JS脚本模板中的占位符,得到自动生成的前端子目标代码字符串;
[0024]步骤C:重复执行步骤A

B,直至全部模型语言描述分割语句解析结束,得到各模型描述语言分割子语句自动生成的前端子目标代码字符串;
[0025]步骤D:将所述页面头文件和所述各模型描述语言分割子语句自动生成的前端子目标代码字符串进行拼接,得到前端全部目标代码字符串;
[0026]步骤E:根据默认约定命名方式和项目路径将所述前端全部目标代码字符串写入文件,得到前端目标代码文件。
[0027]进一步的,根据模型描述语言代码自动生成请求中的元数据集合调用数据库模式定义语言,得到数据库表的方法包括:
[0028]根据模型描述语言分割子语句第二句,通过判断识别得到数据库表相关信息;
[0029]根据规则解析模型语言中的元数据属性,获得元数据字段集合;
[0030]根据所述数据库表相关信息和所述元数据字段集合调用数据库模式定义语言,得到数据库表;所述数据库表相关信息包括表名称、表注释。
[0031]进一步的,根据数据库表结构的代码生成工具生成控制层、业务逻辑层、数据访问层代码,得到后端代码文件的方法包括:
[0032]根据数据库表的代码生成工具生成控制层、业务逻辑层、数据访问层代码,得到全部后端目标代码;
[0033]根据约定命名方式和项目路径将所述全部后端目标代码写入文件,得到后端目标代码文件。
[0034]进一步的,所述方法还包括:根据前端代码文件、后端代码文件和数据库表进行一键部署,完成功能应用发布。
[0035]第二方面,本专利技术提供一种代码自动生成装置,所述装置包括:
[0036]接收模块,用于接收用户发送的模型描述语言的代码自动生成请求,其中,代码自
动生成请求中至少携带模型描述语言的以下信息:元数据集合、目标数据;
[0037]解析模块,用于根据模型描述语言代码自动生成请求调用解析引擎获得目标代码模板,所述目标代码模板与代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含占位符;
[0038]前端输出模块,用于根据模型描述语言代码自动生成请求中的目标数据替换目标代码模板中的占位符,得到前端代码文件;
[0039]数据表输出模块,用于根据模型描述语言代码自动生成请求中的数据库表相关信息、元数据集合调用数据库模式定义语言,得到数据库表;
[0040]后端输出模块,用于根据数据库表结构的代码生成工具生成控制层、业务逻辑层、数据访问层代码,得到后端代码文件。
[0041]进一步的,所述解析模块根据模型描述语言代码自动生成请求调用解析引擎获得目标代码模板的方法包括:
[0042]根据分割规则,所述分割规则包括巴科斯范式规则和自定义扩展规则,所述分割规则包括巴科斯范式规则和自定义扩展规则,分割模型描述语言请求,得到多条模型描述语言分割子语句;
[0043]根据模型描述语言分割子语本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种代码自动生成方法,其特征在于,包括以下步骤:接收用户发送的模型描述语言的代码自动生成请求,其中,代码自动生成请求中至少携带模型描述语言的以下信息:元数据集合、目标数据;根据模型描述语言代码自动生成请求调用解析引擎获得目标代码模板,所述目标代码模板与代码自动生成请求中携带的信息相匹配,所述目标代码模板中包含占位符;根据模型描述语言代码自动生成请求中的目标数据替换目标代码模板中的占位符,得到前端代码文件;根据模型描述语言代码自动生成请求中的数据库表相关信息、元数据集合调用数据库模式定义语言,得到数据库表;根据数据库表结构的代码生成工具生成控制层、业务逻辑层、数据访问层代码,得到后端代码文件。2.根据权利要求1所述的代码自动生成方法,其特征在于,根据模型描述语言代码自动生成请求调用解析引擎获得目标代码模板,包括:根据分割规则,所述分割规则包括巴科斯范式规则和自定义扩展规则,所述分割规则包括巴科斯范式规则和自定义扩展规则,分割模型描述语言请求,得到多条模型描述语言分割子语句;根据模型描述语言分割子语句第一句,通过判断识别得到前端UI框架名称;根据所述UI框架名称,从数据库得到前端框架中已经预设的需要引入的JS文件信息、前端HTML的头文件信息、其他基础引入文件字符串;遍历每一条模型描述语言分割子语句,根据规则解析得到控件名称;根据控件名称匹配与之名称相同的模板解析类,得到目标代码HTML模板、JS脚本模板。3.根据权利要求2所述的代码自动生成方法,其特征在于,根据模型描述语言代码自动生成请求中的目标数据替换目标代码模板中的占位符,得到前端代码文件的方法包括:步骤A:根据规则解析模型语言中的目标数据,得到样式属性集合、业务属性集合;所述目标数据包括样式属性和业务属性;步骤B:根据所述样式属性集合、业务属性集合替换所述目标代码HTML模板、JS脚本模板中的占位符,得到自动生成的前端子目标代码字符串;步骤C:重复执行步骤A

B,直至全部模型语言描述分割语句解析结束,得到各模型描述语言分割子语句自动生成的前端子目标代码字符串;步骤D:将所述页面头文件和所述各模型描述语言分割子语句自动生成的前端子目标代码字符串进行拼接,得到前端全部目标代码字符串;步骤E:根据默认约定命名方式和项目路径将所述前端全部目标代码字符串写入文件,得到前端目标代码文件。4.根据权利要求3所述的代码自动生成方法,其特征在于,根据模型描述语言代码自动生成请求中的元数据集合调用数据库模式定义语言,得到数据库表的方法包括:根据模型描述语言分割子语句第二句,通过判断识别得到数据库表相关信息;根据规则解析模型语言中的元数据属性,获得元数据字段集合;根据所述数据库表相关信息和所述元数据字段集合调用数据库模式定义语言,得到数据库表;所述数据库表相关信息包括表名称、表注释。
5.根据权利要求4所述的代码自动生成方法,其特征在于,根据数据库表结构的代码生成工具生成控制层、业务逻辑层、数据访问层代码,得到后端代码文件的方法包括:根据数据库表的代码生成...

【专利技术属性】
技术研发人员:郭赛于会敏
申请(专利权)人:徐工汉云技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1