CN112764743A - 一种基于数据模型驱动自动生成软件的方法 - Google Patents

一种基于数据模型驱动自动生成软件的方法 Download PDF

Info

Publication number
CN112764743A
CN112764743A CN202110082288.1A CN202110082288A CN112764743A CN 112764743 A CN112764743 A CN 112764743A CN 202110082288 A CN202110082288 A CN 202110082288A CN 112764743 A CN112764743 A CN 112764743A
Authority
CN
China
Prior art keywords
data
page
codes
project
generating
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
CN202110082288.1A
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN202110082288.1A priority Critical patent/CN112764743A/zh
Publication of CN112764743A publication Critical patent/CN112764743A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Abstract

本发明公开了一种基于数据模型驱动自动生成软件的方法,所述的方法包括以下步骤:S1:人工页面布局绑定数据或直接数学模型,S2:系统自动编译成间码,S3:间码编译器进行前后端数据库分离并编译成第三方语言(高级语言)同时创建管理系统,S4:编译和部署系统,S5:上线系统。大量减少重复代码编程,从而实现软件编写效率提升;使得系统能极好的响应需求变更;通过自定义业务表达语言的设计,使得系统强大的业务适应性的同时,又能完成前端后台和数据库代码的分离,以保证安全性;在增加了数据冗余的同时,保证了这个功能可以获得快速的查询,以保证瓶颈功能效率最大化。

Description

