5

I created a survey, and made it function as a quiz by creating a workflow that "grades" the survey after it is taken. This workflow is basically a conditional for each question compairing their answer to the correct answer, and then increments a local workflow variable with points if they got the answer correct. To save the "grade" in the quiz itself I added two questions (one named FinalScore (numeric) and one named FinalGrade ("passed" or "failed"), these are the fields that the workflow updates.

Then I customized the "All Responses" view to include those two columns. I made this view the "default" view so that after taking the survey users are redirected here. Also changed permissions, so that users can only view their own surveys, and editing surveys is not allowed, but they are allowed to submit multiple surveys.

So far, this has seemed like a manageable solution that did not require me to write any custom code. However there are some things I would like to improve, but am not sure how.

1) After users finish the survey, they get redirected to my custom "all response" view. However it takes the work flow a few seconds to run and "grade" the quiz, so they need to refresh the page after a few seconds to see their score. Is there a more elegant way to handle the entire "finishing the survey" experience for the user?

2) In order to find a place to store the graded results, I ended up creating columns (which dispalyed as questions) in the survey. Is there a better place to store their result data? And if their isn't, is there a way to not show these dummy questions?

3) Creating the work flow to grade the quiz is easy for me to do, however if a user wants to create their own quiz, creating (and testing) the grading work flow might be difficult for them. In an "Ideal" world they would either create another list with the answer key, or even someone how extend the "create survey" to include a spot for them to mark which answer is correct. I have no idea how to dynamically use that data to create a new workflow, or even if that approach is correct.

Thanks for any input, I am new to Sharepoint so if my approach has been total off base that feedback would be great too!

2 Answers 2

1

Great question!

1) SharePoint has events you can handle for when certain things happen such as the creating and updating of list items. Now for the survey you would be looking at creating a custom ItemUpdating event because the item gets saved for every page (this allows users to start and finish at different times). Since we are doing it on update you need to determine within the event if the user is ready to submit for grading. If yes, calculate the grade. The real important thing here is the ItemUpdating even though and the rest of the logic will come as you figure out your design. ItemUpdating has a counterpart ItemUpdated and its important to note that ItemUpdating will occur while the data is being submitted and as such before the user is redirected. ItemUpdated will occur after the data has been submitted and runs the risk of not occurring right away.

2) Out of the box the only thing I can think of for this is to include branching logic in your survey. For example if the Survey ends on Q5 and you have Q6, Q7, and Q8 as data you could on Q5 have branching logic where all answer point to a new page, Q9 which will say something like you have successfully completed the quiz - or something along those lines.

3) In 2010 you can create a SharePoint designer workflow as a reusable workflow. With this in mind you could create a template workflow for people to start from but the problem is that the question format of one quiz could be significantly different than another making templating something like this a little difficult. There would be a bit of a learning curve / training that someone would have to go through to use such a template. If you go a more custom route you could do something where on FieldAdded (another SharePoint event!), automatically create an item in the answer key list and then when they are done they just have to go fill out their answer key and then the events when the quiz is done would take care of the grading.

Let me know if you have any questions! Hope this helped.

1
  • Your solution to #2 I like (although now I have an extra field for the "You have finished" message).. I'll try out your ideas for #1 and #3 and also see if anyone else has feedback.. thanks!
    – Brandon
    Commented Feb 3, 2012 at 19:17
1


I have been working as a SharePoint developer at Collaboris and we have just released DocSurvey which allows you to do quizzes. There's also a reporting side allowing you to see a break down of pass / fail by question.

It uses the OOTB SharePoint Survey and enhanced for the quiz functionality. If you are looking for a third party add-on for the SharePoint Quiz functionality, this will be a great tool.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.