Ищите советы по созданию приложения «TestMaker» (Вопросы и ответы) с помощью Evaluation Engine - PullRequest
4 голосов
/ 03 ноября 2011

Я работаю над новым проектом. Моей лучшей аналогией был бы психолог-тестировщик.

Аспект №1. Конечный бизнес-пользователь должен создать тестовые вопросы. С типами вопросов. И возможные ответы на вопросы, когда это применимо.

Примеры:

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))

Так что мне нужно иметь возможность создавать вопросы, их тип вопроса, а для некоторых вопросов возможные ответы.

Здесь:

Число 1 - это известный тип "True или False".

Номер 2 - это известный тип «Один ответ / множественный выбор», и конечный бизнес-пользователь создаст возможные ответы.

Число 3 - это известный тип "Integer". Конечный пользователь (лицо, проводящее оценку) может в основном ввести любое целое число.

Число 4 - это известный тип "десятичного числа". То же самое, что и Integer.

Аспект № 2. Конечный бизнес-пользователь должен оценить ответы человека. И назначьте некоторое скалярное значение для набора ответов.

* +1025 * Пример:

Если кто-то ответил:

1.  T
2.  Red
3.  >=8
4.  (Not considered for this situation)

Некоторые психиатры-эксперты выясняют, что, если кто-то ответил с вышеуказанными ответами, то вы на 85% больше подвержены риску депрессии, чем обычно. (Где 85% - это число, которое конечный бизнес-психиатр может ввести в качестве параметра.

Таким образом, Аспект # 2 просматривает чьи-то ответы и определяет результат.

«Сетка ответа» должна быть настроена таким образом, чтобы она проходила (некоторые или все) возможности в порядке ранжирования приоритетов, а затем, после того как все условия выполнены (в одной строке), выходила с результат.

Как это:

(1.) T     (2.) Red       (3.) >=8    ... Result = 85%
(1.) T     (2.) Yellow    (3.) >=8    ... Result = 70%
(1.) F     (2.) Red       (3.) >=8    ... Result = 50%
(1.) F     (2.) Yellow    (3.) >=8    ... Result = 40%

Как только совпадение найдено, вы выходите с процентом. Если вы не нашли соответствия, переходите к следующему правилу.

Кроме того, при работе с этим примером психической оценки мне не нужно определять каждую перестановку. Многие вопросы психологических оценок на самом деле не используются, они просто «пух». Таким образом, в моей таблице выше я намеренно пропустил вопрос № 4. Это не имеет никакого отношения к результатам.

Может также быть "Этот человек отнесся к этому серьезно?" оценочная сетка:

(3.) >=20    (4.) >=$1,000    ... Result = False

(Возможность иметь размер обуви> = 20 и иметь большие доллары в кармане очень мала, поэтому вы, вероятно, не восприняли психологический тест всерьез.)

Если правила не найдены (в моем реальном приложении, а не в этом макете), я бы выбросил исключение или просто не заботился. Мне не нужно правило по умолчанию или сквозное правило. В вышесказанном, красный и желтый являются «тревожными» любимыми цветами. Если ваш любимый цвет - черный или белый, он не влияет на ваш фактор риска депрессии.

В прошлом я использовал Двигатели бизнес-правил. (Например, InRule). Они очень дорогие, и это не в бюджете.

Возможности BizTalk Business Rules Framework. Не подлежит оплате, но возможно.

Моя проблема с любым движком правил состоит в том, что «словарь» (имейте в виду, у меня ограниченный опыт работы с механизмами бизнес-правил) основан на объектах со статическими свойствами.

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);
        }

}

Было бы легко создать бизнес-правила.

If 
        the (Employee's HireDate) is before (10 years ago) 

then 
        (Increase Their Salary) By (5) Percent.)

else
        (Increase Their Salary) By (3) Percent.)

Но в моей ситуации Тест состоит из (динамических) Вопросов и (динамических) Ответов, а не предопределенных свойств.

Так что, я думаю, я ищу несколько идей, чтобы выяснить, как это осуществить.

Я знаю, что могу довольно быстро создать приложение "TestMaker".

Самая большая проблема - это интеграция Вопросов и (Возможных Ответов) в «правила оценки».

Спасибо за любые советы.