一种基于数据模型驱动自动生成软件的方法
技术领域
本发明涉及软件开发技术领域,具体为一种基于数据模型驱动自动生成软件的方法。
背景技术
目前,开发一个软件往往需要分别进行后台管理端、前端的编写,其中后台管理端包括用于存放数据类的bean包、用于访问数据的DAO层、用于接受用户请求并做出响应的servlet层,前端的编写包括软件的图像用户界面(UI)、管理端页面等,对于较为庞大的项目而言,软件往往需要相应的前后端工程师进行开发。对于后台管理端而言,很多bean包里的实体类以及对实体类进行处理的操作都具有一定的重复性,比如创建实体类、编写get、set方法等,以及DAO层对数据库进行增删改查,这些操作简单而重复,当工程师手动编写这些简单、基础却又不可缺少的代码时,无疑浪费了很多宝贵的时间。其次,一款成功的软件要能防御来自网络的攻击,这一点也是重中之重。
每一款软件的图形用户界面都是不同的,软件的管理端页面必须实现对后台数据的管理,需要实现可视化的数据管理,将这些基础功能集成到前端页面里,也是必不可少的工作,但编写这些基础功能无疑也是重复的工作,比如对不同的数据都要有增删改查等等。
综上,目前软件开发工作中存在的问题如下:
1.成本:开发一个软件需要大量的人手,需要大量的时间。这就产生了不菲的成本,这还不包括软件开发过程中其它工作的停滞所带来的成本。
2.需求变更:项目的开发、运营过程中需求的变化是一种常态,但是软件应对需求的变化特别是结构性的需求变化是非常困难的。
两瓶毒药:大量的企业和公司需要大量的软件,而维持一个技术团队的成本是高昂的,但是使用外包的方式需求稍有变化外包公司的技术支持就弛懈、甚至停顿了。这就陷入了两瓶毒药选一瓶的尴尬。
3.人工智能瓶颈:人工智能发展需要软件自身有强大的进化能力,而现在的遗传算法是无法满足的。提供一种计算机自我编程的方式变得迫切。
4.设计缺陷:公司或企业在软件设计之初很少会有对高并发高安全性的设计,而间码将系统安全和并发设计内置进了系统中,并且用户是无感的。
5.系统迭代:当企业或公司随着自身的发展需要升级功能甚至是升级系统并发级别时是无缝升级的。
软件开发有很多基础、重复而必不可少的工作,目前人们仍未找到一种高效的办法来简化这些重复的工作,去重复编程工作愈发重要!
基于此,本发明设计了一种基于数据模型驱动自动生成软件的方法,以解决上述提到的问题。
发明内容
本发明的目的在于提供一种基于数据模型驱动自动生成软件的方法,以解决上述提到的问题。
为实现上述目的,本发明提供如下技术方案:一种基于数据模型驱动自动生成软件的方法,所述的方法包括以下步骤:
S1:人工页面布局绑定数据或直接数学模型,
①构建页面,并自动生成页面对应的项目,包括:
S1.1.满足vue框架规范的前端H5页面,
S1.2.前端页面访问后台对应的接口,
S1.3.支持项目运行的其它后端java代码,
S1.4.支持项目运行的其它后端项目配置文件;
②编写数学模型,包括:
S1.5.编写数据实体,
S1.6.在实体上指明数据关系,包括主外键关系;分组及自定义分组;排序及自定义排序;字段变化记录;基于时间进行管理,
S1.7.将数据库中存在的不是以上基本业务能表达的业务,使用书写业务逻辑;
S2:系统自动编译成间码,
S2.1.管理数据实体,
S2.2.管理每个实体下的字段,
S2.3.建立实体之间的数据关系,
S2.4.组织后台与数据库之间的业务表达语言;
S3:间码编译器进行前后端数据库分离并编译成第三方语言,包括高级语言,同时创建管理系统,包括
数据转换;
业务转换;
根据模型生成DAO及存储过程;
S4:编译和部署系统,包括
自动生成权限系统、后台管理系统以及数据挖掘系统,其中,权限系统包括权限用户角色、权限页面、权限对应表以及权限地址,首先检查该地址、该用户是否有权限,再检查是否拥有该字段的修改权限,检查拥有权限以后,进入后台管理系统,管理员可通过间码或其他高级语言对数据库进行修改(包括增删改查操作);
设计前端页面;
编译前端页面;
打包以上代码完成代码自动生成;
S5:上线系统。
优选的,所述页面包括:
A.使用新建,导入修改和以某项目为蓝本重建项目三种方式加载项目,
B.为已加载的项目新建手机和电脑两种客户端,
C.同时编辑多个项目,
D.同时编辑项目的多个客户端,
E.通过树形结构展现客户端的页面结构,
F.选中页面可以编辑页面,
G.选中控件可以调整控件的部分样式,
H.在页面效果中删除控件和改变控件的排列关系,
I.从页面控件中将控件拖入页面效果。
优选的,所述S2具体包括:
a.设定一个类,该类中拥有一个字段集合和一个方法集合,
b.建立字段类,完成字段的转换工作,
c.建立方法类,继续编译方法和转换方法,
d.将方法体转换为多条语句,其中区域和方法均继承自语句,而区域中可以包含多条语句,
e.包含关键字的区域例如:if、for等每个关键字有自己的实现类,均继承自区域,if、catch等这些包含兄弟节点的关键字还有他对应的上下游关系的实现,
f.非区域的语句以赋值关系划分,被翻译为左句和右句,其中左句被右句赋值,
g.左右句分别翻译为对象路径和表达式,
h.一个对象路径至少包含一个节点,节点包括变量、字段、方法、对象,i.当节点路径是一个方法时,方法的每一个参数是一个语句,并形成递归。
优选的,所述S3中,
所述数据转换包括
S3.1.一个数据实体对应一个bean类和一张数据库表,并为表和类名之间的关系设定规则,为表建立主键,并为主键名设立规则,数据实体中的一个字段对应表中的一个字段和实体中的一个字段,同时为字段名的生成建立规则,
S3.2.为实体中具有分组、排序、变化记录、时间管理的字段建立映射表,以保证这些功能可以快速的查询。
优选的,所述S3中,
所述业务转换包括
S3.3.使用后台与数据库之间的业务表达语言所编译的结构,将代码翻译为数据库中的存储过程和后台对存储过程事务的调用,并封装成一个通用型的数据结构接收数据库返回的值,
S3.4.该通用型数据结构主要由存储过程中out的值和查询值两个部分组成,涵盖了数据查询、是否执行成功、受影响数量等信息,
S3.5.建立存储过程、后台调用类和方法与业务设计中名字命名之间的关系,建立调用存储过程的规则,按照该规则可以从其它位置调用设计好的业务。
优选的,所述S3中,
所述模型生成DAO及存储过程包括
S3.6.按照模型对应的bean类,生成模型的增加数据,删除数据和修改数据的方法,
S3.7.按照模型字段上的外键关系,生成关于外键的查询,
S3.8.按照模型的分组、排序、映射、记录,分别生成对应的功能方法以及这些方法带有分页、刷新、带有缓存、包含时间管理的重载,
S3.9.生成前端一些有特殊数据结构要求的控件对应的数据结构,例如:树控件、数据图形控件。
优选的,所述S4中,
所述自动生成权限系统、后台管理系统以及数据挖掘系统包括
S4.1.生成用户登录模块,
S4.2.根据数据模型及数据之间的关系生成管理功能列表,
S4.3.生成权限表和角色表,
S4.4.生成角色配置页面,
S4.5.生成用户创建、修改、删除的后台模块和前端页面,
S4.6.调用DAO类中的方法,生成各个功能的接口和页面。
优选的,所述S4中,
所述设计前端页面包括
S4.7以H5页面设计为原型,
S4.8.使用前台与数据库之间的业务表达语言先将业务分离为前端和后端部分,
S4.9.将后端部分翻译为接口,
S4.10.将前端部分翻译为各种前端的代码,
S4.11.按配置的前端元素翻译成各种前端的元素生成代码。
优选的,所述S4中,
所述编译前端页面包括将前端前面转换为H5电脑和手机网页,安卓应用程序原生代码及基于H5封装的安卓代码,IOS应用程序原生代码及基于H5封装的IOS代码,window应用程序原生代码,微信小程序代码,基于H5封装的微信公众号代码等包含以上但不仅限于以上的前端代码。
与现有技术相比,本发明的有益效果是:
基于通过自动生成代码,大量减少重复代码编程。从而实现软件编写效率提升;通过模型驱动开发的方法,使得系统能极好的响应需求变更;通过自定义业务表达语言的设计,使得系统强大的业务适应性的同时,又能完成前端后台和数据库代码的分离,以保证安全性;分组及自定义分组;排序及自定义排序;字段变化记录;基于时间的管理的表映射,在增加了数据冗余的同时,保证了这个功能可以获得快速的查询,以保证瓶颈功能效率最大化,结合内置的数据缓存系统,从而使系统效率中最大的瓶颈—与数据库的交互得到最大效率保证,设立基于某一张表(例如用户表)的数据分布系统,使得本发明能够响应几乎任何并发等级的设计。通过大量预制控件的加入使很多固有功能可以非常方便的实现,从而提升软件的编程效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法流程图;
图2为本发明项目首页图;
图3为本发明新建项目图;
图4为本发明导入项目图;
图5为本发明导入重建图;
图6为本发明电脑端页面编辑图;
图7为本发明手机端页面编辑图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种基于数据模型驱动自动生成软件的方法,所述的方法包括以下步骤:
S1:人工页面布局绑定数据或直接数学模型,
①构建页面,并自动生成页面对应的项目,包括:
S1.1.满足vue框架规范的前端H5页面,该页面由PSHPage.java文件生成,由于编写网页有很多重复的代码,如<head>、</head>、<body>、</body>等,将这些必要而重复的内容写入母版页面代码,再通过识别页面类型(如登录页面、管理页面等),加入母版页面代码和自定义接口文件内容,最终生成新的html文件、js文件和css文件,
S1.2.前端页面访问后台对应的接口,如Loader.java,该类文件实现了系统加载前端页面,并加载后台数据库,将数据库内容显示于前端页面,
S1.3.支持项目运行的其它后端java代码,如常用工具JsonUnit.java、MD5Tool.java、ServletTool.java等,方便开发人员直接使用Json传输、MD5加密等操作,
S1.4.支持项目运行的其它后端项目配置文件,如spring-mybatis.xml文件配置了数据库连接用户名、密码,spring-mvc.xml文件实现了SpringMVC的注解功能,完成请求和注解POJO的映射;
如图2所示是项目首页图,特作以下说明:
A.使用新建,导入修改和以某项目为蓝本重建项目三种方式加载项目,
B.为已加载的项目新建手机和电脑两种客户端,
C.同时编辑多个项目,
D.同时编辑项目的多个客户端,
E.通过树形结构展现客户端的页面结构,
F.选中页面可以编辑页面,
G.选中控件可以调整控件的部分样式,
H.在页面效果中删除控件和改变控件的排列关系,
I.从页面控件中将控件拖入页面效果。
如图3所示,新建一个空白项目,并加载到项目选项卡。
如图4所示,导入一个已有项目,并将项目的各端页面导入到对应位置,支持项目部分中文名或部分英文名搜索。
如图5所示,导入一个已有项目,并为该项目创建一个副本,副本是一个新的独立项目,并且将副本的各端加载到对应位置。
如图6所示,特作以下说明:
A.拖动控件可以引入后续的页面。
B.页面树中自动加入后续页面。
C.点击页面可以编辑页面。
如图7所示,手机端页面编辑与电脑端页面编辑类似,区别在于产生的是手机端页面。
②编写数学模型,包括:
S1.5.编写数据实体,如UserInfo.java定义了用户信息,包括用户ID这一关键字段、姓名等其他非关键字段,
S1.6.在实体上指明数据关系,包括主外键关系;分组及自定义分组;排序及自定义排序;字段变化记录;基于时间进行管理,如ConfigRecord.java,该文件实现了关联字段、创建表以及分页查询记录的函数,分别是createConfigRecord、createTable、getAllRecord,
S1.7.将数据库中存在的不是以上基本业务能表达的业务,使用书写业务逻辑;
S2:系统自动编译成间码,
S2.1.管理数据实体,开发人员使用本发明时,根据项目需求定义数据实体,本发明中将数据实体用树形结构进行管理,该类命名为DataTree,相同模块的每个实体有兄弟节点即同级实体,有子节点即实体下的字段,
S2.2.管理每个实体下的字段,每个实体的字段亦是树形结构,被命名为PathItem,该类中包含实体名,字段配置,字段分类等信息,本发明还为开发人员提供了间码这一业务表达语言(详见下文),开发人员可使用间码对实体及实体中的字段便捷地进行操作,
S2.3.建立实体之间的数据关系,本发明使用树形结构管理不同模块的实体之间的数据关系,被命名为ModelTree,开发人员可以调用ModelTree对不同实体建立数据关系
S2.4.组织后台与数据库之间的业务表达语言;
a.设定一个类,该类中拥有一个字段集合和一个方法集合,
b.建立字段类,完成字段的转换工作,开发人员可使用本发明中的PathItem类直接管理实体的字段类,
c.建立方法类,继续编译方法和转换方法,
d.将方法体转换为多条语句,其中区域和方法均继承自语句,而区域中可以包含多条语句,
e.包含关键字的区域例如:if、for等每个关键字有自己的实现类,均继承自区域,if、catch等这些包含兄弟节点的关键字还有他对应的上下游关系的实现,
f.非区域的语句以赋值关系划分,被翻译为左句和右句,其中左句被右句赋值,
g.左右句分别翻译为对象路径和表达式,
h.一个对象路径至少包含一个节点,节点包括变量、字段、方法、对象,i.当节点路径是一个方法时,方法的每一个参数是一个语句,并形成递归,
j.识别业务表达语言,即间码时,以<psh></psh>为开头结尾,以括号或空格为分隔符,使用一种被命名为ModelTree的树形结构的形式,识别分隔符左右两侧,称为ModelTree的左右子树,直到分解到子树中不存在分隔符,此时通过判断ModelTree的叶子节点来创建高级语言代码。
S3:间码编译器进行前后端数据库分离并编译成第三方语言同时创建管理系统,包括
数据转换;
S3.1.一个数据实体对应一个bean类和一张数据库表,并为表和类名之间的关系设定规则,为表建立主键,并为主键名设立规则,数据实体中的一个字段对应表中的一个字段和实体中的一个字段,同时为字段名的生成建立规则,
S3.2.为实体中具有分组、排序、变化记录、时间管理的字段建立映射表,以保证这些功能可以快速的查询。
业务转换;
S3.3.使用后台与数据库之间的业务表达语言所编译的结构,将代码翻译为数据库中的存储过程和后台对存储过程事务的调用,并封装成一个通用型的数据结构接收数据库返回的值,即本发明中定义的ReturnData类,该类中定义了返回编号、返回参数值、数据库表受影响行数以及返回方式等信息,
S3.4.该通用型数据结构主要由存储过程中out的值和查询值两个部分组成,涵盖了数据查询、是否执行成功、受影响数量等信息,
S3.5.建立存储过程、后台调用类和方法与业务设计中名字命名之间的关系,建立调用存储过程的规则,按照该规则可以从其它位置调用设计好的业务。
根据模型生成DAO及存储过程;
S3.6.按照模型对应的bean类,生成模型的增加数据,删除数据和修改数据的方法,本发明中的CreateModelDao中的getModelDaoClassCode方法实现了根据模型生成对应的增删改查方法以及查询、缓存查询、分页查询等方法,便于开发人员使用,
S3.7.按照模型字段上的外键关系,生成关于外键的查询,
S3.8.按照模型的分组、排序、映射、记录,分别生成对应的功能方法以及这些方法带有分页、刷新、带有缓存、包含时间管理的重载,
S3.9.生成前端一些有特殊数据结构要求的控件对应的数据结构,例如:树控件、数据图形控件。
S4:编译和部署系统,包括
自动生成权限系统、后台管理系统以及数据挖掘系统,由本发明中loader模块实现,包括加载登录页面、后台管理、添加管理员等系列功能项;
S4.1.生成用户登录模块,
S4.2.根据数据模型及数据之间的关系生成管理功能列表,
S4.3.生成权限表和角色表,
S4.4.生成角色配置页面,
S4.5.生成用户创建、修改、删除的后台模块和前端页面,
S4.6.调用DAO类中的方法,生成各个功能的接口和页面。
设计前端页面;
S4.7以H5页面设计为原型,
S4.8.使用前台与数据库之间的业务表达语言先将业务分离为前端和后端部分,
S4.9.将后端部分翻译为接口,
S4.10.将前端部分翻译为各种前端的代码,
S4.11.按配置的前端元素翻译成各种前端的元素生成代码。
编译前端页面;
所述编译前端页面包括将前端前面转换为H5电脑和手机网页,安卓应用程序原生代码及基于H5封装的安卓代码,IOS应用程序原生代码及基于H5封装的IOS代码,window应用程序原生代码,微信小程序代码,基于H5封装的微信公众号代码等包含以上但不仅限于以上的前端代码。
打包以上代码完成代码自动生成;
S5:上线系统。
实现方式:
(1)间码的编程目标是数学模型。
(2)间码设定一系列全新的设计标准,制定了居间设计的规则。
(3)为实现数学模型的程序化专门设计了一门计算机语言,暂定名:间码。
(4)前后端以及数据库各种代码,由间码的编译驱动去自动分离,不再按照前端后台数据库三个部分去编程。直接面向设计编程。
(5)间码将自身语言编译成开源可读的第三方语言。不懂间码的程序员依然可以通过第三方语言修改系统,而懂间码的可以通过间码直接修改。例如,间码“<psh>User(ID(xx))</psh>”,则表示查询ID为xx的用户信息,生成的DAO层高级语言代码为“select*fromUserwhere ID=‘xx’”
(6)包括系统安全,查询优化,权限管理和系统管理的整个管理系统无需任何操作,全自动完成。
(7)90%的间码是系统生成的。
(8)人工最大的工作量来源于页面布局和数据绑定。
(9)通过数据绑定获取数据结构和业务逻辑。剩下的事情自动完成。
关键部分代码:
//加载权限表
CreateTable.create(page);
//创建默认加载类
createDefClass(page);
//创建bean实体类
createBeen(page);
//创建MGS后台和数据库函数
MGSTool.createMsg(page);
//创建DAO层类
createDAO(page);
//创建后台控制入口
BackContrle.createBackServlet(page);
//创建自定义层
关键配置文件:
//全局映射器启用缓存
Configuration.xml
//mybatis框架
Spring-mybatis.xml
本发明使用的模型驱动开发方法,是一种基于数据模型驱动生成软件的方法。在业务软件中。业务软件由数据模型,业务逻辑,系统优化,系统安全四个部分组成,其中数据模型由数据实体、数据关系和业务逻辑三个部分组成。
对比现如今软件开发常用的方法,采用本发明所述的基于数据模型驱动生成软件的方法,有如下几点优势:
1、效率
A.间码生成一套系统的时间不到一分钟。
B.熟练的间码设计师可以通过间码模板导入修改一台系统的前端设计只需要几十分钟。新手可以通过编辑器生成系统。
C.不会编程的普通人也可以通过点选编辑器生成简单的系统。
D.人工智能可以通过抽离数学模型生成系统。
E.当发生需求变更时,从分析完需求的部分开始计算几分钟就能完成整个变更。
F.熟练的人员可以在采集需求的过程中现场就完成或修改系统并展示系统。
出于对成果和对投资人的负责。本人只提供现场演示。可以现场给需求,现场完成系统
2、前景
(1)低切入成本
A.在项目当前阶段利用超低的开分成本抢占外包市场,直接实现盈利。
B.项目走向成熟后搭建平台化服务,向公众开放。
C.平台搭建之后跨界培训行业
(2)高扩展性
A.人工智能方向上开发基于环境的智能化应用(已有完整的底层架构)
B.借鉴区块链技术的下一代交易市场。
C.个人数据管理的下一代手持个性化系统。
(3)制定标准,掌控话语权
(4)以企业为中心的平台化系统向以人为中心的个性化系统转移。
(5)间码的出现必将颠覆现有的软件行业,同时占领人工智能发展的制高点。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

