跳到主要内容

公式语法参考(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 能力与典型示例,帮你快速判断“能不能实现”
  • 常用公式示例 —— 上手流程、界面说明、常用语句速查表
  • 语法规则 —— 全量语法、题组写法、函数参考、调试技巧
提示

问卷编辑器中每个题目右上角都会显示 DSL 标签,例如 Q3QS1Q2。编写规则时请以界面中的实际标签为准。

设置入口

入口在“全局设置” → “自定义逻辑”。

1709435641423

使用建议

  1. 先用可视化逻辑覆盖简单场景,复杂规则再切换到 DSL。
  2. 编写前先整理题号和逻辑流程,避免后续题号变化导致规则返工。
  3. 复杂规则建议先写小段并逐步验证,再拼接成完整逻辑。

例子

语句效果
IF Q1A1 THEN SHOW Q2第一题选了第一个选项,显示第二题
IF AND(Q1A1, Q2A2)) THEN SHOW Q3,Q4第一题选了第一个选项,并且第二题选中了第二个选项,显示第三题和第四题
IF AND(Q1A1, Q2>10)) THEN SHOW Q3第一题选了第一个选项,并且第二题的值>10,显示第三题
IF Q1A1 THEN SHOW Q2A1第一题选了第一个选项,显示第二题第一个选项
IF Q1A1 THEN HIDE Q2第一题选了第一个选项,隐藏第二题
IF Q1A1 THEN CHECK Q2A1第一题选了第一个选项,则自动勾选第二题第一个选项
IF Q1A1 THEN BRANCH FROM Q1 TO END第一题选了第一个选项,跳转到结束页(甄别题)
IF Q1A1 THEN BRANCH FROM Q1 TO Q4第一题选了第一个选项,则隐藏第一题到第四题之间的所有题
IF Q1A1 THEN SHOW Q2R1, Q2R2第一题选了第一个选项,则显示矩阵题的第二题

相关文档