领域驱动设计:问卷 schema 的原理
文内项目 Github:XIAOJUSURVEY
概念和原理
领域模型
问卷的本质是收集数据与洞察数据,数据贯穿于问卷的全生命周期。从创建开始的数据定义,到回收时的数据加工,再到分析的数据处理,以及数据血缘关系的追踪,在这个过程中,数据不断地发生变化。通过 Schema 来表达领域知识和数据定义,以及数据之间的关联,使得问卷能够支持多样化的应用场景。
B 端问卷设计实际是在设置问卷 schema 的值,C 端基于 schema 生成问卷内容,进而产生回收数据。
领域协议
题型是问卷的核心基础元素,随着业务场景的复杂度提升,除了数据的管理,我们还需要对题型组件进行协议约定以便更好地复用和管理。所以我们把领域协议拆分成两部分,问卷业务协议 + 物料协议:
1、问卷业务协议,即 问卷 Schema
业务描述:问卷协议、题型协议。
2、物料协议,即 UI Schema
物料描述: 题型物料协议。
以下我们主要围绕问卷 Schema 展开讲解,UI 物料组件的设计原理可查看 题型场景化设计和题型物料化设计。
问卷 Schema
问卷 Schema 可以分为两部分:
1、问卷基础配置如有效期、主题配置等。
2、不同题型有不同的配置。
1、基础信息 Schema 结构
问卷基础信息的 Schema 模板以 json 文件的形式维护在服务端 server/src/modules/survey/template/surveyTemplate
。
问卷基础信息配置,server/src/modules/survey/template/surveyTemplate/templateBase.json
:
2、题型信息 Schema 结构
题型配置分为两部分:
1、基础配置,server/src/modules/survey/template/surveyTemplate/normal.json
,具体字段含义可查 业务协议:
2、前端物料库维护题型字段,不同的题型有不同的 xxxModule/meta.js,如 web/src/materials/questions/widgets/InputModule/meta.js
,具体题型的字段可查 题型协议字段。
(后续考虑以更好的方式进行维护)
协议手册
关于我们
感谢看到最后,我们是一个多元、包容的社区,我们已有非常多的小伙伴在共建,欢迎你的加入。
Github:XIAOJUSURVEY
社区交流群
Star
开源不易,请star一下 ❤️❤️❤️,你的支持是我们最大的动力。
版权声明: 本文为 InfoQ 作者【XIAOJUSURVEY】的原创文章。
原文链接:【http://xie.infoq.cn/article/18d167dbc8fff2b266e521918】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论