1 为什么需要无码祥设
- 支持SA无码开发,提供提前与用户进行需求二次确认的机会
-
提前暴露需求转化设计过程中的问题
-
常见场景公式化,提升分析效率、加快glpaas成果转化
-
设计清晰化,提升SA与开发沟通效率,让开发专注于复杂业务逻辑等核心设计(技术详细设计、服务设计)
开发人员需要专注做以下技术设计内容:
- 服务设计
建议使用wiki来管理,同步不同版本
- 关键业务功能设计
设计内容可以参考:
- 重要逻辑梳理
针对系统中重要逻辑,可以多借用Excel升维思考。
有需要的话,开发经理需要针对系统做整体设计方案:
设计思路可以参考:
2 无码祥设步骤及要求
2.1 数据建模
- SA根据界面原型确认开发界面时,需要先明确这个界面所涉及到的所有的表结构以及每一张表之间的关系。
-
例如下表中的1代表第一张表,第2和第3位数字代表子表,第4和第5位数字代表孙子表。明确每个表的类型。如果一个数据源中的字段来源于多张表,则需要对应的建立自定义SQL并提供自定义SQL的查询语句。如果是表则直接给出表名。如果界面的字段源于不同数据库则需要标识出来是否跨模块,对应的外部模块名称。
表关系 | 表类型 | 名称 | 内容 | 是否跨模块 | 外部模块名称 |
---|---|---|---|---|---|
1 | 表 | PENDING_STORAGE_PLANT | PENDING_STORAGE_PLANT | 否 | |
101 | 自定义sql | VW_PENDING_STORAGE | SELECT ” AS VW_PENDING_STORAGE_PLANT_ID FROM DUAL | 是 | 订单 |
- 创建时需遵循以下规范:
- 【数据建模】表名称、视图名称、字段名称以大写英文、下划线、数字组成,其中视图名称以VW_开头。
- 【数据建模】表主键建议使用“表名”+“_ID”。
- 【数据建模】字段命名不要单个字母打头,如C_TYPE。
- 【数据建模】字段描述不能有特殊字符,描述尽量在6个中文以内。
- 【数据建模】关键字IS_DELETE、PROCESS_STATUS不允许使用。
- 【数据建模】联想控件建议两个字段存储,下拉控件只需要一个字段存储。
- 【数据建模】设置项目每天定时重新生成代码、并自动提交SVN,规避手工修改云平台生成代码。
2.2 元数据建模
1.数据字典
数字字典是下拉框的数据源,分成通用数据字典和单层数据字典
- 在项目初期,建议整理出所有使用到的字典表列表,按照格式罗列清楚。
-
在分布式项目中,建议把所有的字典表放在【基础数据、主数据】模块中维护
-
建议开启字典表缓存
-
单层字典表不建议使用数据库视图实现,建议使用子表字段冗余主表的字段方式处理
2.搜索帮助
- 搜索帮助是联想控件的数据源,项目初期需要整理出所有使用到的搜索帮助的列表,按照格式罗列清楚。
- 搜索帮助支持开启全文搜索模式,使用ES查询,提高查询效率;只需要在搜索帮助的抬头表勾选【全文搜索】即可
A. EC3后台
-需要引入云平台的gillion-search-business子系统来实现搜索查询及创建ES索引
B. 数据服务
- 项目组手工创建ES索引
- 需要配置数据同步平台来处理数据
项目级配置可以全局配置业务对象的特性,例如,查询条件文本框使用模糊查询、小写转大写,查询表格使用分页等可抽取出来的界面公共规范。
POI,全称Apache POI,使用Java编写的免费开源的跨平台的Java API, 它可以使用 Java 读取和创建, 修改 MS Excel 文件。通过配置POI可以实现Excel的导入导出功能。
如果项目是EC3后台的,直接在业务对象配置导入导出方法,并且勾选生成导入导出模板复选框,平台会自动生成POI配置;如果项目组是使用数据服务,还需要到数据服务上配置导入导出模板
5.附件上传
附件上传要配置上传策略,项目组要收集关于附件的文件类型、大小限制、数量限制及缩略图大小等信息
- 左侧动态查询:动态的配置查询条件,不同用户可以自定义查询条件,并设置特定的默认值查询;
- 组合查询:配置查询条件组,通过下拉框选择查询条件查询数据
-
高级查询:一般和组合查询配合使用,动态加载更多查询条件
7.功能权限
项目组需要分析各页面所属模块、菜单分组,并在系统管理上使用SYSTEM、MODULE、GROUP、MENU不同权限类型,维护菜单结构。
8.查询参数
项目组需要新增查询参数拦截表,如果是多系统,则每个需要开启拦截的子系统都要加上这张表并且开启配置;使用拦截表新增一个维护数据界面,用来维护需要拦截的url。如果请求的url
的searchColumns
里的字段不在该配置表中,或者该字段的操作符与配置表不一致则会抛出异常。
编码规则常用于某个字段在新增或者保存后,自动生成一串编码,例如订单号;
支持【默认规则】和【通过EDS生成】两种模式,【默认规则】是直接在平台配置编码规则,一般使用常量和变量组合而成;【通过EDS生成】需要在EDS上配置相关的服务,通过EDS生成对应的单号。
2.3 业务建模
2.3.1 业务对象
- 根据数据建模创建业务对象及对象的关系。数字编码同数据建模中的含义。
-
对象类型中有【通用对象,版本控制对象, 查询对象、虚拟对象、VO/DTO对象】几种。
- 通用对象指可以配置界面,对应有后端增加,删除,修改,保存功能,生成代码包括前端和后端代码。
- 版本控制对象,指有版本控制功能的对象,用户可以提交多个版本,恢复版本等。目前此功能一般用于云平台。
- 查询对象可以配置布局,后端则仅生成查询的后台代码。
- 虚拟对象则仅生成前端代码,此对象仅用来布局界面。后端逻辑需要补充实现。
- VO/DTO对象仅生成实体类,生成的类名为用户输入的业务对象名称。
-
通用业务对象,版本控制对象的对象名称和表名需要属于同个服务。查询对象和虚拟对象对象和表名可以来源不同视图。VO/DTO对象则不需要表就可以创建。对象关系类型和对象类型的选项是一样的。但是业务对象是【通用对象】时,对象关系类型可以选择【通用对象,查询对象、虚拟对象】;业务对象是【查询对象】时,对象关系类型可以选择【查询对象,虚拟对象】;业务对象是【虚拟对象】时,对象关系类型可以选择【虚拟对象】。VO/DTO对象不存在对象关系类型。
-
对象关系主要是建立每个对象之间的关系。选项有【一对一,一对多】类型。业务对象如果是不同模块的需要标识出来并标识出对应的外部模块名称。
对象关系 | 对象类型 | 名称 | 对应数据对象 | 对象关系 | 对象关系类型 | 是否跨模块 | 外部模块名称 |
---|---|---|---|---|---|---|---|
1 | 通用对象 | VW_PENDING_STORAGE_PLANT | VwPendingStoragePlant | 否 | |||
101 | 通用对象 | VW_PENDING_STORAGE | VwPengingStorage | 1对多 | 通用对象 | 是 | 订单 |
- 创建时需遵循以下规范:
- 【对象建模】业务对象功能模块、JAVA路径命名建议全小写英文。
- 【对象建模】数据字典名称、搜索帮助名称不能输入特殊字符及中文,建议使用大写、下划线组合命名
- 【对象建模】业务对象方法、单号规则名称建议使用驼峰命名规范。
2.3.2 属性
- 属性对应类中的属性名称。一般情况下表中有多少个字段对应业务对象就有多少属性。
- 有物理表映射的属性类型为一般类型。在开发过程中,有的时候界面上个别字段仅作为前端展示或者计算显示的时候,可以新增【虚拟字段】,此类型的属性是不需要有物理表字段映射的。在做无码详设时仅罗列特殊属性类型字段即可。
- 属性的触发点和用途需要填写完整。
对象类型 | 属性类型 | 属性名称 | 配置方法 | 用途 | 备注 |
---|---|---|---|---|---|
VW_PENDING_STORAGE | 虚拟字段 | Amount | 单价和货量输入后相乘自动计算总价格 |
2.3.3 方法
- 主要是对界面涉及到的每个方法进行详细描述。
- 方法类型有:
- 取消
- 确认
- 导入Excel
- 导出Excel
- 上一步
- 下一步
- 树查询
- 恢复删除
- 表格列导出
- 打开到页签
- 弹出窗口
- 打开新的窗口
- 打印方法
- 请求方法
- 显示DIV窗口
- 执行规则
- 执行规则并显示返回值
- 批量打印
- 页面进入执行规则初始化
- 自定义JS函数
- 自定义下载
- 表格页面数据导出
- 路由跳转(app)
- 侧滑菜单(app)
- 执行自定义服务
- 上拉菜单(app)
- 新导入
- 复制
- 批量更新
- 后端复制
- 批量状态
- 弹出窗口(DIV形式)
- div弹窗(异步加载)
- 简要介绍几个常用方法。
- 导入Excel:通过配置模板将excel文件导入到系统中;
- 导出Excel:根据系统查询的结果将数据到出为Excel文件;
- 弹窗口指:点击按钮会打开一个弹出框界面;
- 自定义js函数:用户自己扩展的方法,所有的方法体需要二次开发;
- 复制:通过配置自动实现前端数据拷贝功能;
- 后端复制:复制数据并存储到数据库中的拷贝功能;
- 批量状态:更新界面字段,是后端操作;
- 用户可以自定义方法名称,根据需求选择方法定义类型,同个类型方法可以配置多个方法。
对象名称 | 方法类型 | 方法名称 | 配置方法 | 用途 | URL路径 | 传入参数 | 接收参数 |
---|---|---|---|---|---|---|---|
VwPengingStorage | 自定义js函数 | 勾选生成入库单 | 新增一个自定义方法,配置参数 | 勾选同一订单下的进货明细生成入库单 | 入库单编辑页 | 具体参数内容参考详设文档1.1.2.3功能点说明(3)勾选生成入库单的入库单基本信息 | |
VwPengingStorage | 自定义js函数 | 新增入库单 | 新增一个自定义方法,配置参数 | 对于不需要派车过磅入库的商品可以直接新增入库单手工添加入库信息 | vwPengingStorage/+’方法名’ |
- 创建时需遵循以下规范:
-
URL路径主要用于按钮的功能权限配置。一般格式为:业务对象名(首字母小写)+斜杠+方法名称
-
方法名称格式:驼峰命名
2.3.4 校验
- 主要描述界面上的字段的校验类型。目前平台支持的校验有以下几种。配置方式可以参考链接:
校验类型 |
---|
唯一性校验 |
两个属性比较大小(小于) |
两个属性比较大小(大于) |
两个属性比较大小(小于等于) |
两个属性比较大小(大于等于) |
至少一个非空 |
多个属性的值必须一样 |
不能为空 |
限制字符串最大、最小长度 |
限制数字区间 |
检验数字,数字的长度精度等 |
由大写英文、下划线、数字组成 |
中文字符长度校验 |
不得小于当前日期 |
不得小于等于当前日期 |
不得大于当前日期 |
不得大于等于当前日期 |
必须大于0 |
手机号码校验 |
电话号码校验 |
邮箱校验 |
邮政编码校验 |
英文、数字字符串 |
禁止输入特殊字符 |
身份证验证 |
英文、数字且首字母大写 |
车牌号验证 |
只能输入英文字符 |
自定义正则表达式 |
ASCII码校验 |
动态ASCII码校验 |
动态必输校验 |
首字母必须为字母且小写 |
由小写字母和斜线组成 |
动态自定义正则表达式 |
必须大于等于0 |
平台唯一性校验 |
数组不能为空 |
多个属性,其中一个不能为空(支持数字、字符) |
- 平台支持数据服务校验有以下几种:
平台校验类型 | 状态 | 检验编码映射 | 数据服务 | 扩展 |
---|---|---|---|---|
至少一个非空 | 兼容 | eitherNotNull, eitherNotBlank | 任意一字段值非空 | |
两个属性比较大小 | 兼容 | compare | 比较 | |
多个属性的值必须一样 | 兼容 | allMatch | 值相等 | |
不能为空 | 兼容 | require | 必填 | |
限制字符串最大最小长度 | 兼容 | length | 长度 | |
限制数字区间 | 兼容 | range | 数值范围 | |
中文字符长度校验 | 兼容 | richLength | (拓展长度) | max min |
必须大于等于0 | 兼容 | mustMoreThanOrEqZero,min | min=0 | |
必须大于0 | 兼容 | mustMoreThanZero,min | min=0.001 | |
由大写英文、下划线、数字组成 | 兼容 | enUcNumUlString,pattern | pattern | [A-Z0-9_]+ |
英文字符串 | 兼容 | alphabet | 英文字符串 | |
英文、数字字符串 | 兼容 | alphabetOrDigital | 英文或数字字符串 | |
首字母小写(首字母必须为字母且小写) | 兼容 | firstLetterLower,pattern | pattern | ^[a-z].*$ |
手机号码 | 兼容 | mobile | 手机号码 | |
电话号码 | 兼容 | telephone | 固定电话 | |
邮编 | 兼容 | zipCode,pattern | pattern | [1-9]\d{5}(?!\d |
ASCII校验 | 兼容 | asciiCode,pattern | pattern | ^[\u4e00-\u9fa5] |
英文、数字且首字母大写 | 兼容 | upAlphabetOrDigital,pattern | pattern | |
禁止输入特殊字符 | 兼容 | notSpecialCharacter,pattern | pattern | [`~!@$%^&(()+=|{}’:;,\[\].<>/?~!@!@#¥%……&()——+|{}【】‘;:“”。,、?] |
动态必填 | 兼容 | dynaRequire,scriptPreCondition | 脚本先决条件组合 | |
动态Ascii | 兼容 | dynaAscii,scriptPreCondition | 脚本先决条件组合 | |
动态Pattern | 兼容 | dynaPattern,scriptPreCondition | 脚本先决条件组合 |
对象名称 | 校验类型 | 校验名称 | 配置方法 | 用途 | 备注 |
---|---|---|---|---|---|
VwPengingStorage | 不能为空 | asnNo | 业务对象-校验页签添加非空校验 | 控制输入必填 |
2.3.5 主对象业务类型
-
业务类型是指多页面共享后端代码。通过主对象上配置多个业务类型从而达到配置多个界面的业务场景,这些界面的后端代码都使用相同代码。SA需要根据对这个模块的所有布局进行评估会使用到多少个界面从而设计对应的业务类型。
-
创建时需遵循以下规范:
业务类型描述不同的业务场景对应的编码。格式:字符串(首字母大写)
对象名称 | 业务类型 | 配置方法 | 用途 | 备注 |
---|---|---|---|---|
VwPendingStoragePlant | InbReceipt | 在业务对象-业务类型tab页下新增数据 | 表示该业务类型是待入库工作台界面 | |
VwPendingStoragePlant | OubShipment | 在业务对象-业务类型tab页下新增数据 | 表示该业务类型是待出库工作台界面 |
2.4 界面设计
2.4.1 页面列表
- SA根据设计的主对象业务类型以及界面的功能是查询还是编辑或者弹窗来设计对应的页面列表。如果界面中涉及到公共界面例如附件上传需要标识出来。对于复杂界面无法配置的界面,需要扩展html也需要标识清楚。
页面关系 | 页面类型 | 对象主对象 | 业务类型 | 是否公共引用 | 是否前端扩展 | 前端HTML扩展点 |
---|---|---|---|---|---|---|
1 | 管理页 | VwPendingStoragePlant | InbReceipt | 否 | 是 | 合计栏 |
1 | 管理页 | VwPendingStoragePlant | OubShipment | 否 | 是 | 合计栏 |
- 创建时需遵循以下规范:
- 【对象建模】布局中COL必须布局在ROW下
- 【对象建模】表单区域布局在FORM下,FORM不允许嵌套
- 【对象建模】按钮建议布局在TOOLBAR下
- 【对象建模】TAB支持懒加载,建议使用DIV延时加载,若页面较多则建议使用DIV延迟渲染(异步加载)
- 【对象建模】联想控件建议配置在可视化中,若需同用、则可以配置在属性中;针对联想控件的数据源量比较大,可以配置搜索帮助的全文搜索
- 【对象建模】针对使用多选联想控件的场景,建议采用多行文本精确匹配控件
- 【对象建模】数据字典支持缓存加载功能,建议使用
- 【对象建模】复选框建议使用Y/N方式,且只选择其中一种
- 【对象建模】弹性布局中flex-item必须布局在flex-container直接下级,
- 【对象建模】tab 要配置弹性布局,就必须配置懒加载,需要在tab所在容器上配置 flex-container-tab
2.4.2 控件配置
- 界面上的每个字段的控件类型需要标识出来。常见的控件类型有,下拉控件,联想控件,日期控件,复选框,单选框等。目前支持的所有控件以及对应的配置方式可参考链接。
- SA需要指定要配置控件的对象和属性名称。控件需要特殊格式或者数据源的需要在配置方法中指定。可在用途中简要介绍控件的业务场景,增强理解性。
页面名称 | 控件类型 | 对象名+属性名 | 配置方法 | 用途 | 备注 |
---|---|---|---|---|---|
VwPendingStoragePlant管理页 | 下拉框 | VwPendingStoragePlant.unit | 参照下拉框配置 | 标识货量的单位 |
2.4.3 事件配置
- 字段上需要触发特别事件的字段或者隐藏字段都需要明确标识出来。标识字段的页面名称,字段的控件,字段对应的对象和属性名,需要配置的事件类型。可在用途中简要介绍事件的业务场景,增强理解性。
页面名称 | 控件类型 | 对象名+属性名 | 事件类型 | 用途 | 备注 |
---|---|---|---|---|---|
VwPendingStoragePlant管理页 | 数字文本框 | VwPendingStoragePlant.price | 焦点移开 | 修改单价后自动计算总费用 |