CN109189379A - 代码生成方法和装置 - Google Patents

代码生成方法和装置 Download PDF

Info

Publication number
CN109189379A
CN109189379A CN201811024915.0A CN201811024915A CN109189379A CN 109189379 A CN109189379 A CN 109189379A CN 201811024915 A CN201811024915 A CN 201811024915A CN 109189379 A CN109189379 A CN 109189379A
Authority
CN
China
Prior art keywords
code
business function
annotating information
field
data
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
Application number
CN201811024915.0A
Other languages
English (en)
Inventor
曹丁溧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201811024915.0A priority Critical patent/CN109189379A/zh
Publication of CN109189379A publication Critical patent/CN109189379A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了代码生成方法和装置。该方法的一具体实施方式包括:获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述与预设的业务功能字段对应的数据相关联的操作;基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码。开发人员仅需根据需要实现的业务功能,设置与业务功能相关的业务功能字段和业务功能对应的注解信息,利用预设代码生成模板和业务功能对应的注解信息,自动生成业务功能的各个部分的代码,同时,在业务功能发生变化时,仅需对与业务功能相关的字段和注解信息进行调整,即可生成发生变化后的业务功能的代码,减少了代码生成过程的开销。

Description

代码生成方法和装置
技术领域
本申请涉及计算机领域,具体涉及互联网领域,尤其涉及代码生成方法和装置。
背景技术
代码生成工具是帮助开发人员在开发时自动生成代码的工具。目前,代码生成工具通常是利用代码生成模板生成诸如对字段对应的数据进行增加、删除、修改的常规操作的代码。
发明内容
本申请提供了代码生成方法和装置。
本申请提供了代码生成方法,该方法包括:获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述与预设的业务功能字段对应的数据相关联的操作;基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。
本申请提供了代码生成装置,该装置包括:获取单元,被配置为获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述以下项:业务功能字段、与预设的业务功能字段对应的数据相关联的操作;生成单元,被配置为基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。
本申请提供的代码生成方法和装置,通过获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述与预设的业务功能字段对应的数据相关联的操作;基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。实现了开发人员仅需根据需要实现的业务功能,设置与业务功能相关的业务功能字段和业务功能对应的注解信息,利用预设代码生成模板和业务功能对应的注解信息,自动生成业务功能的各个部分的代码,同时,在业务功能发生变化时,仅需对与业务功能相关的字段和注解信息进行调整,即可生成发生变化后的业务功能的代码,减少了代码生成过程的开销。并且,生成的业务功能的代码没有特定的原语,均为开发人员熟知的语句,无自定义语法,无自定义标签,无自定义封装,降低了开发的难度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了适于用来实现本申请的实施例的示例性系统架构;
图2示出了根据本申请的代码生成方法的一个实施例的流程图;
图3示出了适用于实现本申请的代码生成方法的一个示例结构图;
图4示出了根据本申请的代码生成装置的一个实施例的结构示意图;
图5示出了适于用来实现本申请实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关联部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参考图1,其示出了适于用来实现本申请的实施例的示例性系统架构。
如图1所示,终端101、网络102、服务器103。网络102可以为有线通信网络或无线通信网络。
终端101的用户可以为业务功能的开发人员。终端101的用户可以设置与待生成代码的业务功能相关联的字段、业务功能对应的注解信息,终端101可以将业务功能相关联的字段、业务功能对应的注解信息发送至服务器103。服务器103运行有代码生成模板,代码生成模板可以采用Velocity、Freemarker等。服务器103可以利用代码生成模板基于业务功能对应的注解信息,生成业务功能的代码,将业务功能的代码发送至终端101。
请参考图2,其示出了根据本申请的代码生成方法的一个实施例的流程。本申请实施例所提供的代码生成方法可以由服务器(例如图1中的服务器103执行)。该方法包括以下步骤:
步骤201,获取业务功能对应的注解信息。
在本实施例中,为实现业务功能,需要生成业务功能的代码。
例如,一个论坛类型的网站需要具有用户登录功能、帖子管理功能等业务功能,在开发人员开发论坛类型的网站的过程中,需要分别生成用户登录功能的代码、帖子管理功能的代码等业务功能的代码。
在本实施例中,对于一个项目中需要实现的每一个业务功能,均可以获取业务功能对应的注解信息,基于业务功能对应的注解信息和预设的代码生成模板,生成业务功能的代码,从而,实现业务功能。
在本实施例中,生成的业务功能的代码可以为Java代码,对于一个业务功能,可以将业务功能字段称之为业务功能字段,可以将业务功能字段的集合称之为该业务功能的Java模型。开发人员可以预先设置业务功能字段和业务功能对应的注解信息。各种注解信息的类型均可以为Java中的注解,Java中的注解可以简称为Java注解。一个业务功能对应的注解信息用于描述以下项:与该业务功能的Java模型中的业务功能字段对应的数据相关联的操作。
例如,对于用户登录功能这一业务功能,业务功能字段包含用户名、密码等字段,换言之,该用户的登录功能的Java模型中包含用户名、密码等字段。用户名字段对应的数据为该用户的姓名或用户标识,密码字段对应的数据为用户的登录密码。对于每一个用户,均可以预先在数据库中分别存储有用户名、密码等字段对应的数据。与业务功能字段对应的数据相关联的操作可以包括:增加用户名等字段对应的数据、删除用户名等字段对应的数据、修改用户名等字段对应的数据、查询用户名等字段对应的数据、导出用户名等字段对应的数据、基于用户名等字段对应的数据自动生成相应的报表、对用户名等字段对应的数据的访问方是否具有访问权限进行校验等。
步骤202,基于业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码。
在本实施例中,在获取业务功能对应的注解信息,对业务功能对应的注解信息进行解析之后,可以确定与业务功能字段对应的数据相关联的操作。然后,可以利用预设代码生成模板基于注解信息,生成业务功能的代码。预设代码生成模板也可称之为Java模板引擎。预设代码生成模板可以采用Velocity、Freemarker等。
例如,在获取一个业务功能对应的注解信息,对该业务功能对应的注解信息进行解析之后,确定出与业务功能字段对应的数据相关联的操作包括:增加业务功能字段对应的数据、删除业务功能字段对应的数据、修改业务功能字段对应的数据、查询业务功能字段对应的数据、导出业务功能字段对应的数据、基于业务功能字段对应的数据生成相应的报表、对业务功能字段对应的数据的访问方是否具有访问权限进行校验等操作。可以利用预设代码生成模板分别生成用于增加业务功能字段对应的数据的代码、用于删除业务功能字段对应的数据的代码、用于修改业务功能字段对应的数据的代码、用于查询业务功能字段对应的数据的代码、用于导出业务功能字段对应的数据的代码、用于基于业务功能字段对应的数据生成相应的报表的代码、用于对业务功能字段对应的数据的访问方是否具有访问权限进行校验的代码。
在本实施例中,开发人员仅需根据需要实现的业务功能,设置与业务功能相关的字段。业务功能字段的集合称之为该业务功能的Java模型。开发人员设置业务功能对应的注解信息也可称之为对业务功能的Java模型进行扩展。然后,利用预设代码生成模板和业务功能对应的注解信息,自动生成业务功能的代码。在业务功能发生变化时,仅需对业务功能的Java模型中的业务功能字段和业务功能对应的注解信息中描述的内容进行调整,即可生成发生变化后的业务功能的代码。并且,生成的业务功能的代码没有特定的原语,均为开发人员熟知的语句,无自定义语法,无自定义标签,无自定义封装,降低了开发的难度。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:操作注解信息。操作注解信息用于描述可对业务功能字段对应的数据进行的操作。操作注解信息可以进一步包括:控制层注解信息、服务层注解信息、数据访问层注解信息。业务功能包含多个操作,需要生成每一个操作的代码。一个操作的代码可以包括:Java中的MVC模式中的控制层即Action层中的该操作对应的操作类即Action类、MVC模式中的服务层即Service层中该操作对应的服务类即Service类、MVC模式中的数据访问层即Dao层中与该操作对应的数据访问类即Dao类。生成一个操作的代码相当于生成该操作对应的Action类、对应于操作对应的Action类的Service类、对应于操作对应的Action类的Dao类。控制层注解信息具有注解名称,例如GenAction。控制层注解信息可以用于描述需要生成的Action类的类型,描述需要生成的Action类的类型可以相当于描述可对业务功能字段对应的数据进行的操作的类型。需要生成的Action类的类型可以包括:增加、删除、修改、查询、导出、统计表、批量导入、批量更新等类型。服务层注解信息具有注解名称,例如GenService。服务层注解信息用于描述服务层中的Service类的名称。Service类的名称可以包括:对应于控制层中的Action类的增加、删除、修改、查询、导出、统计表、批量导入、批量更新等类型的名称。数据访问层注解信息具有注解名称,例如GenDao。数据访问层注解信息可以用于描述数据访问层中的Dao类的名称。Dao类的名称可以包括:对应于控制层中的Action类的增加、删除、修改、查询、导出、统计表、批量导入、批量更新等类型的名称。
可以对控制层注解信息进行解析,确定需要生成的Action类的类型。利用预设代码生成模板生成增加、删除、修改、查询、导出、统计表、批量导入、批量更新等类型的Action类。可以对服务层注解信息进行解析,确定服务层中的Service类的名称。可以利用预设代码生成模板分别生成对应于需要生成的Action类的类型。生成具有服务层中的Service类的名称的对应于增加、删除、修改、查询、导出、统计表、批量导入、批量更新等类型的Action类的Service类。可以对数据访问层注解信息进行解析,确定数据访问层中的Dao类的名称。可以利用预设代码生成模板生成具有数据访问层中的Dao类的名称的对应于增加、删除、修改、查询、导出、统计表、批量导入、批量更新等类型的Action类的Dao类。从而,利用预设代码生成模板分别生成业务功能中的每一个可对业务功能字段对应的数据进行的操作对应的Action类、对应于该操作对应的Action类的Service类、对应于该操作对应的Action类的Dao类,进而生成业务功能中的每一个可对业务功能字段对应的数据进行的操作的代码。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息用于描述业务功能字段之间的级联关系。级联注解信息具有注解名称,例如GenCascade。可以对级联注解信息进行解析,确定具有级联关系的业务功能字段,利用预设代码生成模板生成级联展示代码。级联展示代码运行时用于根据级联关系展示具有级联关系的业务功能字段对应的数据。
例如,级联关系注解信息描述业务功能字段省份、城市、区域具有级联关系,级联关系注解信息描述的省份、城市、区域的级联关系可以表示为省份->城市->区域。可以生成用于根据省份、城市、区域的级联关系展示省份、城市、区域各自对应的数据的级联展示代码。级联展示代码运行时可以使得在前端的页面中用户选择省份字段对应的数据中的一个省份后,可以向用户显示用户选择的省份下的城市供用户选择,当用户选择一个城市后,可以向用户显示用户选择的城市下的区域供用户选择。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括字段注解信息,字段注解信息具有注解名称,例如GenField。字段注解信息用于描述业务功能字段的属性。可以对字段注解信息进行解析,确定业务功能字段的属性,利用预设代码生成模板生成字段处理代码。字段在前端的页面进行展示时,前端的页面中包含字段的输入区域例如输入框,用户可以在业务功能字段对应的输入区域中输入数据。在业务功能字段对应的输入区域中输入的数据为字段对应的输入数据。字段处理代码运行时用于执行以下操作:基于业务功能字段的属性对字段进行处理、基于业务功能字段的属性对业务功能字段对应的输入数据进行校验。
例如,业务功能字段的属性包括:字段的显示名称、字段的显示顺序、字段是否允许空值输入、字段是否可以被添加、字段是否可以被编辑、字段是否出现在列表页面、字段是否为密码字段、将密码字段加密存储、字段的最小长度、字段的最大长度、字段是否为邮箱字段、字段是否为手机号码字段、字段是否需要进行远程唯一性校验、字段是否为URL格式、字段是否为数字格式、字段是否为整数格式、数字字段允许的最大值、数字字段允许的最小值、字段的类型。字段的类型对应的操作方式包括:以文本域的方式操作字段、以富文本的方式操作字段、以日期控件的方式操作字段、以输入框的方式操作字段、以单文件的方式操作字段、以文档的方式操作字段、以视频的方式操作字段、以多文件的方式操作字段、以地理位置的方式操作字段、以颜色的方式操作字段。基于业务功能字段的属性对字段进行处理可以包括:按照字段的显示名称和字段的显示顺序显示字段,按照字段的类型对应的操作方式对字段进行操作。基于业务功能字段的属性对业务功能字段对应的输入数据进行校验可以包括:根据业务功能字段的属性中的字段是否允许空值输入、字段是否可以被添加、字段是否可以被编辑、字段是否出现在列表页面等各项进行相应的校验。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括菜单注解信息,菜单注解信息具有注解名称例如GenMenu。菜单注解信息用于描述需要生成在后台对业务功能字段对应的数据进行管理所需的菜单结构。可以解析菜单注解信息,确定需要生成在后台对字段对应的数据进行管理所需的菜单结构,利用预设代码生成模板生成在后台对字段对应的数据进行管理所需的菜单结构例如Java中的三级菜单结构。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括权限注解信息,权限注解信息具有注解名称例如GenRight。权限注解信息用于描述业务功能字段对应的数据的访问方是否具有预设权限,预设权限包括:操作权限、访问权限。操作权限可以包括增加业务功能字段对应的数据、删除业务功能字段对应的数据、修改业务功能字段对应的数据、查询业务功能字段对应的数据、导出业务功能字段对应的数据等操作的权限。操作权限还可以包括在前端的页面中的按钮进行操作的权限。访问权限为访问方访问业务功能字段对应的数据的权限。对于每一个业务功能字段,可以由用户分别设置业务功能字段对应的数据的访问方是否具有相应的预设权限,权限注解信息可以用于描述每一个业务功能字段对应的数据的访问方是否具有相应的预设权限。可以解析权限注解信息,确定业务功能字段对应的数据的访问方是否具有预设权限,可以利用预设代码生成模板生成权限管理代码和权限配置界面,权限管理代码运行时用于对与字段对应的数据的访问方是否具有预设权限进行校验,并且用户可以在权限配置界面设置相应的预设权限。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括日志记录注解信息,日志记录注解信息具有注解名称例如GenLog。日志记录注解信息可以用于描述对业务功能字段中的数据进行操作之后是否将操作记录在日志中、是否在页面上显示查看日志入口等。对于每一个业务功能字段,可以分别描述是否在对业务功能字段对应的数据进行操作之后,将对业务功能字段对应的数据进行的操作记录在日志中。可以解析日志记录注解信息,确定对业务功能字段对应的数据进行操作之后是否将操作记录在日志中、是否在页面上显示查看日志入口等。可以利用预设代码生成模板生成日志记录代码。日志记录代码运行时用于当日志记录注解信息中的业务功能字段对应的数据被操作时,将对该与业务功能相关联的对应的数据进行的操作记录在日志中。当日志记录注解信息描述在页面上显示查看日志入口时,日志记录代码运行时还用于在页面上显示查看日志入口。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括树形结构数据注解信息,树形结构数据注解信息具有注解名称例如GenTree。树形结构数据注解可以用于描述在后台进行管理时对应的数据具备树形结构的字段。可以解析树形结构数据注解信息,确定对应的数据具备树形结构的字段。可以利用预设代码生成模板生成树形结构数据处理代码,树形结构数据处理代码运行时用于以树形结构对应的处理方式对树形结构注解信息中描述的业务功能字段对应的数据进行处理。例如,在后台对对应的数据具有树形结构的字段对应的数据进行管理时,以树形结构展示该字段对应的数据中各个部分的数据。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括报表注解信息,报表注解信息具有注解名称例如GenReport。报表注解信息可以用于描述生成报表所基于的字段、在生成报表之前需要调用的处理程序、在生成报表之后需要调用的处理程序。可以解析报表注解信息,确定生成报表所基于的字段、在生成报表之前需要调用的处理程序、在生成报表之后需要调用的处理程序,可以利用预设代码生成模板生成报表处理代码,报表处理代码运行时用于调用生成报表之前需要调用的处理程序、获取生成报表所基于的字段对应的数据例如从数据库中读取出生成报表所基于的字段对应的数据并且利用获取到的数据生成报表,以及在生成报表之后,调用生成报表之后需要调用的处理程序。
请参考图3,其示出了适用于实现本申请的代码生成方法的一个示例结构图。
模型扩展模块包括业务功能的Java模型和业务功能对应的注解信息。代码生成引擎包括:扩展检查模块、数据库模型生成模块、基础数据生成模块、代码生成模块。模型扩展模块可以根据开发人员设置的业务功能字段,得到业务功能的Java模型,开发人员可以设置业务功能对应的注解信息描述可对业务功能字段对应的数据进行的操作、业务功能字段对应的数据的访问方的相关权限等。扩展检查模块可以用于在生成代码前,通过检测模块来检测开发人员是否正确设置了各个注解信息,以便开发人员进行修正,把问题在初期解决,避免了代码生成中或者生成后的各种错误,提高开发效率。用于存储与Java模型相关联的数据的数据库可以称之为数据库模型。数据库模型生成模块可以直接生成Java模型对应的数据库模型,Java模型对应的数据库模型中包含业务功能字段对应的字段、业务功能字段对应的数据。当业务功能的Java模型升级时,可以生成增量的DDL语句,增加、删除相应的业务功能字段以及更新数据库相应的业务功能字段对应的数据。基础数据生成模块可以将基础数据自动入库,即将基础数据写入到数据库模型中。基础数据包括注解信息中描述的内容。当基础数据更新时,可以生成增量的DML语句,对基础数据进行更新。代码生成模块可以解析业务功能对应的注解信息,将解析结果即注解信息中描述的内容作为模板引擎的模板变量,利用预设代码生成模板生成相应的业务功能的Action层、Service层、Dao层、View层的代码。基础框架系统可以为一个标准的Java Web框架系统,整合了SpringMVC、Hibernate、Freemarker等技术,Java Web框架系统包含安全验证、资源与授权、文档转换、视频转换、报表功能、数据库访问、JS&CSS自动压缩合并、动态验证码等基础功能。基础框架可以独立运行,不包含任何实际的业务逻辑。代码生成引擎生成的业务功能的代码可以运行在基础框架系统中。
请参考图4,作为对上述各图所示方法的实现,本申请提供了一种代码生成装置的一个实施例,该装置实施例与图2所示的方法实施例相对应。
如图4所示,本实施例的代码生成装置包括:获取单元401,生成单元402。其中,获取单元401被配置为获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述与预设的业务功能字段对应的数据相关联的操作;生成单元402被配置为基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:操作注解信息,操作注解信息用于描述可对业务功能字段对应的数据进行的操作,生成单元进一步被配置为:生成操作代码,所述操作代码运行时用于执行操作注解信息描述的可对业务功能字段对应的数据进行的操作,所述操作代码包括:所述操作对应的控制类、对应于所述操作对应的控制类的服务类、对应于所述操作对应的控制类的数据访问类。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:级联注解信息,级联注解信息用于描述业务功能字段之间的级联关系,生成单元进一步被配置为:生成级联展示代码,所述级联展示代码运行时用于根据级联关系展示具有级联关系的业务功能字段对应的数据。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:字段注解信息,字段注解信息用于描述业务功能字段的属性,生成单元进一步被配置为:生成字段处理代码,所述字段处理代码运行时用于执行以下操作:基于业务功能字段的属性对业务功能字段进行处理、基于业务功能字段的属性对业务功能字段对应的输入数据进行校验。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:权限注解信息,权限注解信息用于描述业务功能字段对应的数据的访问方是否具有预设权限,预设权限包括:操作权限、访问权限,生成单元进一步被配置为:生成权限管理代码和权限配置界面,权限管理代码运行时用于对业务功能字段对应的数据的访问方是否具有预设权限进行校验。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:日志记录注解信息,日志记录注解信息用于描述当对应的数据被操作时需要在日志中进行记录的业务功能字段,生成单元进一步被配置为:生成日志记录代码,所述日志记录代码运行时用于当日志记录注解信息中的业务功能字段对应的数据被操作时,将对所述业务功能字段对应的数据进行的操作记录在日志中。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:菜单注解信息,菜单注解信息用于描述需要生成对业务功能字段对应的数据进行管理所需的菜单结构,生成单元进一步被配置为:生成对业务功能字段对应的数据进行管理所需的菜单结构。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:树形结构注解信息,树形结构注解信息用于描述对应的数据具有树形结构的业务功能字段,生成单元进一步被配置为:生成树形结构数据处理代码,所述树形结构数据处理代码运行时用于以树形结构对应的处理方式对树形结构注解信息中描述的业务功能字段对应的数据进行处理。
在本实施例的一些可选的实现方式中,业务功能对应的注解信息包括:报表注解信息,所述报表注解信息用于描述生成报表所基于的字段、在生成报表之前需要调用的处理程序、在生成报表之后需要调用的处理程序,生成单元进一步被配置为:生成报表处理代码,所述报表处理代码运行时用于执行以下操作:调用生成报表之前需要调用的处理程序、获取生成报表所基于的字段对应的数据并且利用获取到的数据生成报表、调用生成报表之后需要调用的处理程序。
图5示出了适于用来实现本申请实施例的服务器的计算机系统的结构示意图。
如图5所示,计算机系统包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有计算机系统操作所需的各种程序和数据。CPU501、ROM502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:输入部分506;输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,本申请的实施例中描述的过程可以被实现为计算机程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包括用于执行流程图所示的方法的指令。该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
本申请还提供了一种服务器,该服务器可以配置有一个或多个处理器;存储器,用于存储一个或多个程序,一个或多个程序中可以包含用以执行上述实施例中描述的操作的指令。当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述实施例中描述的操作。
本申请还提供了一种计算机可读介质,该计算机可读介质可以是服务器中所包括的;也可以是单独存在,未装配入服务器中。上述计算机可读介质承载有一个或者多个程序,当一个或者多个程序被终端执行时,使得服务器:获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述与预设的业务功能字段对应的数据相关联的操作;基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。
需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术实施例,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术实施例。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术实施例。

