跳到主要内容

使用高级逻辑编写复杂规则

高级逻辑使用一行一条的 DSL 规则控制问卷。它适合基础规则无法直接表达的动态必填、批量目标、公式赋值、校验和标题替换。

  • 适合: 熟悉题目结构,需要维护复杂问卷流程的设计者
  • 前置条件: 已经确定题目顺序,并能在右侧预览中找到 Q1Q1A1 等标签
  • 完成后: 规则在右侧预览中生效,编辑器没有红色语法错误,并已点击 保存
推荐做法

普通显示、跳转、结束问卷和选项联动优先使用基础规则。高级逻辑更适合动态必填、批量控制、赋值、校验和标题替换。

第一步:打开高级逻辑

进入问卷编辑器,点击左侧 逻辑,再选择页面上方的 高级逻辑

页面分为两部分:

  • 左侧是高级逻辑编辑器,一行编写一条规则。
  • 右侧是问卷实时预览,题目和选项旁会显示可复制的 DSL 标签。

完成标志: 编辑器下方显示 AI 创建(系统启用 AI 时)、语法说明逻辑示例复制保存

第二步:从右侧复制题目标签

高级逻辑使用界面标签引用题目和选项:

标签含义
Q1第 1 道题
Q1A1第 1 道题的第 1 个选项
QS1Q1第 1 个题组里的第 1 道题
Q1S1A1矩阵题第 1 行第 1 列

把光标放到左侧编辑器中的目标位置,再点击右侧预览里的标签,系统会把标签插入光标位置。也可以输入 Q 或函数名前几个字母,从自动补全列表中选择。

不要根据题目标题猜标签。题目移动、加入题组或矩阵结构变化后,标签都可能改变,应以右侧预览当前显示为准。

第三步:编写第一条规则

最常见的结构是:

if 条件 then 动作

例如:

if Q1A1 then show Q2

它表示:如果第 1 题的第 1 个选项被选中,就显示第 2 题;条件不成立时隐藏第 2 题。

需要赋值、校验或替换标题时,使用另一种结构:

动作 目标 with 公式

例如:

assignment Q3 with SUM(Q1,Q2)
validate Q2 with IF(Q2>100,"不能超过100","")
replace Q2 with CONCATENATE("你好,",Q1)

查看完整写法:语法规则动作说明

第四步:处理语法提示

编辑器会实时检查每一行。规则不完整、标签不存在、括号未闭合或动作格式错误时,该行会显示红色背景和“未完成或有错误,请检查语法”。

可以使用以下辅助入口:

  • 语法说明:查看基本语法、题目变量、逻辑运算符和公式函数。
  • 逻辑示例:复制常见显示、跳转、赋值、校验示例。
  • 复制:复制当前编辑器全部内容,便于备份或复用。
  • AI 创建:系统启用 AI 后,可把自然语言转换成 DSL 草稿;生成结果会插入编辑器。
注意

语法检查只确认当前行的结构和标签可识别,不代表业务路径一定正确。AI 生成的内容也必须在右侧预览中逐条验证。

第五步:预览并保存

编辑器内容改变后,右侧问卷会自动使用草稿进行预览。建议先验证,再保存:

  1. 填写能让条件成立的答案,检查目标状态。
  2. 改成不满足条件的答案,检查状态是否恢复。
  3. 检查编辑器没有红色错误行。
  4. 点击 保存,把当前 DSL 写入问卷。

与基础规则不同,高级逻辑不会仅凭输入就完成保存。离开页面前必须点击 保存

完成标志: 点击 保存 后没有错误提示;重新进入高级逻辑时,刚才的规则仍然存在。

支持的动作

动作用途示例
show条件成立时显示题目、题组、选项或矩阵行if Q1A1 then show Q2
hide条件成立时隐藏题目或题组if Q1A1 then hide Q2
required条件成立时设置题目必填if Q1A1 then required Q2
branch跳到后续题目或结束问卷if Q1A1 then branch from Q1 to Q5
assignment把公式结果写入题目assignment Q3 with SUM(Q1,Q2)
validate根据公式返回动态校验提示validate Q2 with IF(Q2>100,"不能超过100","")
replace用公式结果替换题目标题replace Q2 with CONCATENATE("你好,",Q1)

推荐阅读