Skills

A skill is a qualification that applies to both tasks and resources. Tasks that require specific skills will only be assigned to resources that have those skills. A skill can either be simple (it is there or not) or have a level (a qualification level for example).

If OMD Go requires to handle more than one skill for a task, the skill field of the task can be used to express this constraint as a logical expression. The logical expression can contain logical and (&&), logical or (||) and logical negation (!), predicates as well as parentheses for cascaded logical expressions.

Furthermore, comparisons are allowed. They can be used to compare required skill levels by using the level() function.

Examples

The requirement for skills A and B would be expressed as: "A" && "B".

The requirement for A or B, with the constraint that B should not occur in combination with skill C would be expressed as: "A" || ("B" && !"C"). Only resources that have a matching skill set will be considered a candidate for the task.

Note that all skills need to be quoted to allow any string literal as a skill identifier. There is a limitation for skill identifiers: they may not contain linefeed or end of line characters nor the quote character.

The level() function retrieves the level of the resource's skill definition. This allows expressions such as level("A") > 1.5 or level("A") == level("B").

Supported comparisons are <, >, <=,>=, == (equal) and != (not equal). The level() function will cause an exception to be thrown if the resource does not have the provided skill, causing the evaluation of the expression to return false.

In case the expression is not recognized by OMD Go, the string will be interpreted as a single unquoted skill identifier. Evaluation of the constraint will then return true if and only if one of the resource's skills matches the unquoted skill identifier.