Claims (9)

1.一种基于数据模型驱动自动生成软件的方法,其特征在于:所述的方法包括以下步骤:
S1:人工页面布局绑定数据或直接数学模型,
①构建页面,并自动生成页面对应的项目,包括:
S1.1.满足vue框架规范的前端H5页面,
S1.2.前端页面访问后台对应的接口,
S1.3.支持项目运行的其它后端java代码,
S1.4.支持项目运行的其它后端项目配置文件;
②编写数学模型,包括:
S1.5.编写数据实体,
S1.6.在实体上指明数据关系,包括主外键关系;分组及自定义分组;排序及自定义排序;字段变化记录;基于时间进行管理,
S1.7.将数据库中存在的不是以上基本业务能表达的业务,使用书写业务逻辑;
S2:系统自动编译成间码,
S2.1.管理数据实体,
S2.2.管理每个实体下的字段,
S2.3.建立实体之间的数据关系,
S2.4.组织后台与数据库之间的业务表达语言;
S3:间码编译器进行前后端数据库分离并编译成第三方语言,包括高级语言,同时创建管理系统,包括
数据转换;
业务转换;
根据模型生成DAO及存储过程;
S4:编译和部署系统,包括
自动生成权限系统、后台管理系统以及数据挖掘系统;
设计前端页面;
编译前端页面;
打包以上代码完成代码自动生成;
S5:上线系统。
2.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述页面包括:
A.使用新建,导入修改和以某项目为蓝本重建项目三种方式加载项目,
B.为已加载的项目新建手机和电脑两种客户端,
C.同时编辑多个项目,
D.同时编辑项目的多个客户端,
E.通过树形结构展现客户端的页面结构,
F.选中页面可以编辑页面,
G.选中控件可以调整控件的部分样式,
H.在页面效果中删除控件和改变控件的排列关系,
I.从页面控件中将控件拖入页面效果。
3.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S2具体包括:
a.设定一个类,该类中拥有一个字段集合和一个方法集合,
b.建立字段类,完成字段的转换工作,
c.建立方法类,继续编译方法和转换方法,
d.将方法体转换为多条语句,其中区域和方法均继承自语句,而区域中可以包含多条语句,
e.包含关键字的区域例如:if、for每个关键字有自己的实现类,均继承自区域,if、catch这些包含兄弟节点的关键字还有他对应的上下游关系的实现,
f.非区域的语句以赋值关系划分,被翻译为左句和右句,其中左句被右句赋值,
g.左右句分别翻译为对象路径和表达式,
h.一个对象路径至少包含一个节点,节点包括变量、字段、方法、对象,
i.当节点路径是一个方法时,方法的每一个参数是一个语句,并形成递归。
4.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S3中,
所述数据转换包括
S3.1.一个数据实体对应一个bean类和一张数据库表,并为表和类名之间的关系设定规则,为表建立主键,并为主键名设立规则,数据实体中的一个字段对应表中的一个字段和实体中的一个字段,同时为字段名的生成建立规则,
S3.2.为实体中具有分组、排序、变化记录、时间管理的字段建立映射表,以保证这些功能可以快速的查询。
5.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S3中,
所述业务转换包括
S3.3.使用后台与数据库之间的业务表达语言所编译的结构,将代码翻译为数据库中的存储过程和后台对存储过程事务的调用,并封装成一个通用型的数据结构接收数据库返回的值,
S3.4.该通用型数据结构主要由存储过程中out的值和查询值两个部分组成,涵盖了数据查询、是否执行成功、受影响数量信息,
S3.5.建立存储过程、后台调用类和方法与业务设计中名字命名之间的关系,建立调用存储过程的规则,按照该规则可以从其它位置调用设计好的业务。
6.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S3中,
所述模型生成DAO及存储过程包括
S3.6.按照模型对应的bean类,生成模型的增加数据,删除数据和修改数据的方法,
S3.7.按照模型字段上的外键关系,生成关于外键的查询,
S3.8.按照模型的分组、排序、映射、记录,分别生成对应的功能方法以及这些方法带有分页、刷新、带有缓存、包含时间管理的重载,
S3.9.生成前端一些有特殊数据结构要求的控件对应的数据结构,例如:树控件、数据图形控件。
7.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S4中,
所述自动生成权限系统、后台管理系统以及数据挖掘系统包括
S4.1.生成用户登录模块,
S4.2.根据数据模型及数据之间的关系生成管理功能列表,
S4.3.生成权限表和角色表,
S4.4.生成角色配置页面,
S4.5.生成用户创建、修改、删除的后台模块和前端页面,
S4.6.调用DAO类中的方法,生成各个功能的接口和页面。
8.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S4中,
所述设计前端页面包括
S4.7以H5页面设计为原型,
S4.8.使用前台与数据库之间的业务表达语言先将业务分离为前端和后端部分,
S4.9.将后端部分翻译为接口,
S4.10.将前端部分翻译为各种前端的代码,
S4.11.按配置的前端元素翻译成各种前端的元素生成代码。
9.根据权利要求1所述的一种基于数据模型驱动自动生成软件的方法,其特征在于:所述S4中,
所述编译前端页面包括将前端前面转换为H5电脑和手机网页,安卓应用程序原生代码及基于H5封装的安卓代码,IOS应用程序原生代码及基于H5封装的IOS代码,window应用程序原生代码,微信小程序代码,基于H5封装的微信公众号代码等包含以上但不仅限于以上的前端代码。
CN202110082288.1A 2021-01-21 2021-01-21 一种基于数据模型驱动自动生成软件的方法 Pending CN112764743A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110082288.1A CN112764743A (zh) 2021-01-21 2021-01-21 一种基于数据模型驱动自动生成软件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110082288.1A CN112764743A (zh) 2021-01-21 2021-01-21 一种基于数据模型驱动自动生成软件的方法

