CN101714078A - 代码生成方法及装置 - Google Patents
代码生成方法及装置 Download PDFInfo
- Publication number
- CN101714078A CN101714078A CN200810167735A CN200810167735A CN101714078A CN 101714078 A CN101714078 A CN 101714078A CN 200810167735 A CN200810167735 A CN 200810167735A CN 200810167735 A CN200810167735 A CN 200810167735A CN 101714078 A CN101714078 A CN 101714078A
- Authority
- CN
- China
- Prior art keywords
- code
- generating
- data
- order
- attributes
- 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
Links
Images
Abstract
一种代码生成方法及装置,是在J2EE开源的整合框架下生成代码,其包括:a.根据业务情况,选择需要生成的展示类型;b.根据数据源的情况,建立统一模型,该数据源包括:JAVA对象、XML数据、关系数据库的物理表或JSON数据;c.根据统一模型的情况,确定实体类的类路径;d.根据统一模型情况,对实体的属性进行加工;以及e.根据实体的属性,生成代码文件,该代码文件包括:后台代码、前台代码和配置代码。可以很好地解决现有框架技术所不能解决的业务代码重复的问题以及代码规范与统一的问题。
Description
技术领域
本发明涉及程序控制装置,尤其涉及用于执行专门程序的装置。
背景技术
随着J2EE(JAVA2平台版)技术的发展,hibernate框架、spring框架和webwork/struts等轻型开源框架越来越多地被软件开发公司应用于B/S业务处理。这些轻型开源框架,具有轻量级、通用以及良好的扩展性等特点,可帮助解决项目开发的一些核心技术难点问题,比如:开发人员不用去考虑框架的稳定性,性能以及扩展等问题。
但是,框架只能决定整个项目的开发模式、解决一些通用性的问题,还有一些问题是其无法解决的,例如:
业务代码重复的问题。因为框架是无法知道项目业务的,那么可能会有人做一系列的业务组件来解决这个业务代码重复的问题,比如:将一些业务类似的模块做成一个组件,这种业务组件式开发可以提高代码的重用性,但是这么多的业务模块必须是业务一摸一样的,而事实上是:大部分业务有部分很相似、但又有部分完全不同的,只要存在一点点的不同,哪怕是一个验证的规则不同,就可能需要对这个组件进行修改/调整。由于实际需求的变化在项目开发过程是无法完全掌控的,也就是说,难以保证需求不会发生改变,所以,用这种业务组件的做法虽然可以解决代码重复的问题,但它必须采用滚雪球模式来满足日益变化的需求,而随着雪球越滚越大,这种做法会越来越低效,甚至难以维系。
代码规范与统一的问题。因为这个更加依赖于一个项目开发规范的管理,它会占用项目经理的很多精力,比如:一次又一次地做代码评审和代码走查,而且也很难达到令人满意的效果,并且还有可能增加开发人员和项目经理的矛盾。
展示层的开发效率与统一性问题。虽然开源的框架提供了丰富的模板技术,但是模板技术只能解决展示层的一小部分的问题,开发人员还是要针对不同的业务做展示层,有数据表明,在这种B/S模式开发下,展示层的代码量要占总代码量60%以上。另外,展示层风格的统一也是对项目开发者的专业化水平的要求之一。
发明内容
本发明旨在克服现有技术的不足,而提出一种可以解决上述框架所不能解决的问题的代码生成方法及装置。
为了实现上述目的,本发明提出一种代码生成方法,用以在J2EE开源的整合框架下生成代码,包括以下步骤:
a.根据业务情况,选择需要生成的展示类型;
b.根据数据源的情况,建立统一模型,该数据源包括:JAVA对象、XML数据、关系数据库的物理表或JSON数据;
c.根据统一模型的情况,确定实体类的类路径;
d.根据统一模型情况,对实体的属性进行加工;以及,
e.根据实体的属性,生成代码文件,该代码文件包括:后台代码、前台代码和配置代码。
该步骤a中的展示类型包括:单表、树型加单表、主从表以及树型加主从表。
该步骤b中的建立数据模型是在一人机界面下操作实现的。
该步骤d中的对实体的属性进行加工是在一人机界面下操作实现的。
该步骤e中的生成代码文件的过程进一步包括:在一人机界面下对初试的统一模型进行加工,然后通过XML文件将其转换为一精细的统一模型。
本发明的代码生成方法还包括以下步骤:f、将步骤d加工好的实体的属性保存为模板,所述模板仅包含用以加工的人机界面的页面信息。
该步骤e中的生成代码文件的过程进一步包括:生成代码查看的界面。
为了实现上述目的,本发明还提出一种代码生成装置,用以在J2EE开源的整合框架下生成代码,其包括:
一展示类型选择装置,用以根据业务情况,选择需要生成的展示类型;
一同一模型建立装置,用以根据数据源的情况,建立统一模型,该数据源包括:JAVA对象、XML数据、关系数据库的物理表或JSON数据;
一类路径选择装置,用以根据统一模型的情况,确定实体类的类路径;
一实体属性加工装置,用以根据统一模型情况,对实体的属性进行加工;以及,
一代码生成装置,用以根据实体的属性,生成代码文件,该代码文件包括:后台代码、前台代码和配置代码。
该代码生成装置设置在一B/S应用服务器中。
与现有技术相比,本发明的代码生成方法及装置,不采用业务组件这种滚雪球的模式,而是为每一个不同的业务都生成公用的代码,当然生成的是最基本的没有包含业务逻辑的代码,开发人员在生成后的代码上添加相应的业务逻辑,就得到一完整的业务。并且,由于代码是生成出来的,那么所有开发人员的代码风格是统一的,统一风格的代码会为以后的维护带来很大的好处。最终,可提高展示层的开发效率和展示层的风格的统一,将大部分的厌烦做展示层的开发人员解放出来,他们基本上不用管展示层的风格布局,也不用管客户端的共性的验证。
附图说明
图1为本发明的代码生成方法的流程图;
图2为本发明的代码生成方法的支持多种数据格式的示意图;
图3为本发明的代码生成方法的输入数据模型的人机界面示意图;
图4为本发明的代码生成方法的模型属性列表的人机界面示意图;
图5为本发明的代码生成方法的形成统一模型的流程图;
图6为本发明的代码生成方法的生成代码的查看界面示意图。
具体实施方式
以下结合附图,对本发明予以进一步地详尽阐述。
由于基本上针对B/S应用,本发明的代码生成方法所需要的环境包括:一个应用服务器,比如:tomcat服务器,并将本发明所对应的web页面拷贝到该应用服务器下,启动tomcat服务器即可实施本发明的代码生成方法。
本发明的代码生成方法的工作流程图,如图1所示,其具体包括:
步骤101:选择需要生成的展示模型。通常地,可将将展示模型定制为:单表,树型+单表,主从表,以及树型+主从表四种模式;
步骤102:输入数据模型的人机模型,首先,进入如图2所示的人机界面,在这个人机界面里面,可以设定好代码最终生成的路径,模块的名称,以及,最重要的:输入一种数据模型,本发明优选地采用实体模型,这就要求开发人员将设计好的实体写成java的实体对象;
步骤103:再在此人机界面上输入java的类路径;
步骤104:本发明利用java的反射原理,将次实体对象转化为本发明的实体模型,再将这个实体模型的属性的信息展示出来。在这里,本发明之所以也设计一种模型,是考虑本发明的扩充应用,因为数据模型除了java实体对象外,也可以是数据表,xml数据以及json数据等,但无论数据模型如何,参见图3,本发明都可将它们转化为本发明的统一模型对象;
步骤105:进入模型属性列表的人机界面,在这个人机界面上对实体属性进行加工,在这里只要将一个已经写好的java实体类的路径输入后,点击确定就可以出现如图4的页面。需要说明的是:这个java实体类是需要开发人员预先准备好的,怎样生成这个java实体类,并不属于本发明要解决的技术问题的范畴,因为市面上已经有很多工具可以提供支持,比如:uml的工具可以将uml图转成java类,hibernate也有工具将关系数据库的表结构生成java类,也就是说,实体类的准备可以借助外部的一些工具来实现;
步骤106:保存模板,这是本发明的一个附加功能,就是将一些加工的信息保存下来,因为在生成过程中可能会有一些信息输入错误需要重新生成,那么将加工信息保存到模板可以节省重新填写附加属性的时间。本发明将这些模板进行持久化,当下一次再进入本发明来生成代码的时候,也可以直接选择已有的模板。当然,在这里用了比较巧妙的做法,本发明只是将页面信息保存到了模板,这样就可以减少生成xml与解析xml的麻烦;
步骤108:生成代码,如图5所示,本发明是通过xml文件来将初始统一模型的附加信息重新生成更完整的精细统一模型的;然后,再通过生成代码引擎生成后台、前台以及配置的代码,代码也会保存到默认的文件路径;
步骤107:生成代码查看的展示页面,页面内容,如图6所示。
上述内容,仅为本发明的较佳实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。
Claims (10)
1.一种代码生成方法,用以在J2EE开源的整合框架下生成代码,其特征在于,包括以下步骤:
a.根据业务情况,选择需要生成的展示类型;
b.根据数据源的情况,建立统一模型,该数据源包括:JAVA对象、XML数据、关系数据库的物理表或JSON数据;
c.根据统一模型的情况,确定实体类的类路径;
d.根据统一模型情况,对实体的属性进行加工;以及,
e.根据实体的属性,生成代码文件,该代码文件包括:后台代码、前台代码和配置代码。
2.如权利要求1所述的代码生成方法,其特征在于,该步骤a中的展示类型包括:单表、树型加单表、主从表以及树型加主从表。
3.如权利要求1所述的代码生成方法,其特征在于,该步骤b中的建立数据模型是在一人机界面下操作实现的。
4.如权利要求1所述的代码生成方法,其特征在于,该步骤d中的对实体的属性进行加工是在一人机界面下操作实现的。
5.如权利要求1所述的代码生成方法,其特征在于,该步骤e中的生成代码文件的过程进一步包括:在一人机界面下对初试的统一模型进行加工,然后通过XML文件将其转换为一精细的统一模型。
6.如权利要求4所述的代码生成方法,其特征在于,还包括以下步骤:
f、将步骤d加工好的实体的属性保存为模板。
7.如权利要求6所述的代码生成方法,其特征在于,所述模板仅包含用以加工的人机界面的页面信息。
8.如权利要求1所述的代码生成方法,其特征在于,该步骤e中的生成代码文件的过程进一步包括:生成代码查看的界面。
9.一种代码生成装置,用以在J2EE开源的整合框架下生成代码,其特征在于,包括:
一展示类型选择装置,用以根据业务情况,选择需要生成的展示类型;
一同一模型建立装置,用以根据数据源的情况,建立统一模型,该数据源包括:JAVA对象、XML数据、关系数据库的物理表或JSON数据;
一类路径选择装置,用以根据统一模型的情况,确定实体类的类路径;
一实体属性加工装置,用以根据统一模型情况,对实体的属性进行加工;以及,
一代码生成装置,用以根据实体的属性,生成代码文件,该代码文件包括:后台代码、前台代码和配置代码。
10.如权利要求9所述的代码生成装置,其特征在于,该代码生成装置设置在一B/S应用服务器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810167735A CN101714078A (zh) | 2008-10-06 | 2008-10-06 | 代码生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810167735A CN101714078A (zh) | 2008-10-06 | 2008-10-06 | 代码生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101714078A true CN101714078A (zh) | 2010-05-26 |
Family
ID=42417746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810167735A Pending CN101714078A (zh) | 2008-10-06 | 2008-10-06 | 代码生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101714078A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122247A (zh) * | 2011-03-17 | 2011-07-13 | 深圳市同洲软件有限公司 | 一种自动生成代码的系统及方法 |
CN103179133A (zh) * | 2013-04-12 | 2013-06-26 | 北京工业大学 | 基于实体类的客户端与服务器通信的方法 |
CN103455316A (zh) * | 2012-07-27 | 2013-12-18 | 安徽工业大学 | 一种基于类的代码生成器 |
CN103677819A (zh) * | 2013-12-05 | 2014-03-26 | 深圳中兴网信科技有限公司 | 基于osgi的代码正向工程的实现方法和实现装置 |
CN105446809A (zh) * | 2015-11-30 | 2016-03-30 | 中国建设银行股份有限公司 | 平台迁移方法及装置 |
CN105956830A (zh) * | 2016-05-11 | 2016-09-21 | 中煤电气有限公司 | 一种基于j2ee框架的企业级可视化应用开发平台 |
CN106250134A (zh) * | 2016-07-28 | 2016-12-21 | 成都诺铱科技有限公司 | 单一性语言的代码自动生成方法 |
CN106886390A (zh) * | 2015-12-15 | 2017-06-23 | 大唐软件技术股份有限公司 | 一种Java对象生成和转换方法和Java对象生成和转换装置 |
CN107066248A (zh) * | 2016-12-29 | 2017-08-18 | 北京五八信息技术有限公司 | 处理模型确定方法及装置 |
CN107291476A (zh) * | 2017-06-27 | 2017-10-24 | 北京微影时代科技有限公司 | Canvas代码生成方法、装置、电子设备及存储介质 |
CN109710238A (zh) * | 2018-12-20 | 2019-05-03 | 国云科技股份有限公司 | 一种基于Spring Cloud的代码生成方法 |
CN110069246A (zh) * | 2019-03-28 | 2019-07-30 | 北京众智益成科技有限公司 | 一种Java Web应用快速开发的平台系统及其应用 |
CN110941422A (zh) * | 2019-11-21 | 2020-03-31 | 山东鲁能软件技术有限公司 | 代码自动生成方法、代码生成器及可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945527A (zh) * | 2006-10-26 | 2007-04-11 | 山东浪潮齐鲁软件产业股份有限公司 | 可实现代码复用的server版代码生成系统 |
-
2008
- 2008-10-06 CN CN200810167735A patent/CN101714078A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1945527A (zh) * | 2006-10-26 | 2007-04-11 | 山东浪潮齐鲁软件产业股份有限公司 | 可实现代码复用的server版代码生成系统 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122247A (zh) * | 2011-03-17 | 2011-07-13 | 深圳市同洲软件有限公司 | 一种自动生成代码的系统及方法 |
CN103455316A (zh) * | 2012-07-27 | 2013-12-18 | 安徽工业大学 | 一种基于类的代码生成器 |
CN103179133A (zh) * | 2013-04-12 | 2013-06-26 | 北京工业大学 | 基于实体类的客户端与服务器通信的方法 |
CN103179133B (zh) * | 2013-04-12 | 2016-03-30 | 北京工业大学 | 基于实体类的客户端与服务器通信的方法 |
CN103677819B (zh) * | 2013-12-05 | 2017-12-05 | 深圳中兴网信科技有限公司 | 基于osgi的代码正向工程的实现方法和实现装置 |
CN103677819A (zh) * | 2013-12-05 | 2014-03-26 | 深圳中兴网信科技有限公司 | 基于osgi的代码正向工程的实现方法和实现装置 |
CN105446809B (zh) * | 2015-11-30 | 2019-01-25 | 中国建设银行股份有限公司 | 平台迁移方法及装置 |
CN105446809A (zh) * | 2015-11-30 | 2016-03-30 | 中国建设银行股份有限公司 | 平台迁移方法及装置 |
CN106886390A (zh) * | 2015-12-15 | 2017-06-23 | 大唐软件技术股份有限公司 | 一种Java对象生成和转换方法和Java对象生成和转换装置 |
CN105956830A (zh) * | 2016-05-11 | 2016-09-21 | 中煤电气有限公司 | 一种基于j2ee框架的企业级可视化应用开发平台 |
CN106250134A (zh) * | 2016-07-28 | 2016-12-21 | 成都诺铱科技有限公司 | 单一性语言的代码自动生成方法 |
CN106250134B (zh) * | 2016-07-28 | 2019-03-19 | 成都诺铱科技有限公司 | 单一性语言的代码自动生成方法 |
CN107066248A (zh) * | 2016-12-29 | 2017-08-18 | 北京五八信息技术有限公司 | 处理模型确定方法及装置 |
CN107291476A (zh) * | 2017-06-27 | 2017-10-24 | 北京微影时代科技有限公司 | Canvas代码生成方法、装置、电子设备及存储介质 |
CN107291476B (zh) * | 2017-06-27 | 2020-12-08 | 北京微影时代科技有限公司 | Canvas代码生成方法、装置、电子设备及存储介质 |
CN109710238A (zh) * | 2018-12-20 | 2019-05-03 | 国云科技股份有限公司 | 一种基于Spring Cloud的代码生成方法 |
CN110069246A (zh) * | 2019-03-28 | 2019-07-30 | 北京众智益成科技有限公司 | 一种Java Web应用快速开发的平台系统及其应用 |
CN110941422A (zh) * | 2019-11-21 | 2020-03-31 | 山东鲁能软件技术有限公司 | 代码自动生成方法、代码生成器及可读存储介质 |
CN110941422B (zh) * | 2019-11-21 | 2023-08-15 | 山东鲁能软件技术有限公司 | 代码自动生成方法、代码生成器及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101714078A (zh) | 代码生成方法及装置 | |
CN101794226B (zh) | 一种适应多业务抽象层次的服务化软件构造方法和系统 | |
CN102663103B (zh) | 可配置的自动化生成数据库和数据访问的方法 | |
Milicev | Automatic model transformations using extended UML object diagrams in modeling environments | |
CN106648587A (zh) | 一种基于注解的Web应用代码生成方法 | |
CN102968306A (zh) | 一种基于数据模型驱动的代码自动生成方法和系统 | |
CN106445536B (zh) | 自动化业务设计管理系统 | |
EP2628071A1 (en) | Method and system for developing data integration applications with reusable semantic types to represent and process application data | |
CN109063362B (zh) | 航电软件接口控制文件设计管理系统 | |
CN102736915A (zh) | 自动程序生成装置、方法以及计算机程序 | |
US20050256695A1 (en) | Creating visual data models by combining multiple inter-related model segments | |
CN108563431A (zh) | 软件开发方法、装置、计算机可读存储介质以及电子设备 | |
CN111666355B (zh) | 一种领域、数据、场景三层模型的模型构建方法及装置 | |
Mueller | Microsoft ADO. NET Entity Framework Step by Step | |
Wimmer et al. | On the integration of web modeling languages: Preliminary results and future challenges | |
CN101055521B (zh) | 映射规则的可视化生成方法及系统 | |
CN110531964A (zh) | 软件个性化智能开发方法 | |
CN109614084A (zh) | web程序及其快速开发框架、开发方法与相关设备 | |
Romano et al. | Applying MDA development approach to a Hydrological Project | |
Nikiforova et al. | BrainTool v2. 0 for Software Modeling in UML | |
Whitehead Jr et al. | Automatic generation of hypertext system repositories: a model driven approach | |
CN110221827A (zh) | 数据处理方法及相关装置 | |
Klımek et al. | eXolutio: Tool for XML Schema and Data Management | |
KR100656559B1 (ko) | Bibd 방법론을 이용하는 프로그램 자동 개발 장치 | |
CN117472362A (zh) | 一种基于元数据的低代码开发平台设计与实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20100526 |