Claims (20)

1.一种代码生成方法,所述方法包括:
获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述与预设的业务功能字段对应的数据相关联的操作;
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。
2.根据权利要求1所述的方法,所述业务功能对应的注解信息包括:操作注解信息,操作注解信息用于描述可对业务功能字段对应的数据进行的操作;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成操作代码,所述操作代码运行时用于执行操作注解信息描述的可对业务功能字段对应的数据进行的操作,所述操作代码包括:所述操作对应的控制类、对应于所述操作对应的控制类的服务类、对应于所述操作对应的控制类的数据访问类。
3.根据权利要求2所述的方法,所述业务功能对应的注解信息包括:级联注解信息,级联注解信息用于描述业务功能字段之间的级联关系;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成级联展示代码,所述级联展示代码运行时用于根据级联关系展示具有级联关系的业务功能字段对应的数据。
4.根据权利要求3所述的方法,所述业务功能对应的注解信息包括:字段注解信息,字段注解信息用于描述业务功能字段的属性;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成字段处理代码,所述字段处理代码运行时用于执行以下操作:基于业务功能字段的属性对业务功能字段进行处理、基于业务功能字段的属性对业务功能字段对应的输入数据进行校验。
5.根据权利要求4所述的方法,所述业务功能对应的注解信息包括:权限注解信息,权限注解信息用于描述业务功能字段对应的数据的访问方是否具有预设权限,预设权限包括:操作权限、访问权限;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成权限管理代码和权限配置界面,权限管理代码运行时用于对业务功能字段对应的数据的访问方是否具有预设权限进行校验。
6.根据权利要求5所述的方法,所述业务功能对应的注解信息包括:日志记录注解信息,日志记录注解信息用于描述当对应的数据被操作时需要在日志中进行记录的业务功能字段;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成日志记录代码,所述日志记录代码运行时用于当日志记录注解信息中的业务功能字段对应的数据被操作时,将对所述业务功能字段对应的数据进行的操作记录在日志中。
7.根据权利要求6所述的方法,所述业务功能对应的注解信息包括:菜单注解信息,菜单注解信息用于描述需要生成对业务功能字段对应的数据进行管理所需的菜单结构;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成对业务功能字段对应的数据进行管理所需的菜单结构。
8.根据权利要求7所述的方法,所述业务功能对应的注解信息包括:树形结构注解信息,树形结构注解信息用于描述对应的数据具有树形结构的业务功能字段;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成树形结构数据处理代码,所述树形结构数据处理代码运行时用于以树形结构对应的处理方式对树形结构注解信息中描述的业务功能字段对应的数据进行处理。
9.根据权利要求8所述的方法,所述业务功能对应的注解信息包括:报表注解信息,所述报表注解信息用于描述生成报表所基于的字段、在生成报表之前需要调用的处理程序、在生成报表之后需要调用的处理程序;以及
基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码包括:
生成报表处理代码,所述报表处理代码运行时用于执行以下操作:调用生成报表之前需要调用的处理程序、获取生成报表所基于的字段对应的数据并且利用获取到的数据生成报表、调用生成报表之后需要调用的处理程序。
10.一种代码生成装置,所述装置包括:
获取单元,被配置为获取业务功能对应的注解信息,所述业务功能对应的注解信息用于描述以下项:业务功能字段、与预设的业务功能字段对应的数据相关联的操作;
生成单元,被配置为基于所述业务功能对应的注解信息和预设代码生成模板,生成业务功能的代码,业务功能的代码运行时用于执行与预设的业务功能字段对应的数据相关联的操作。
11.根据权利要求10所述的装置,所述业务功能对应的注解信息包括:操作注解信息,操作注解信息用于描述可对业务功能字段对应的数据进行的操作,生成单元进一步被配置为:生成操作代码,所述操作代码运行时用于执行操作注解信息描述的可对业务功能字段对应的数据进行的操作,所述操作代码包括:所述操作对应的控制类、对应于所述操作对应的控制类的服务类、对应于所述操作对应的控制类的数据访问类。
12.根据权利要求11所述的装置,所述业务功能对应的注解信息包括:级联注解信息,级联注解信息用于描述业务功能字段之间的级联关系,生成单元进一步被配置为:生成级联展示代码,所述级联展示代码运行时用于根据级联关系展示具有级联关系的业务功能字段对应的数据。
13.根据权利要求12所述的装置,所述业务功能对应的注解信息包括:字段注解信息,字段注解信息用于描述业务功能字段的属性,生成单元进一步被配置为:生成字段处理代码,所述字段处理代码运行时用于执行以下操作:基于业务功能字段的属性对业务功能字段进行处理、基于业务功能字段的属性对业务功能字段对应的输入数据进行校验。
14.根据权利要求13所述的装置,业务功能对应的注解信息包括:权限注解信息,权限注解信息用于描述业务功能字段对应的数据的访问方是否具有预设权限,预设权限包括:操作权限、访问权限,生成单元进一步被配置为:生成权限管理代码和权限配置界面,权限管理代码运行时用于对业务功能字段对应的数据的访问方是否具有预设权限进行校验。
15.根据权利要求14所述的装置,所述业务功能对应的注解信息包括:日志记录注解信息,日志记录注解信息用于描述当对应的数据被操作时需要在日志中进行记录的业务功能字段,生成单元进一步被配置为:生成日志记录代码,所述日志记录代码运行时用于当日志记录注解信息中的业务功能字段对应的数据被操作时,将对所述业务功能字段对应的数据进行的操作记录在日志中。
16.根据权利要求15所述的装置,所述业务功能对应的注解信息包括:菜单注解信息,菜单注解信息用于描述需要生成对业务功能字段对应的数据进行管理所需的菜单结构,生成单元进一步被配置为:生成对业务功能字段对应的数据进行管理所需的菜单结构。
17.根据权利要求16所述的装置,所述业务功能对应的注解信息包括:树形结构注解信息,树形结构注解信息用于描述对应的数据具有树形结构的业务功能字段,生成单元进一步被配置为:生成树形结构数据处理代码,所述树形结构数据处理代码运行时用于以树形结构对应的处理方式对树形结构注解信息中描述的业务功能字段对应的数据进行处理。
18.根据权利要求17所述的装置,所述业务功能对应的注解信息包括:报表注解信息,所述报表注解信息用于描述生成报表所基于的字段、在生成报表之前需要调用的处理程序、在生成报表之后需要调用的处理程序,生成单元进一步被配置为:生成报表处理代码,所述报表处理代码运行时用于执行以下操作:调用生成报表之前需要调用的处理程序、获取生成报表所基于的字段对应的数据并且利用获取到的数据生成报表、调用生成报表之后需要调用的处理程序。
19.一种服务器,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
20.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-9中任一所述的方法。
CN201811024915.0A 2018-09-04 2018-09-04 代码生成方法和装置 Pending CN109189379A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811024915.0A CN109189379A (zh) 2018-09-04 2018-09-04 代码生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811024915.0A CN109189379A (zh) 2018-09-04 2018-09-04 代码生成方法和装置