Publications (1)

Publication Number Publication Date
CN112764743A true CN112764743A (zh) 2021-05-07

Family

ID=75702433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110082288.1A Pending CN112764743A (zh) 2021-01-21 2021-01-21 一种基于数据模型驱动自动生成软件的方法

Country Status (1)

Country Link
CN (1) CN112764743A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434133A (zh) * 2021-08-27 2021-09-24 深圳市信润富联数字科技有限公司 应用搭建方法、装置、设备及计算机可读存储介质
CN115373657A (zh) * 2022-06-30 2022-11-22 北京三维天地科技股份有限公司 一种基于模型驱动的自动构建应用的方法
CN115438050A (zh) * 2022-11-07 2022-12-06 杭州兆林科技有限公司 一种分级低代码开发平台

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2006228083A1 (en) * 2005-10-17 2007-05-03 Madge Nz Limited Development Environment
CN101246420A (zh) * 2007-12-29 2008-08-20 中国建设银行股份有限公司 多语言系统实现统一开发的方法及系统
US20110088011A1 (en) * 2009-10-14 2011-04-14 Vermeg Sarl Automated Enterprise Software Development
US20140075411A1 (en) * 2012-09-07 2014-03-13 Newport Systems Corporation Meta-Languages For Creating Integrated Business Applications
CN104049957A (zh) * 2013-03-13 2014-09-17 成都泰聚泰科技有限公司 基于星形结构的通用业务模型的快速建模框架
US20150293764A1 (en) * 2014-04-10 2015-10-15 Omprakash VISVANATHAN Method and system to compose and execute business rules
CN105653245A (zh) * 2014-11-13 2016-06-08 朗新科技股份有限公司 代码自动生成系统、装置及方法
CN110941423A (zh) * 2019-11-22 2020-03-31 深圳市航通智能技术有限公司 一种基于Java的快速生成代码方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2006228083A1 (en) * 2005-10-17 2007-05-03 Madge Nz Limited Development Environment
CN101246420A (zh) * 2007-12-29 2008-08-20 中国建设银行股份有限公司 多语言系统实现统一开发的方法及系统
US20110088011A1 (en) * 2009-10-14 2011-04-14 Vermeg Sarl Automated Enterprise Software Development
US20140075411A1 (en) * 2012-09-07 2014-03-13 Newport Systems Corporation Meta-Languages For Creating Integrated Business Applications
CN104049957A (zh) * 2013-03-13 2014-09-17 成都泰聚泰科技有限公司 基于星形结构的通用业务模型的快速建模框架
US20150293764A1 (en) * 2014-04-10 2015-10-15 Omprakash VISVANATHAN Method and system to compose and execute business rules
CN105653245A (zh) * 2014-11-13 2016-06-08 朗新科技股份有限公司 代码自动生成系统、装置及方法
CN110941423A (zh) * 2019-11-22 2020-03-31 深圳市航通智能技术有限公司 一种基于Java的快速生成代码方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
何菇凉: "一个简单的Java代码生成工具—根据数据源自动生成bean、dao、mapper.xml、service、serviceImpl", pages 1 - 10, Retrieved from the Internet <URL:《https://www.cnblogs.com/hwf2029/p/7810766.html》> *
佚名: "Define a protobuf message and generate Go code", pages 1 - 5, Retrieved from the Internet <URL:《https://dev.to/techschoolguru/how-to-define-a-protobuf-message-and-generate-go-code-4g4e》> *
吴争荣: "基于数据模型解析的后端实体结构建模方法研究", 《中国南方电网有限责任公司》, pages 1 - 2 *
王萍萍: "面向制造执行系统的数控设备智能数据采集网关研究", 《万方》, pages 1 - 56 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434133A (zh) * 2021-08-27 2021-09-24 深圳市信润富联数字科技有限公司 应用搭建方法、装置、设备及计算机可读存储介质
CN115373657A (zh) * 2022-06-30 2022-11-22 北京三维天地科技股份有限公司 一种基于模型驱动的自动构建应用的方法
CN115438050A (zh) * 2022-11-07 2022-12-06 杭州兆林科技有限公司 一种分级低代码开发平台

