MDD:使用模型驱动开发方式进行快速开发(多图预警)

这个模型驱动开发平台已经开源:https://gitee.com/lingxcom/lingx

相信很多人跟我一样,不喜欢数据展示、列表分页、数据的增、删、改、查,这种简单又烦琐的搬砖活。

所以网上出现很多开源的代码生成工具,在多年前我也写过,根据模版生成简单的View、Action、Service、Dao、Bean;但实际上并没有太大变化,代码生成太死板。不是所有表单数据都可以用input[type='text']来输入的,增删一个字段是要改4人的。

多年以后我尝试用模型驱动开发,基于配置来实现各种各样的功能,控件丰富且一键调用;废话不多说,下面详细介绍

假设需要进行图书管理、图书分类、图书借阅记录;最终要的效果如下图:

数据展示与排版,是不是让人觉得很直观。不同的数据操作,功能键在数据上边。再来看下表单:

这里边有五种控件:单行文本框、多行文本框、日期控件、文件上传控件,还有一个隐藏控件指向图书类型ID(由于列表左边已选择“语文”类型,在添加图书信息时会自动识别)

在这里您不用写一行代码,系统也不会生成一行代码。您信吗?但不管您信不信,事实就是如此。

在这里有三表数据库表:图书分类、图书信息、借阅记录。(实际上要再加一个分类与图书的多对多表会更友好些,这里为了尽量缩小篇幅省略)

1、图书分类

2、图书信息

3、借阅记录

这三个表的关联关系是借阅记录->图书信息->图书分类;其中图书分类是树型结构数据。

进入LINGX模型驱动开发平台的在线开发工具

点击“创建”-"创建表对象",出现下图:

选择之前创建的数据库表“图书信息”[toa_book]

平台会自动读取“图书信息”[toa_book]表的所有字段,连注释也会一起取出;在这里注释至关重要的,在生成对象模型时注释会变成字段名;同时也让人养成一种建表要注释的习惯。

给模型取名字,点击“确定”后生成对象模型。如下图:

将需要模型功能写入功能树

这里面的功能,前三是自动生成的方法模型;之后是平台默认实现的方法模型,点击“预览”

在这里已经可以对图书信息增删改查,外加分页、查询、高级查询、导出功能。这仅仅是平台最基础的功能。由于默认情况下每个字段的输入控件都是input[type='text']。所以要设置字段所需的控件

这里对“出版日期”进行了“日期控件”设置

这是各个字段设置好输入控件后预览,数据列表及添加表单功能。

这个图书信息对象模型就建立好了,可以挂在菜单下,就可以对其进行图书信息的管理;但我们要的还远远不止是这个,还要图书分类、借阅记录。

用以上的方法建立图书分类与借阅记录两个模型,因为图书分类是树型结构。所以表字段必须要包含fid字段。fid字段要指向自身模型

注意其中的两个属性:输入控件(dialogtree树型对话单选框)与指向对象模型(自身表名即模型代码),在这里补充图书信息的"隶属分类"字段【指向对象模型】为图书类别,借阅记录的"隶属图书"字段【指向对象模型】为图书信息,这样三者之间就建立了外键关联关系。

然后在对象里分别指定“级联对象”属性,如下图:

其中图书类型的级联对象为JSON对象,具体是:[{name:'图书信息',entity:'toa_book',method:'grid_cascade',rule:''}]

而图书信息中的级联对象为借阅记录的对象代码:toa_book_record。

到这里已经完成了三个对象模型的配置工作,现在只差把功能挂在菜单之下,进入“系统管理”-“菜单管理”,如下图:

到这里已经全部完成。在这里可能并没有完全展示所有的操作细节,有些人会看不明白。这些都没关系有视频介绍一步都没落下:http://pan.baidu.com/s/1cG89FC

这就是模型驱动开发的魅力,但我觉得我这平台已经超越了模型驱动开发MDD达到领域驱动开发DDD,因为在业务模型(执行器)中可以调用系统的所有资源及任意业务嵌套;

不知道有没有说清楚,欢迎各位同学拍砖交流。

原文地址:https://www.cnblogs.com/lingx/p/5612489.html