Publications (1)

Publication Number Publication Date
CN109189379A true CN109189379A (zh) 2019-01-11

Family

ID=64912229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811024915.0A Pending CN109189379A (zh) 2018-09-04 2018-09-04 代码生成方法和装置

Country Status (1)

Country Link
CN (1) CN109189379A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110045952A (zh) * 2019-04-19 2019-07-23 京东数字科技控股有限公司 代码调用方法与装置
CN110531968A (zh) * 2019-08-20 2019-12-03 广州华资软件技术有限公司 一种自动抽离web前端功能代码生成独立模板的方法
CN111177252A (zh) * 2019-11-26 2020-05-19 腾讯云计算(北京)有限责任公司 一种业务数据的处理方法及装置
CN111221521A (zh) * 2019-12-31 2020-06-02 奇安信科技集团股份有限公司 日志代码的生成方法、装置、计算机系统和可读存储介质
CN112162744A (zh) * 2020-09-30 2021-01-01 中国工商银行股份有限公司 一种基于业务场景的代码自动生成方法及装置
CN112181368A (zh) * 2020-09-09 2021-01-05 上海赛可出行科技服务有限公司 一种基于行为描述的移动应用开发方法
CN112507067A (zh) * 2020-11-30 2021-03-16 厦门海西医药交易中心有限公司 一种缓存插入式注解器及注解方法
CN112650551A (zh) * 2020-12-31 2021-04-13 中国农业银行股份有限公司 一种系统功能的展示方法及装置
CN112817592A (zh) * 2021-01-26 2021-05-18 四川天翼网络服务有限公司 一种基于实体注解的自动代码生成方法
CN113448552A (zh) * 2020-03-27 2021-09-28 北京沃东天骏信息技术有限公司 代码生成方法和装置
CN113485770A (zh) * 2021-07-26 2021-10-08 挂号网(杭州)科技有限公司 业务配置数据的确定方法、装置、电子设备及存储介质
CN113761045A (zh) * 2021-09-03 2021-12-07 中国人民解放军63920部队 航天器上行控制数据生成方法及装置
CN115470152A (zh) * 2022-11-02 2022-12-13 平安银行股份有限公司 测试代码生成方法、测试代码生成装置以及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160004579A1 (en) * 2014-07-01 2016-01-07 Samsung Electronics Co., Ltd. Method of generating automatic code for remote procedure call
CN106648690A (zh) * 2016-12-29 2017-05-10 北京恒华伟业科技股份有限公司 一种代码自动生成方法及装置
CN106648587A (zh) * 2016-09-28 2017-05-10 福州宇嘉软件科技有限公司 一种基于注解的Web应用代码生成方法
CN108182236A (zh) * 2017-12-27 2018-06-19 国云科技股份有限公司 一种统一配置数据源的web页面下拉列表实现方法
CN108469955A (zh) * 2018-03-13 2018-08-31 山东超越数控电子股份有限公司 一种基于注解的Android注入框架

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160004579A1 (en) * 2014-07-01 2016-01-07 Samsung Electronics Co., Ltd. Method of generating automatic code for remote procedure call
CN106648587A (zh) * 2016-09-28 2017-05-10 福州宇嘉软件科技有限公司 一种基于注解的Web应用代码生成方法
CN106648690A (zh) * 2016-12-29 2017-05-10 北京恒华伟业科技股份有限公司 一种代码自动生成方法及装置
CN108182236A (zh) * 2017-12-27 2018-06-19 国云科技股份有限公司 一种统一配置数据源的web页面下拉列表实现方法
CN108469955A (zh) * 2018-03-13 2018-08-31 山东超越数控电子股份有限公司 一种基于注解的Android注入框架

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110045952A (zh) * 2019-04-19 2019-07-23 京东数字科技控股有限公司 代码调用方法与装置
CN110531968A (zh) * 2019-08-20 2019-12-03 广州华资软件技术有限公司 一种自动抽离web前端功能代码生成独立模板的方法
CN111177252A (zh) * 2019-11-26 2020-05-19 腾讯云计算(北京)有限责任公司 一种业务数据的处理方法及装置
CN111221521A (zh) * 2019-12-31 2020-06-02 奇安信科技集团股份有限公司 日志代码的生成方法、装置、计算机系统和可读存储介质
CN111221521B (zh) * 2019-12-31 2024-02-06 奇安信科技集团股份有限公司 日志代码的生成方法、装置、计算机系统和可读存储介质
CN113448552A (zh) * 2020-03-27 2021-09-28 北京沃东天骏信息技术有限公司 代码生成方法和装置
CN112181368B (zh) * 2020-09-09 2023-12-26 上海赛可出行科技服务有限公司 一种基于行为描述的移动应用开发方法
CN112181368A (zh) * 2020-09-09 2021-01-05 上海赛可出行科技服务有限公司 一种基于行为描述的移动应用开发方法
CN112162744A (zh) * 2020-09-30 2021-01-01 中国工商银行股份有限公司 一种基于业务场景的代码自动生成方法及装置
CN112507067A (zh) * 2020-11-30 2021-03-16 厦门海西医药交易中心有限公司 一种缓存插入式注解器及注解方法
CN112507067B (zh) * 2020-11-30 2022-08-23 厦门海西医药交易中心有限公司 一种缓存插入式注解器及注解方法
CN112650551A (zh) * 2020-12-31 2021-04-13 中国农业银行股份有限公司 一种系统功能的展示方法及装置
CN112650551B (zh) * 2020-12-31 2024-06-11 中国农业银行股份有限公司 一种系统功能的展示方法及装置
CN112817592A (zh) * 2021-01-26 2021-05-18 四川天翼网络服务有限公司 一种基于实体注解的自动代码生成方法
CN113485770A (zh) * 2021-07-26 2021-10-08 挂号网(杭州)科技有限公司 业务配置数据的确定方法、装置、电子设备及存储介质
CN113485770B (zh) * 2021-07-26 2024-03-22 挂号网(杭州)科技有限公司 业务配置数据的确定方法、装置、电子设备及存储介质
CN113761045B (zh) * 2021-09-03 2024-03-26 中国人民解放军63920部队 航天器上行控制数据生成方法及装置
CN113761045A (zh) * 2021-09-03 2021-12-07 中国人民解放军63920部队 航天器上行控制数据生成方法及装置
CN115470152B (zh) * 2022-11-02 2023-04-28 平安银行股份有限公司 测试代码生成方法、测试代码生成装置以及存储介质
CN115470152A (zh) * 2022-11-02 2022-12-13 平安银行股份有限公司 测试代码生成方法、测试代码生成装置以及存储介质

