Note that there are some explanatory texts on larger screens.

plurals
  1. POLooking for tips to build "TestMaker" (Questions and Responses) application with Evaluation Engine
    text
    copied!<p>I'm working on a new project. My best analogy would be a psychological evaluation test maker.</p> <p><strong>Aspect #1.</strong> The end-business-user needs to create test questions. With question types. And possible responses to the questions when applicable.</p> <p>Examples:</p> <pre><code>1. Do you have red hair? (T/F) 2. What is your favorite color? (Single Response/Multiple Choice) (Possible Responses: Red, Yellow, Black, White) 3. What size shoe do you wear (rounded to next highest size)? (Integer) 4. How much money do you have on you right now? (Dollar Amount (decimal)) </code></pre> <p>So I need to be able to create questions, their question type, and for some of the questions, possible answers.</p> <p>Here:</p> <p>Number 1 is a know type of "True or False".</p> <p>Number 2 is a know type of "Single Response/Multiple Choice" AND the end-business-user will create the possible responses.</p> <p>Number 3 is a known type of "Integer". The end-user (person taking the evaluation) can basically put in any integer value.</p> <p>Number 4 is a known type of "Decimal". Same thing as Integer.</p> <p><strong>Aspect #2.</strong> The end-business-user needs to evaluate the person's responses. And assign some scalar value to a set of responses.</p> <p>Example:</p> <p>If someone responded:</p> <pre><code>1. T 2. Red 3. &gt;=8 4. (Not considered for this situation) </code></pre> <p>Some psychiatrist-expert figures out that if someone answered with the above responses, that you are a 85% more at risk for depression than the normal. (Where 85% is a number the end-business-user (psychiatrist) can enter as a parameter.</p> <p>So Aspect #2 is running through someone's responses, and determining a result.</p> <p>The "response grid" would have to be setup so that it will go through (some or all) the possibilities in a priority ranking order, and then after all conditions are met (on a single row), exit out with the result.</p> <p>Like this:</p> <pre><code>(1.) T (2.) Red (3.) &gt;=8 ... Result = 85% (1.) T (2.) Yellow (3.) &gt;=8 ... Result = 70% (1.) F (2.) Red (3.) &gt;=8 ... Result = 50% (1.) F (2.) Yellow (3.) &gt;=8 ... Result = 40% </code></pre> <p>Once a match is found, you exit with the percentage. If you don't find a match, you go to the next rule.</p> <p>Also, running with this psych evaluation mock example, I don't need to define every permutation. A lot of questions of psych evaluations are not actually used, they are just "fluff". So in my grid above, I have purposely left out question #4. It has no bearing on the results.</p> <p>There can also be a "Did this person take this seriously?" evaluation grid:</p> <pre><code>(3.) &gt;=20 (4.) &gt;=$1,000 ... Result = False </code></pre> <p>(The possibility of having a shoe size >= 20 and having big dollars in your pocket is very low, thus you probably did not take the psych test seriously.)</p> <p>If no rule is found, (in my real application, not this mock up), I would throw an exception or just not care. I would not need a default or fall-through rule. In the above, Red and Yellow are "worrisome" favorite colors. If your favorite color is black or white, it has no bearing upon your depression risk factor.</p> <p>I have used Business Rule Engines in the past. (InRule for example). They are very expensive, and it is not in the budget.</p> <p>BizTalk Business Rules Framework is a possibility. Not de$irable, but possible.</p> <p>My issue with any Rules-Engine is that the "vocabulary" (I have limited experience with business rules engines, mind you) is based off of objects, with static properties.</p> <pre><code>public class Employee { public string LastName { get; set; } public DateTime HireDate { get; set; } public decimal AnnualSalary { get; set; } public void AdjustSalary(int percentage) { this.AdjustSalary= this.AdjustSalary + (this.AdjustSalary * percentage); } } </code></pre> <p>This would be easy to create business rules.</p> <pre><code>If the (Employee's HireDate) is before (10 years ago) then (Increase Their Salary) By (5) Percent.) else (Increase Their Salary) By (3) Percent.) </code></pre> <p>But in my situation, the Test is composed of (dynamic) Questions and (dynamic) Responses, not predetermined properties.</p> <p>So I guess I'm looking for some ideas to investigate on how to pull this off.</p> <p>I know I can build a "TestMaker" application fairly quickly.</p> <p>The biggest issue is integrating the Questions and (Possible Responses) into "evaluating rules".</p> <p>Thanks for any tips.</p> <p>Technologies: DotNet 4.0 Framework Sql Server 2008 Backend Database VS2010 Pro, C#</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload