跳到主要内容

设计

版权声明

通过 Excel 作为可视化建模器存在以下问题:

  • 不能包含明显的备注说明,需要占用行列空间
  • 布局结构和内容调整极为不便,并且需要在多处反复调整,工作量极大,且易出错
  • 不支持动态数据源,对于枚举项等支持不足,也没有地方对枚举项进行说明, 需要记忆的内容过多,交互能力极弱
  • 数据之间不能有效关联,必须在大脑中维护数据关联,对数据的维护负担极重

因此,Excel 只能用于设计和维护简单和数量较少的模型数据, 无法应用于复杂的设计和开发场景。

自举开发

应用建模器采用自举模式进行自开发,初始阶段通过 Excel 对其进行模型设计, 并由此生成可独立运行的单体服务代码。

在初始阶段,该单体服务需完整支持以下功能:

  • 创建和维护应用、字典、域、服务、ORM 实体、表结构等数据,以及其相互间的关联
  • 可以 Excel 形式导入导出以上数据,包括关联信息
  • 可以在指定目录中生成工程代码,支持差量叠加
  • 前端页面复用 Nop XView 的能力,以复用页面组件,并可生成差量
    • 在 AMIS Schema 中均附加 name 属性,以用于支持差量

后续,将 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:访问地址域名或 IP
    • url.port:访问地址端口号
    • url.pathname:访问路径,默认为 /
  • DevAppConfig(应用配置):以键/值形式存放
    • workspace.dir:代码放置目录,由服务端自动确定并生成,不可修改
    • db.dir:H2 等嵌入式数据库的目录位置
    • db.nameCase:表名、字段名的大小写模式,可选 lowerupper,默认为 lower
    • db.datasource:数据库连接配置
      • 根据 db.nameCase 的设置自动附加相关参数
  • DevAppModule
    • description:描述说明
  • DevAppModuleConfig
    • entityTableNamePrefix[可选] 实体表名前缀。 在设置实体模型的表名时,自动以该值为其前缀
    • maven.dependencies:Maven 工程依赖,以 groupId:artifactId:version 形式记录外部依赖项
  • DevAppEntityColumn
    • 增加审计信息,以便于查看最新变更