【Cloud Foundry 应用开发大赛】屌丝录(DSL)问卷调查系统

屌丝录(DSL)问卷调查系统

应用URL: http://jove-survey.cloudfoundry.com

2个测试链接:

  • Sample survey http://jove-survey.cloudfoundry.com/survey/renderSurvey/2370
  • 360-degree survey for Steve Jobs http://jove-survey.cloudfoundry.com/survey/for/steve.jobs

填问卷

【Cloud Foundry 应用开发大赛】屌丝录(DSL)问卷调查系统_第1张图片

管理员参看各个问卷反馈情况

【Cloud Foundry 应用开发大赛】屌丝录(DSL)问卷调查系统_第2张图片

管理员参看某问卷所有反馈

【Cloud Foundry 应用开发大赛】屌丝录(DSL)问卷调查系统_第3张图片

应用说明及使用场景

我们需要投票系统

我们经常需要收集别人反馈, 如下次订哪个餐馆一起吃饭,或你愿意选谁作人大代表。

目前几种常见方案的硬伤

一种办法是直接当面问,或打电话或发email问。但是信息会收集的相当琐碎。如果你要对二千人作问卷,一个个打电话或是整理邮件回复会累死。另外有人或许更愿意匿名参与。

Outlook 2007后加入了投票功能。收信人只要点按钮就可以发表观点。但这个方案有一些问题:

  • 不能匿名投票
  • 只支持一个选择题,不能问多个问题或开放问题
  • 只支持Windows版的Outlook。Mac和WebAccess上的Outlook没有投票按钮

还有种做法就是使用在线系统,比较流行的是SurveyMoney。它可以让你在线编辑问卷,可以是选择题也可以是开放问题,参与者可以选择匿名参与。它还有不错的信息整理功能。 但是SurveyMoney的商业模式是限制免费版的功能。如果你不付费,只能让最多100人参与一个问卷,或你只能最多创建10个问卷

基于CF的问卷系统

既然http://cloudFoundry.com提供了免费的2G内存,免费的主流数据库,和免费CPU资源, 为什么我们不可以自己搭建问卷调查系统呢?

基于这个想法,我写了这个应用。暂定名字为“屌丝录“,拼音缩写为DSL。一方面这个系统比较面向极客(Geek)和屌丝,更重要的是它使用了DSL(Domain Specific Language)技术。

代码本身是开源的,我放在https://github.com/jove/surveyApp

熟悉Java或Grails的开发者可以修改代码,但是如果你只是修改一些页面文字,则只需要改几个配置文件。

考虑到问卷的设计比较频率比较低,所以没有做网页版设计。用户可以编写一个简单的DSL文件,非常简练的添加问题。

部署时只要把这个应用push到cf,然后以admin密码登录,让系统加载特定问卷,就可以生成URL让他人匿名参与。 最后,部署者可以在管理页面看到各个问卷的参与次数,并在一个页面看到对某一调查的所有反馈。

应用所使用的技术及软件

此系统主体用Grails编写,数据库中立,已测试过MySQL和PostgreSQL。

问卷DSL使用的是fixtures plugin。以下为一个简单问卷的DSL

import exp.*
fixture {
    q1(Question,text:'What is your gender?',options:['Male', 'Female'],defaultValue:'Male')
    q2(Question,text:'What is your name?',type:'short', defaultValue:'anonymous')
    q3(Question,text:'What is your comment?',options:[], defaultValue:'N/A')
    survey1(Survey,name:'A Very Simple Survey',questions:[q1,q2,q3])
}

UI用的是twitter-bootstrap plugin。

测试用的是Spock plugin, BDD (Behavior Driven Development)

创新点(亮点)

主要亮点是DSL+Bootstrap+BDD+Grails+CloudFoundry+GitHub

  • 用DSL高效设计问卷
  • 用Bootstrap改善界面
  • 用BDD做集成测试
  • 用Grails做快速开放
  • 用CloudFoundry DIY部署云问卷系统,任意人数参与投票,不限问卷个数
  • 用GitHub开放源码,共同改进,回馈社区

设计简约,界面大气,富有极客和屌丝精神 :)

喜欢就给我投票吧

你可能感兴趣的:(bootstrap,grails,DSL,CloudFoundry,fixture)