北京劳恩斯科技有限公司
网址:
WebGenerate降本增效的代码生产工具,经过WebGenerate生产的代码适用于Spring、MyBatis、Maven构建的JavaEE工程。
WebGenerate生产的工程属于半成品,经过简单的修改既可使用。可以减少开发难度及成本、缩短开发周期、提高代码质量、减少错误调试。
WebGenerate生产的工程界面美观、大方、简单、实用,界面实现了总体、模块的个性化布局控制,用户也可以迅速更换最终用户所需要的主题。
WebGenerate生产工程的过程简单,1分钟即可轻松搞定一个完整的基础工程。
1.功能概述
概况图
WebGenerate支持两种模式、三种数据库。
在线模式:适用于已建立了数据库,并且数据库更新比较频繁的项目。
离线模式:用户仅需要提交DDL的SQL文件,即可生产工程。
WebGenerate生产代码的过程非常简单:
1)用户通过WebGenerate后台管理系统创建项目,并填写数据库信息(或提交SQL文件);
2)完成上面的步骤后,即可生成工程文件,包括生成完整包、生成框架包、生产基础包等。
2.设计概述
WebGenerate设计之初目的是减少开发成本、提供开发质量、加强软件项目的管理和风险控制。
WebGenerate进行了深度分层设计,使项目管理人员、设计人员、开发人员更加专注于各个环节(或模块)的管理、设计、开发。如下图:
思维导图
WebGenerate在传统的MVC模式基础之上再次对每个环节解耦和封装,这样带来的好处如下:
1)展示系统:实现了总体和局部、功能和布局的分离式设计,使页面逻辑更加清晰;
JSP:仅含有页面框架的HTML代码;
CSS:
a.主控css:控制整个工程的风格、布局、样式;
b.各个模块的css:控制各个模块独有的风格、布局、样式。
JavaScript:
a.公共部分:提供了大量的工具类、函数、和组件;
b.各个模块:
common.js集成了页面的变量、标签、和访问地址等;
index.js实现了所有的页面功能。
展示系统中jsp、js、css的基础功能代码均由WebGenerate生成,前端设计、开发人员可以更加专注于提高用户体验、以及视觉效果等。
2)业务系统,我们从以下三个角度去了解业务系统:
框架角度:WebGenerate会自动生产基础框架代码、以及和数据表匹配的jsp、js、css、controller、service、DAO、model、viewer等代码,其次,实现了对session、servlet生命周期的监听、管理,实现了按角色、功能、权限等多维度的权限管理策略,实现了白名单对请求的过滤、控制;实现了事务、日志等基础框架功能的配套实施。
性能角度:增加了对数据缓存的功能,用户可以根据需要使用本地缓存、或分布式缓存。在服务启动的时候,用户可以根据需要将数据放入缓存,目前的缓存设计是使用数据表的主键值作为单项KEY;
模型角度:分为数据模型和展示模型,数据模型相对应数据表,展示模型是对数据模型的继承和扩展,主要用于和页面交互。模型的扩展主要使用缓存,减少了与数据库的交互次数、以及复杂SQL的使用。
3)专项技术(组件池),主要由用户自行开发,我们也会提供与工程配套的简单的专项技术,如加密、解密等。专项技术可以依赖Maven建立父子工程,也可以直接建立单独的工程,最后以jar的方式引入。
4)项目管理,融入了PMP管理思想,在时间、成本、进度、周期等方面,我们做了大量的思考、设计,WebGenerate在代码方面做得更全面、更规范,降低了开发难度、提升了开发效率、有利于对风险管理和控制,使团队合作更加紧密、也更容易协调。
3.功能及使用WebGenerate包括四个模块:在线模式、离线模式、表信息、字段信息。3.1.在线模式
主要用户用户已在线(已存在)的数据库。如下图:
图一
提供了列表、分页、排序、搜索、新增、模板、导入、导出、编辑、删除的功能,除了这些基本功能之外,还提供了如下的功能:
生成完整包:包含基础包、框架包等所有代码的工程包;
生成框架包:包含公共代码、开源项目的框架文件包;
生成基础包:根据所有数据表生成的基础代码包;
“新增项目管理”界面如下图:
图二
名称:用于平台显示的项目名称;
编码:用于工程名;
java基础包:生成的java文件所在的公共包路径;
关键字:用于HTML语言的meta标签(keyword);
数据库类别:支持MySQL、SQLServer、Oracle;
IP:数据库服务器的IP;
端口:数据库的服务端口;
用户名:登录数据库的用户名;
密码:登录数据库的密码;
公司中文名称、公司英文名称、开发者、电话、QQ、微信、邮箱、网址均用于生成相关文件的注释信息。
3.2.离线模式
主要用于使用sql文件生产相关工程文件的场景。如下图:
图三
提供了列表、分页、排序、搜索、新增、模板、导入、导出、编辑、删除的功能,除了这些基本功能之外,还提供了如下的功能:
生成完整包:包含基础包、框架包等所有代码的工程包;
生成框架包:包含公共代码、开源项目的框架文件包;
生成基础包:根据所有数据表生成的基础代码包;
“新增项目管理”界面如下图:
图四
名称:用于平台显示的项目名称;
编码:用于工程名;
数据库类别:支持MySQL、SQLServer、Oracle;
java基础包:生成的java文件所在的公共包路径。
关键字:用于HTML语言的meta标签(keyword)。
公司中文名称、公司英文名称、开发者、电话、QQ、微信、邮箱、网址均用于生成相关文件的注释信息。
3.3.表信息
这里我们可以维护表的基本信息,如下图:
图五
提供了列表、分页、排序、搜索、新增、模板、导入、导出、编辑、删除的功能,除了这些基本功能之外,还提供了如下的功能:
预览代码:根据表生成的所有类型的基础代码均可以在这里预览,如下图:
图六
可以预览的基础代码包括:cache、controller、dao、model、service、viewer、mapper(xml)、css、js、jsp、sql等文件,且每种类别的代码都有相应的高亮显示。
生成代码:可以选择一张、或多张表来生成基础代码。在我们做项目过程中,经常会修改表、视图,那么,我们可以从这里选择修改过的表、或者视图,来生成相应的基础代码。
“新增表管理”界面如下图:
图七
名称:用于页面元素的标题;
编码:用于代码的类名;
注释:用于类注释;
类别:仅支持表、或视图;
隶属项目:选择隶属的项目。
3.4.字段信息
用户来维护表、和页面显示的关系。如下图:
图八
提供了列表、分页、排序、搜索、新增、模板、导入、导出、编辑、删除的功能。
“新增字段管理”界面如下图:
图九
名称:用于显示页面元素的title;
编码:生产代码使用;
注释:用于model类
数据类型:字段类型,生产model时,会生产对应的类型;
长度:字段类型的长度;
小数位数:小数位数;
允许空:字段是否允许空;
默认值:字段类型的默认值;
主键:该字段是否为主键;
隶属项目:隶属于哪个项目;
隶属表:隶属于哪个表;
外键表:对应的外键表,用于在controller中的prop函数进行属性拓展使用;
外键字段:对应的外键表需要显示的字段,用于在controller中的prop函数进行属性拓展使用;
列表显示:是否在列表显示;
表单显示:是否在表单显示;
表单必填:用于生产的页面元素是否为必填项;
提示显示:页面错误的提示信息;
HTML元素:页面显示的HTML元素类型;
排序:字段显示的顺序;
4.工程介绍
WebGenerate生产的代码适用于SSM+Maven的工程,生产的代码包含公共代码、数据表对应的基础代码、以及开源产品等。生成代码的类别包括js、jsp、css、java、xml等,工程框架如下图:
框架图
从框架图上,我们可以了解生成代码的全部结构,在展示系统的开源产品、和业务系统的开源产品中间的内容,为WebGenerate生成的基础代码。
从颜色上,我们又可以把内容分为上、中、下三部分:
(上部)展示系统:包括开源产品、公共技术、个性布局、标签及路径、功能控制、基础页面;
(中部)业务系统:包括页面模型、缓存系统、分发控制、业务逻辑、数据交互、数据模型、SQL映射、公共技术、开源产品;
(下部)组件池/专项技术:可以包括互联网/互联网+、电子商务/金融、大数据、云计算、虚拟化、操作系统、AI人工智能、深度学习、神经网络、应用数据、搜索引擎等,不过,目前这部分需要用户自行开发。
中间红色方框的部分,可以理解为逻辑组件,每张数据表对应一个逻辑组件,每个逻辑组件包含了从前端到后台的完整功能,其中包括列表展示、分页、排序、新建、详情、编辑、删除、批量删除、导入、导出、查询等功能。
5.其他事项5.1.数据表必须字段:
id:长整型 必须为主键;
name:为主键ID的名称或title;
user_id:创建人;
datetime:创建时间;
hide_id:逻辑状态;
5.2.数据表示例:
MySQL:
CREATE TABLE `code` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`code` varchar(100) DEFAULT NULL,
`desc` text COMMENT '描述',
`parent_id` bigint(20) DEFAULT NULL COMMENT '隶属',
`user_id` bigint(20) DEFAULT NULL COMMENT '创建人',
`datetime` datetime DEFAULT NULL COMMENT '日期',
`hide_id` bigint(20) DEFAULT NULL COMMENT '隐藏',
PRIMARY KEY (`id`)
);
SQLServer:
CREATE TABLE [software](
[id] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[name] [varchar](512) NULL,
[code] [varchar](512) NULL,
[desc] [varchar](512) NULL,
[user_id] [bigint] NULL,
[datetime] [datetime] NULL,
[hide_id] [bigint] NULL
)
Oracle:
CREATE TABLE "code" (
"id" NUMBER(20) NOT NULL ,
"name" VARCHAR2(512 BYTE) NULL ,
"code" VARCHAR2(512 BYTE) NULL ,
"desc" VARCHAR2(512 BYTE) NULL ,
"user_id" NUMBER(20) NULL ,
"datetime" TIMESTAMP(6) NULL ,
"hide_id" NUMBER(20) NULL
);
ALTER TABLE "code" ADD PRIMARY KEY ("id");
5.3.代码统计
100张表、970个字段生产的代码统计信息如下:
微信公众号
本文来自企鹅号 - 北京劳恩斯科技有限公司媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 北京劳恩斯科技有限公司媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。