使用高级逻辑编写复杂规则
高级逻辑使用一行一条的 DSL 规则控制问卷。它适合基础规则无法直接表达的动态必填、批量目标、公式赋值、校验和标题替换。
- 适合: 熟悉题目结构,需要维护复杂问卷流程的设计者
- 前置条件: 已经确定题目顺序,并能在右侧预览中找到
Q1、Q1A1等标签 - 完成后: 规则在右侧预览中生效,编辑器没有红色语法错误,并已点击 保存
推荐做法
普通显示、跳转、结束问卷和选项联动优先使用基础规则。高级逻辑更适合动态必填、批量控制、赋值、校验和标题替换。
第一步:打开高级逻辑
进入问卷编辑器,点击左侧 逻辑,再选择页面上方的 高级逻辑。
页面分为两部分:
- 左侧是高级逻辑编辑器,一行编写一条规则。
- 右侧是问卷实时预览,题目和选项旁会显示可复制的 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 生成的内容也必须在右侧预览中逐条验证。
第五步:预览并保存
编辑器内容改变后,右侧问卷会自动使用草稿进行预览。建议先验证,再保存:
- 填写能让条件成立的答案,检查目标状态。
- 改成不满足条件的答案,检查状态是否恢复。
- 检查编辑器没有红色错误行。
- 点击 保存,把当前 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) |