Similar Documents

Publication Publication Date Title
CN109189379A (zh) 代码生成方法和装置
CN108550037B (zh) 基于区块链的文件处理方法和装置
US20190325074A1 (en) Application programing interface document generator
CN110196971A (zh) 在线文档编辑方法、装置、终端设备及存储介质
CN110472207A (zh) 表单生成方法和装置
GB2574905A (en) Pipeline template configuration in a data processing system
US9152966B2 (en) Data reporting framework across on-premise and hosted CRM services
CN107273122A (zh) 基于解耦机制的可迭代组建业务系统的方法及其终端
CN111124917B (zh) 公共测试用例的管控方法、装置、设备及存储介质
US10410152B2 (en) System and method for automatically and efficiently monitoring software development life cycles
CN112417178B (zh) 基于文档模板定义的链上合约处理方法、装置和电子设备
CN109446274A (zh) 大数据平台bi元数据管理的方法和装置
CN105556533B (zh) 用于自动生成证书文档的方法和计算设备
CN110377275A (zh) 自动创建应用程序的方法和存储介质
CN110134427A (zh) 一种生成代码文件的方法和装置
CN110020358A (zh) 用于生成动态页面的方法和装置
CN109992496A (zh) 一种用于自动化测试的数据处理方法和装置
CN110109893A (zh) 数据建模和操作的方法和装置
US20210124752A1 (en) System for Data Collection, Aggregation, Storage, Verification and Analytics with User Interface
CN115993966B (zh) 应用开发系统及方法
CN112256695B (zh) 可视化的图计算方法及其系统、存储介质以及电子设备
CN109240916A (zh) 信息输出控制方法、装置及计算机可读存储介质
CN116431200A (zh) 应用数据配置信息的配置方法、装置、设备及存储介质
CN115391343A (zh) 账单数据处理方法、装置、电子设备和存储介质
CN112256978B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190111