schema技术方案
一、Schema 概述
1.概述
一个dform表单可以由jsonSchema、uiSchema、layoutSchema、formData、bizData五个json来描述。jsonSchema中描述了表单的数据类型、数据源、数据项等配置;uiSchema描述了表单字段的渲染方法、渲染参数等;formData描述了表单初始填充的各个字段的初始值;bizData中是对表单字段的业务属性(bizData不会影响DForm的渲染);其中的每一个配置json的基本配置项可以参看 Schema文档
2. 支持的组件
3. 涉及的字段类型
-
String
-
Number
-
Boolean
-
Object
-
Array
-
Date
-
DateTime
-
Time
4. 字段校验规则
todo:多字段联合校验如何解决?
// validate模板 [ { "type": "minLength", "message": "不能超过10个字", "value": 10 }, { "type": "phone", "message": "请填写正确的手机号码", }, {...} ]
5. Schema结构
{ // 用于描述表单的数据结构,对于同一个表单是静态不会变的 jsonSchema: { field_name: { // 数据格式类型,有string, number, array等等等 type: "...", // 数据字段的label title: "我是字段中文Label", }, { type: "array", itemType: "object", itemAttributes: { field_1: { type: "string", title: "" }, field_2: { type: "string", title: "" } } }, {...} }, // 用于描述表单的ui结构,对于同一个表单是静态不会变的 uiSchema: { field_name: { // [必选] 组件名称 widget: "...", // [可选] 是否禁用 disable: true/false, // [可选] 组件展示的条件 showCondition: [ { "field": xxx, // 表单域名称 "operator": "==", // 操作符 "value": "xxx" // 值 }, {...} ] // [可选] 组件的选项,每个组件会不一样 widgetOptions: { // input类的组件,会有placeholder这种属性 placeholder: "请输入xxx", // 单选、多选类的组件,会有dataSource dataSource: { // enumKey会拼接上bizData._enumApiBasePath进行请求 enumKey: "mdrc_biz_type", // 若存在enumUrl,则忽略enumKey enumUrl: "//xxx.com/xx/xxx.do", // url请求参数,若存在级联的情况则会更新数据, 请求url会生成为 url?ruleData={"cityCode":"300100"} requstParams: [ { "key": "cityCode", "value": "xxxFiled.cityCode" }, {...} ] } }, // [可选] 数据校验规则 validate: [{...}, {...}], // [可选] 级联规则, 若没有 cascade: { // 设置当前控件更新后,需要级联更新的字段 updateFields: ['field_name1', 'field_name2'] } }, {...}, {...} }, layoutSchema: { // 必选 "pc": { type: "group", // none, group分组表单, (step分步表单, 暂不支持) isSimple: true, // 是否简单表单,决定了详情页是否需要展示表单详情 pageLayout: [ { name: "第一步干嘛干嘛", arrange: [ ['field1', 'field2'], ['atttibuteGroup1'], ['field3'] ] } , {...}, {...} ], widgetLayout: { "atttibuteGroup1": [ ['field4', 'field5'], ['field6'], ['field7'] ] } }, // type是none的 示例 "pc": { type: "none", // none, group分组表单, (step分步表单, 暂不支持) pageLayout: [ ['field1', 'field2'], ['atttibuteGroup1'], ['field3'] ], widgetLayout: { "atttibuteGroup1": [ ['field4', 'field5'], ['field6'], ['field7'] ] } } // 可选,若没有h5,则使用pc schema "h5": { // 格式同pc } } // 表单的数据,对于同一个表单,不同份的数据会不一样 formData: { field_name: data, field_name2: data2, atttibuteGroup1: [ { field_name4: data4, field_name5: data5 }, {...}, {...} ] }, // 业务数据,对于同一个表单,不同份的数据会不一样 bizData: { _baseOApiPath: "//xxx.com", _disableAll: true, process_instance_id: 362478134 // 业务数据信息,以备业务组件进行使用 } }
表单formData在提交的时候,增加 _v 比如说community_type这个字段 { community_type: 1, _v_community_type: "专业" }
6. 枚举数据源
接口:(支持jsonp callback) _baseOApiPath + '/oapi/enum/show/' + 'enumKey1,enumKey2,enumKey3' 可选url参数: tLabel: 文字描述的label vLabel: 值的label 请求示例: 标准:http://se.cainiao.test/oapi/enum/show/scene_id_key,net_dev_reason_pro 自定义:http://se.cainiao.test/oapi/enum/show/scene_id_key,net_dev_reason_pro?tLabel=customText&vLabel=customValue 标准返回值: { "success": true, "data": { "net_dev_reason_pro": [ { "text": "系统推荐不准", "value": "tuijian" },{...} ], "scene_id_key": [ { "text": "通用场景", "value": "comm" }, {...} ] } } 自定义返回值: { "success": true, "data": { "net_dev_reason_pro": [ { "customText": "系统推荐不准", "customValue": "tuijian" },{...} ], "scene_id_key": [ { "customText": "通用场景", "customValue": "comm" }, {...} ] } }
二、原子组件
1. Input
json schema
ui schema
配置样例
// json schema { field_name : { type: "string", // 支持 string, number title: "我是字段中文Label", } } // ui schema { field_name: { widget: "Input", // 组件名称 widgetOptions: { // 组件的选项,每个组件会不一样 placeholder: "请输入xxx", }, } }
2. TextArea
json schema
ui schema
配置样例
// json schema { field_name : { "type": "string", // 支持 string, number "title": "我是字段中文Label", } } // ui schema { field_name: { "widget": "TextArea", // 组件名称 "widgetOptions": { // 组件的选项,每个组件会不一样 "placeholder": "请输入xxx", "rows": 5 }, } }
3. RadioGroup
json schema
ui schema
4. Select
json schema
ui schema
5. DatePicker
json schema
ui schema
6. FileUpload
json schema
ui schema
获取OSS写入Token预签名接口: {_baseOApiPath}/oapi/form/upload/token?fileName=xxx 参数: fileName:【需要urlEncode一下】 文件名,必填,带上后缀名。前端无需通过添加timestamp去重。 返回: { "success": true, "data": { "accessKeyId": "x1lz50IryjFW9soM", "policy": "xxxxxxxxxxxxxxxxx", "signature": "d8/kQwjgPDVz6SstHLtrfhqEuk8=", "host": "http://station-img.oss-cn-hangzhou.aliyuncs.com", "uri": "bpm/file/b5ca37ac-7b44-4ccc-ab8d-09a2d680dc81/你好.xls", "expire": "1513567609" } } 上传至OSS接口文档 Header中签名方式: https://help.aliyun.com/document_detail/31951.html PUT上传: https://help.aliyun.com/document_detail/31978.html
7. TagSelect
json schema
ui schema
三、复合组件
1. RangePicker
json schema
ui schema
2. AttributeGroup
json schema
ui schema
四、业务组件
1. MobileVarify 手机验证码
json schema
ui schema
获取短信验证码接口: POST {host}{url} 请求BODY: json格式 { "mobile": "1xxxxxxxxxx" } 返回: { "success": true, "errorMsg": "", // 例如验证码已经发了5次了,success=false需要弹errorMsg "data": { "retry": "60", // 以秒为单位,可再次重试的时间 } }
2. AddressWithMap 地址地图选择
json schema
ui schema
地址联想接口: GET {_baseOApiPath}/oapi/form/addressGuess URL QUERY: provCode 省code cityCode 市code areaCode 区code townCode 街道code addressPart 当前输入的文本 limit 联想条数 返回: { "success": true, "errorMsg": "", "data": [ { "fullAddress": "北京北京市朝阳区望京街道望京街10号望京SOHOT3", "guessAddress": "望京街10号望京SOHO" } ] } ============ 组件value ============ { provCode: 省code, cityCode: 市code, areaCode: 区code, townCode: 街道code, detailAddress: 详细地址, lng: 经度, lat: 纬度 }
3. BusinessTime 营业时间
json schema
ui schema
============ 组件value ============ { "officeTimeDay": "周一至周五", "officeTimeHourStart": "08", "officeTimeMinuteStart": "30", "officeTimeHourEnd": "22", "officeTimeMinuteEnd": "00" }
4. XPicker 若干选择器
json schema
ui schema
============ 组件value ============ ["22.3", "33.4"]
若有收获,就赏束稻2018-05-17 17:28
相关推荐
XML Schema技术是XML(可扩展标记语言)标准的一部分,它为XML文档定义了一种结构化模式,用于规范XML文档的结构和数据类型。XML Schema替代了早期的DTD(文档类型定义),提供了更强大的功能和更复杂的验证机制。...
这表明 SAP 在开发人力资源管理系统时考虑到了与多种技术平台的兼容性。 #### SAP 时间 Schema 评估标准教材 HR310 总结 通过以上内容的介绍,我们可以看出 SAP 时间 Schema 评估标准教材 HR310 是一门内容丰富、...
### Schema驱动,生成用户界面的技术和实现 #### 概述 随着XML技术的普及与应用,许多现代系统开始采用XML文档来收集与维护用户输入的数据。XML Schema是一种用于定义XML文档结构的语言,它不仅规定了数据类型,还...
Schema在信息技术领域中扮演着至关重要的角色,尤其在数据库设计、Web语义化和数据标准制定等方面。Schema是对数据结构的一种规范定义,它规定了数据的格式、类型以及各元素之间的关系,使得数据具有更好的组织性...
Schema.org 是一个结构化数据的标准,它为网页内容提供了一种通用的语言,使得搜索引擎、浏览器和其他解析工具能更好地理解和解析网页上的信息...在Java开发中,结合前后端技术,Schema的应用将使你的项目更具竞争力。
XML Schema 和 XML DTD 是两种用于定义XML...因此,随着技术的发展,XML Schema在XML模式描述领域的地位逐渐提升,而XML DTD可能在某些特定场合继续存在,但在整体趋势上,XML Schema正逐渐取代XML DTD成为主流标准。
SCHEMA是一种重要的标准,用于定义XML(eXtensible Markup Language)文档的结构和语义。它是基于XML的,主要用于创建XML ...通过官方文档和示例的学习,你可以系统地掌握这一技术,为XML数据处理打下坚实的基础。
XML Schema,简称为XSD,是XML(可扩展标记语言)的一个重要组成部分,用于定义XML文档的结构和数据类型。这个“XMLSchema.chm”文件很可能..."XMLSchema.chm"文档应该包含详细的信息,帮助读者深入理解这一关键技术。
### XML Schema 快速入门指南 #### 一、XML Schema 概述 XML Schema 是一种用于定义 XML 文档结构和约束的语言。通过 XML Schema,我们可以指定文档...希望这个指南能够帮助初学者更好地理解和应用 XML Schema 技术。
XML Schema是一种基于XML的文档类型定义(DTD)替代方案,它提供了更为强大且灵活的方式来描述XML文档的结构和数据类型。XML Schema定义(XSD)使用XML语法,使得XML文档的验证和处理更加方便。在这个教程中,我们将...
【XML与XMLSchema】 XML,全称可扩展标记语言(eXtensible Markup Language),是一种基于标准通用标记语言SGML的简化版本,...它们是现代信息技术中不可或缺的一部分,广泛应用于软件开发、网络通信和数据集成等领域。
赠送jar包:springfox-schema-3.0.0.jar; 赠送原API文档:springfox-schema-3.0.0-javadoc.jar; 赠送源代码:springfox-schema-3.0.0-sources.jar; 赠送Maven依赖信息文件:...双语对照,边学技术、边学英语。
通过阅读和分析这些代码,我们可以进一步了解如何在实际项目中应用这一技术。总的来说,自定义Schema解析是Spring框架中一个强大的工具,它为项目提供了一种灵活的方式来管理和配置应用的组件,增强了Spring XML配置...
赠送jar包:springfox-schema-2.2.2.jar; 赠送原API文档:springfox-schema-2.2.2-javadoc.jar; 赠送源代码:springfox-schema-2.2.2-sources.jar; 赠送Maven依赖信息文件:...双语对照,边学技术、边学英语。
总的来说,WebService入门需要掌握SOAP、WSDL和Schema等核心技术,其中Schema对于保证数据交换的准确性和一致性至关重要。通过深入学习和实践,你将能够熟练地运用Schema来设计和验证XML数据,进一步提升你的...
赠送jar包:springfox-schema-2.7.0.jar; 赠送原API文档:springfox-schema-2.7.0-javadoc.jar; 赠送源代码:springfox-schema-2.7.0-sources.jar; 赠送Maven依赖信息文件:...双语对照,边学技术、边学英语。
这涉及到对XML Schema的理解、XML文档的创建以及编程技术的应用。 首先,我们需要理解XML Schema的核心概念。XML Schema提供了一种方式来规定XML文档中元素、属性、数据类型以及它们之间的关系。它使用XML语法来...
赠送jar包:springfox-schema-2.9.2.jar; 赠送原API文档:springfox-schema-2.9.2-javadoc.jar; 赠送源代码:springfox-schema-2.9.2-sources.jar; 赠送Maven依赖信息文件:...双语对照,边学技术、边学英语。