设计
版权声明
- 文章作者: flytreeleft - flytreeleft@crazydan.org
- 文章链接: https://duzhou.crazydan.io/docs/development/framework/server/app-modeler/design
- 版权声明: 本文章采用许可协议《署名 4.0 国际 (CC BY 4.0)》。 转载或商用请注明来自渡舟平台!
通过 Excel 作为可视化建模器存在以下问题:
- 不能包含明显的备注说明,需要占用行列空间
- 布局结构和内容调整极为不便,并且需要在多处反复调整,工作量极大,且易出错
- 不支持动态数据源,对于枚举项等支持不足,也没有地方对枚举项进行说明, 需要记忆的内容过多,交互能力极弱
- 数据之间不能有效关联,必须在大脑中维护数据关联,对数据的维护负担极重
因此,Excel 只能用于设计和维护简单和数量较少的模型数据, 无法应用于复杂的设计和开发场景。
自举开发
应用建模器采用自举模式进行自开发,初始阶段通过 Excel 对其进行模型设计, 并由此生成可独立运行的单体服务代码。
在初始阶段,该单体服务需完整支持以下功能:
- 创建和维护应用、字典、域、服务、ORM 实体、表结构等数据,以及其相互间的关联
- 可以 Excel 形式导入导出以上数据,包括关联信息
- 可以在指定目录中生成工程代码,支持差量叠加
- 前端页面复用 Nop XView 的能力,以复用页面组件,并可生成差量
- 在 AMIS Schema 中均附加
name
属性,以用于支持差量
- 在 AMIS Schema 中均附加
后续,将 Excel 设计的建模器模型通过该单体服务导入数据库, 并在线调整和完善该建模器模型,并自动生成差量(有独立的 delta 层), 最终在叠加的差量下具备完整的应用设计和代码生成能力。
每次模型结构的调整均生成差量,并放在按序号递增的 delta 层中。
功能设计
- 应用可复制,或从模板新建
- 在模块发布后返回 DDL 升级脚本,由用户确定是否执行,
可以仅复制,也可以在修改后再向目标数据库执行
- 增、删、改用不同背景色标记
- 每一条 SQL 都是可独立拖动和编辑的块,方便调整执行顺序,可新增、可删除
- 删除 SQL 块只是标记不可用,可以取消删除
- 执行时按行依次执行,在出现异常的行处停止执行,并返回该行的异常信息和所在行号, 由用户进一步处理。注:已执行的行将被冻结,后续不再执行,继续从异常行开始执行
自动填充规范
填充项 | 说明 |
---|---|
字典名称 | 以文件路径形式命名,仅包含两级文件,第一级为目录,第二级为文件。第一级的目录自动以应用或服务的 code 编码命名,并将该编码中的短横线替换为下划线 |
字典项 | 第一项始终为 unset:-1:待定 |
字典项值类型 | 默认为 int |
应用访问地址 | 始终以 http:// 或 https:// 开头 |
Maven 依赖项 | 从粘贴的 xml 结构中识别并拼接依赖项为 groupId:artifactId:version 形式 |
字段数据域 | 若指定了数据域,则字段类型、字段长度等无需填写,直接与数据域的设置合并。根据数据域是否为 createdTime 等,为模型的 createTimeProp 等属性赋值 |
规范 JSON 字段存取 | [x] JSON 类型字段(如,options )自动重命名为(optionsJsonText )并约定其结构为 {data: ...} ,再定义映射该 data 的业务模型属性 options -> optionsJsonTextComponent.data |
填充基础数据 | 提供基础数据添加按钮,并通过 batchModify 函数批量新增 |
数据库字段数据类型 | 参考 /nop/dao/dialect/h2.dialect.xml 提出各个类型,并对整数等类型备注可用数据的范围 |
AMIS 组件
- 支持两级编码输入的组件:可指定分隔符;可配置编码校验规则;值组合后复制给
name
指定的属性; - 全局的图片放大插件,通过特定的 css 类控制启用,支持内嵌的
svg
- 链接组件支持附带二维码,以便于手机扫描并访问链接
支持 Esc 按键关闭弹窗或抽屉窗口- 配置
closeOnEsc: true
即可
- 配置
- Form Item 的 label 和输入组件默认居中对齐,但 description 不与参与,其放在二者的父 div 容器之下,仅与输入组件保持左对齐
模型设计
DevApp
(应用)license
:许可协议copyright
:版权声明description
:描述说明url.protocol
:访问地址 HTTP 协议url.hostname
:访问地址域名或 IPurl.port
:访问地址端口号url.pathname
:访问路径,默认为/
DevAppConfig
(应用配置):以键/值形式存放workspace.dir
:代码放置目录,由服务端自动确定并生成,不可修改db.dir
:H2 等嵌入式数据库的目录位置db.nameCase
:表名、字段名的大小写模式,可选lower
、upper
,默认为lower
db.datasource
:数据库连接配置- 根据
db.nameCase
的设置自动附加相关参数
- 根据
DevAppModule
description
:描述说明
DevAppModuleConfig
entityTableNamePrefix
:[可选] 实体表名前缀。 在设置实体模型的表名时,自动以该值为其前缀maven.dependencies
:Maven 工程依赖,以groupId:artifactId:version
形式记录外部依赖项
DevAppEntityColumn
- 增加审计信息,以便于查看最新变更