公式语法参考(DSL)
DSL(Domain Specific Language)是一套面向问卷逻辑的文本规则语法,用于实现显示隐藏、跳转、自动赋值、校验、文本替换和选项互斥等复杂逻辑。适合可视化配置不够用、需要批量维护规则或需要精细控制题组逻辑的场景。
适用场景
- 多题联动、条件嵌套较多的问卷逻辑
- 需要批量查看和维护所有规则
- 需要对题组、矩阵题或复杂分支做统一控制
- 需要结合公式函数完成自动计算和动态校验
DSL 能做什么
- 控制题目或选项的显示与隐藏
- 配置分支跳转和结束逻辑
- 自动赋值、自动勾选和内容替换
- 配置必填、校验和互斥规则
- 结合公式函数处理文本、数字和逻辑判断
示例
| 示例 | 说明 |
|---|---|
| if Q1A1 then show Q2 | 如果选择 Q1 选项 1,则显示 Q2 |
| if Q1A1 then show Q2A1 | 如果选择 Q1 选项 1,则显示 Q2 选项 1 |
| if AND(Q1A1, Q2A1) then show Q3 | 如果 Q1 选项 1 和 Q2 选项 1 都为真,则显示 Q3 |
| if AND(OR(Q1A1, Q1A2), Q2A1) then show Q2,Q3 | 如果 Q1 选项 1 或选项 2 为真且 Q2 选项 1 为真,则显示 Q2 与 Q3 |
| if Q1A1 then hide Q2 | 如果选择 Q1 选项 1,则隐藏 Q2 |
| if Q1A1 then branch from Q1 to Q6 | 如果选择 Q1 选项 1,则从 Q1 跳转到 Q6 |
| if Q1A1 then branch from Q1 to END | 如果选择 Q1 选项 1,则从 Q1 跳转到结束 |
| if QS1Q1A1 then show QS1Q2 | 如果题组 1 的题 1 选项 1 为真,显示题组 1 的题 2 |
| if Q1A1 then required Q2 | 如果选择 Q1 选项 1,则 Q2 为必填 |
| if Q1A1 then assignment Q2 with IFS(Q1A1, 2, Q1A2, 3) | 如果选择 Q1 选项 1,则设置 Q2 为 2; 如果 Q1A2,则为 3(with 后面是公式表达式) |
| assignment Q2 with SUM(Q1, 20) | 直接设置 Q2 为 Q1 与 20 之和(with 后面是公式表达式) |
| replace Q2 with CONCATENATE("新", Q1) | 直接将 Q2 题目标题替换为"新"加 Q1 内容(with 后面是公式表达式) |
| if Q1A1 then validate Q2 with IF(Q1A1>10, "不能大于 10", "") | 如果选择 Q1A1 且大于 10,Q2 校验不通过并提示"不能大于 10";返回空字符串则校验通过(with 后面是公式表达式) |
| validate Q2 with IF(Q1A1>10, "不能大于 10", "") | Q2 校验,返回空字符串表示通过,返回其他内容作为提示(with 后面是公式表达式) |
| mutex Q1A1 deselect Q1A6 | 配置题 1 选项 1 与选项 6 为互斥关系 |
为什么使用 DSL
- 规则集中,适合统一查看和维护
- 表达力更强,适合复杂逻辑和多条件联动
- 语法接近自然语言,懂公式的人上手更快
- 可以覆盖题组、矩阵题和批量逻辑场景
推荐阅读顺序
| 角色类型 | 建议阅读 | 收获 |
|---|---|---|
| 新手/运营 | 1. 公式语法参考(DSL) → 2. 常用公式示例 | 理解 DSL 能力、学会写出第一条规则、掌握常见 场景 |
| 高级用户 | 直接阅读 语法说明 | 系统掌握题目/题组引用、各类语句、公式写法与最佳实践 |
| 开发/分析师 | 同时参考 语法说明 与 公式分类 | 便于将业务规则转化为 DSL,构建复杂计算或批量逻辑 |
目录概览
提示
问卷编辑器中每个题目右上角都会显示 DSL 标签,例如 Q3、QS1Q2。编写规则时请以界面中的实际标签为准。