Технологии: DotNet 4.0 Framework Серверная база данных Sql Server 2008 VS2010 Pro, C #

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Вы уверены, что хотите использовать механизм бизнес-правил для этой проблемы?

Насколько я понимаю, сценарий использования BRE -

  • В основном статический поток выполнения
  • Некоторые решения часто меняются

В вашем случае использования вся система (Q / A-поток и оценка) является динамической, поэтому ИМХО простой язык, специфичный для всей системы, будет лучшим решением.


Возможно, вы захотите черпать вдохновение из testMaker - веб-приложения именно для этого рабочего процесса. (Отказ от ответственности: я внес небольшой вклад в этот проект.) Правила его начисления довольно просты, так что это может вам не сильно помочь. Он был разработан для экспорта данных в SPSS и создания оттуда отчетов ...

1 голос
/ 16 ноября 2011

Убедитесь, что вы моделируете базу данных, подходящую для иерархических объектов. Эта статья поможет

создать таблицу для теста; создать таблицы для вопросов; с столбцами: вопрос, тестид, тип вопроса, создать таблицы для ответов., идентификатор ответа, идентификатор вопроса, ответы и столбцы ответов на вопросы принадлежат вопросам, на один вопрос может быть много ответов

создать таблицу для пользователя или сотрудника создать таблицу для ответов пользователя, идентификатор ответа, выбранный ответ

оценка (используйте объектные переменные для покрытия с булевыми целыми числами, используйте try catch, прежде чем использовать функцию для покрытия с высокими исключениями.):

function(questiontype,answer,useranswer)
switch(questiontype) //condition can be truefalse, biggerthan,smallerthan, equals
{
case: "biggerthan": if(useranswer>answer) return true else return false;
case "truefalse": if(useranswer==answer) return true else return false
case "equals": if(useranswer==answer) return true else return false
}

получите вывод в виде словаря данных и опубликуйте здесь, пожалуйста.без схемы данных помощь, которую вы получите, будет ограничена.

1 голос
/ 13 ноября 2011

Если это небольшое приложение, т.е. 10 пользователей, а не 1000, и оно не критично для бизнеса, то я бы порекомендовал Excel.

Преимущества в том, что большинство бизнес-пользователей хорошо знакомы с Excel, а большинствонаверное есть на своих машинах.В основном вы отправляете рабочую книгу Excel своим бизнес-пользователям.Они будут вводить вопросы, тип (десятичное, истинное ложное и т. Д.).Нажмите кнопку, которая запускает макрос Excel.Это может создать файл конфигурации XML или поместить вопросы в SQL.Ваше приложение просто читает его, отображает и собирает ответы как обычно.

Основное преимущество Excel заключается в аспекте № 2, динамически выбираемых пользователем бизнес-правилах.На другом листе того же документа Excel конечный бизнес-пользователь может указать столько перестановок ответов / вопросов, сколько ему хочется.Пользователи Excel хорошо знакомы с вводом простых формул, таких как = If (A1> 20 && A2 <50) и т. Д. Снова пользователь нажимает кнопку и генерирует либо файл конфигурации, либо вводит данные на сервер SQL. </p>

InВ вашем приложении вы просматриваете таблицу правил и применяете ее к ответам.

Учитывая количество пользователей / опросов и т. д. Это простое решение будет гораздо проще, чем biztalk или полный механизм таможенных правил.Biztalk был бы хорош, если вам нужно общаться с несколькими системами, интегрировать их данные, применять правила, создавать рабочий процесс и т. Д. Большинство других механизмов правил также ориентированы на действительно большую и сложную систему правил.Сложность в этих системах правил, это не просто количество правил или перестановок, это в основном необходимость разговаривать с несколькими системами или «Завершить свидание» с определенными правилами или устанавливать правила для будущих дат начала и т. Д.

В вашем случае отлично подойдет таблица данных на основе Excel или аналогичная сетка данных на веб-странице.Если, конечно, вы не работаете над проектом для Gartner или какой-либо другой всемирной фирмы по сбору данных или крупной государственной статистической организации.В этом случае я бы предложил Biztalk или другие коммерческие механизмы правил.

В вашем случае это SQL-таблицы с вопросами, типами ответов, правилами для применения.Ввод осуществляется с помощью Excel или «Excel в Интернете» через сетку данных, а затем просто повторяется по правилам и применяется к таблице ответов.

...