巧用腾讯问卷逻辑语言DSL,复杂问卷逻辑不再愁

2021-01-07 09:40:22 浏览数 (2)

作者:lzaneli  腾讯TEG前端开发工程师

|导语 腾讯问卷通过定义一套语义化的问卷逻辑语言,结合配套的问卷逻辑编辑器,让问卷调研者可以低成本、轻松、高效地实现复杂的自定义问卷逻辑。截止目前已经帮3.08k份问卷完成了复杂逻辑的定制。

公司新产品/新模式已推广了一段时间,却发现总是不够深度了解用户的想法、及竞品调研信息,导致推广策略频繁失误?学校/企业想做一份深度的心理测试,却发现很难针对性设置题目,结果不准导致测试毫无意义?问卷的逻辑设置起来比较困难?

比如想要制作这样一份深度/专业/定制化的调查问卷,发现目前常规的引用逻辑、显示逻辑、跳转逻辑不够灵活、甚至很难实现?

那不妨看看腾讯问卷新开发出的一套问卷逻辑语言

问卷逻辑语言是什么?

我直接举一个例子来说明,比如一份调查退休老人的问卷,由于男女退休年龄不同,逻辑条件为:性别为男并且年龄大于60周岁,或者性别为女并且年龄大于50周岁的条件时才显示第三题。可以用问卷逻辑语言描述成 

if ( Q1A1 and Q2 > 60 ) or ( Q1A2 and Q2 > 50 ) then show Q3   (Q1指第一题,Q1A1指第一题第一个选项)

如上图,在腾讯问卷自定义逻辑编辑器左侧的输入区域编写逻辑,即可在右侧实时预览问卷逻辑,确定逻辑后保存即可完成问卷逻辑设置。 

除了像上图展示的条件组合显示逻辑外,问卷逻辑语言还能实现更多实用的功能。比如内容替换逻辑,第二题题目中的部分内容替换为第一题的答案,只需一句 

replace "XXX" in Q2 title with Q1

比如量标题的比较逻辑,当第一题得分大于第二题的时候才显示第三题,只需一句

if Q1 > Q2 then show Q3

比如排序题的答案位置比较逻辑,当微信排在第一位的时候,显示第二题

if index Q1A2 == 1 then show Q2

还可以控制一个选项是否显示,实现矩阵题的选项引用功能

if Q1 then show Q2

if Q1A1 then show Q2A1

if Q1A2 then show Q2A2

if Q1A3 then show Q2A3

问卷逻辑语言支持哪些功能?

问卷逻辑语言的功能远不只上面提到的这些,因为这是一门语言,限制你的只会是你的想象力~ 目前已经支持了以下的基本语法、操作符和函数

根据上面这些基本组成单元随意组合实现如下这些逻辑

为什么要开发问卷逻辑语言?

一份专业的问卷离不开问卷逻辑,而现有的GUI前端组件配置的方案功能不够强大,没法实现复杂的逻辑组合需求,且逻辑编写起来比较低效,需要多次鼠标点击操作,或在多个页面中跳转,编写完后的逻辑也不易检查和导出。

在CDC内部经常出现逻辑复杂的专业调查问卷,以前在遇到系统功能无法满足需求的时候,我们会采用定制问卷的方案,即安排一个开发,将一份特定问卷的定制逻辑写死在代码里面。缺点显而易见,一是成本太高,需要安排开发人员参与,并且由于是定制化的产物,问卷逻辑不可复用,耗费了大量的研发资源;二是开发时效性受排期影响,无法满足大量的定制问卷。从15年至今CDC内部共计产生77份定制问卷,按照每份定制问卷花费3个人天的成本计算,共计耗费了231个人天的研发资源。

并且开发这类定制问卷毫无任何成就感可言,且大都是紧急需求,经常导致加班。

为了解决这个问题,我们经过前期探索,最终选择了自定义一套逻辑语言的方案。主要考虑点是在保证安全性的前提下,平衡拓展性和易用性。由于是基于语义化的设计,这门语言非常简单,根据前期的推广使用和上线后的反馈,基本上非开发的同学也可以快速上手。原本需要安排一位开发花费3天的时间做定制开发,使用本方案后,在熟悉问卷逻辑语言的语法之后,用户自己10分钟即可完成逻辑设置。

这个功能从5月开始在CDC灰度使用,并于11月份对外正式发布。截止目前已经帮CDC用研团队实现复杂逻辑的问卷103份,假设用之前定制问卷的方案,需要耗费309个开发人天。

并且由于成本的大幅度降低,复杂的问卷逻辑不再需要定制开发,我们希望可以将设置复杂问卷逻辑的能力赋予更多团队,帮助大家提高问卷回收数据的质量。截止目前已经有3.08k份问卷通过问卷逻辑语言完成了复杂逻辑的定制。

上线之后我们也受到了很多团队的反馈和鼓励,包括但不限于企鹅智酷、微信支付、腾讯文档、腾讯视频、QQ、QQ音乐、微信游戏中心、王者荣耀、自选股、穿越火线、微众银行、京东、酷狗音乐 ...

我想使用问卷逻辑语言!

感谢你读到了这里,目前腾讯问卷逻辑语言已经上线在腾讯问卷中,你只需在问卷的编辑页点击右上角的“自定义逻辑”即可进入编辑器。

近期热文

QQ浏览器大盘指标体系搭建与拆解

【前端技术】react渲染 - 流程概述

用“新”连接你我——携手玩家共创内容生态之路

让我知道你在看

0 人点赞