Similar Documents

Publication Publication Date Title
US11620117B2 (en) Systems and methods for code clustering analysis and transformation
US11188319B2 (en) Systems and methods for entry point-based code analysis and transformation
CN101334728B (zh) 一种基于xml文档描述的界面生成方法和装置
US11169784B2 (en) Computing expression medium, development environment, and device communication and control architecture
US11436006B2 (en) Systems and methods for code analysis heat map interfaces
Lange An object-oriented design method for hypermedia information systems
US20180357055A1 (en) System and method for computer language migration
CN112764743A (zh) 一种基于数据模型驱动自动生成软件的方法
US20070094306A1 (en) Method and model for enterprise system development and execution
JP2008512794A (ja) オブジェクト処理グラフアプリケーション開発システム
US10540628B2 (en) Hierarchical business rule model
CN111984176A (zh) 一种软件在线开发平台及开发方法
CN114461204A (zh) 一种将多层级对象数据翻译为原生代码的开发系统和方法
CN106020801A (zh) 一种图形第四代语言及其应用生成系统
CN113655996B (zh) 一种基于需求模型的企业级系统生成方法
CA3078659A1 (en) Method for providing a programming tool and for data processing system
CN114281797A (zh) 基于敏捷低代码平台快速创建基层数据汇聚仓库的方法
Neeraj et al. A domain specific language for business transaction processing
Hauptmann et al. Supporting derivation and customization of user interfaces in software product lines using the example of web applications
Baumgartner Domain-Driven Design Refactoring Tool
Schill et al. Language and distributed system support for complex organizational services
CN117785943A (zh) 一种基于Spring Boot和ElasticSearch的数据查询方法及系统
CN116610314A (zh) 一种基于VSCode代码模板管理方法和计算机设备
CN113608726A (zh) 代码生成方法、装置、电子设备及存储介质
Costabile et al. Iconit: an environment for design and prototyping of iconic interfaces

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