!!! Conditions

At this page you can find the documentation for conditions. Conditions are an essential part of several markups, e.g. [rules | Doc Rules], [covering lists | Doc SetCoveringKnowledge], [abstraction tables | Doc AbstractionTable] and [test cases | Doc TestCaseTable]. Conditions are used to define a logical expression on some findings and/or outcomes of a d3web diagnostic session, to tell d3web how to action under specific circumstances.

!! Simple Conditions

There is a set of simple conditions to directly test values of specific questions and solutions. The most common is the "=" operator to check for a specific value.

%%prettify
{{{
// check for a certain choice
choice-question = choice

// note: for multiple-choice questions this evaluated to "true" 
// if the choice is selected, regardless is any other choice is 
// additionally selected
// thus the following example might become true for those questions
mc-question = choice1 AND mc-question = choice2

// check if the value is "known" (a value of its normal range is 
// answered) or if the value is "unknown" (the "unknown" choice 
// of the question is selected explicitly)
any-question = known
any-question = unknown

// check the state of a solution
solution = established
solution = suggested
solution = excluded

// check a question to match a regular expression.
// the operator evaluates to "true" if the regular expression 
// matches the whole answer given.
// note: the special "/" before and after the regular expression
text-question = /.*regex.*/
}}}
/%

For more details to regular expression, see e.g. [java documentation of regular expressions | http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html].


!! Numeric Conditions

Especially for numerical questions, there is a set of additional test operators.

%%prettify
{{{
// first we might use the original compare to equal, 
// both operators are the same
num-question = 10
num-question == 10

// there are also checks against limits of various types
num-question <= 10
num-question >= 10
num-question < 10
num-question > 10

// finally there is a special operator to check for intervals
num-question [10 20]
}}}
/%


!! Compound Conditions

The following operators can be used to build more complex expressions from simple rule conditions:

* NOT( condition ) --- true, if the condition does not apply
* (condition1) AND (condition2) --- true, only if both conditions apply at the same time
* (condition1) OR (condition2) --- true, if at least one of the conditions do apply


!! Other Types of Formulas

For more complex formulas on any values there is also a further extension available. But be careful, this extension is non-LGPL-licensed for comercial use: [Extended Expressions: Conditions and actions | Doc Expressions]