B.2 Operators

The power of CBA ItemBuilder`s Conditional Links (see section 4.3) and Finite-State Machines (see section 4.4) is achieved by the fact that actions can be executed when Conditional Links are activated or transition between states are triggered by active Rules. Moreover, scoring of Tasks can incorporate component states and additional information provided by the CBA ItemBuilder at runtime (see section 5.3.2).

For many purposes, so-called Operators are available (see section 4.4.6), which are listed in a table in this part of the appendix:

  • Table B.8 lists operators for State Machines
  • Table B.9 lists operators for Component States
  • Table B.10 list operators for Trees
  • Table B.11 lists operators for Evaluations
  • Table B.12 lists finite-state machine operators for Task Management
  • Table B.13 lists finite-state machine operators for Calculation Engine
  • Table B.14 lists Logical Expressions
  • Table B.15 lists operators for Comparisons
  • Table B.16 lists Arithmetic operators
  • Table B.17 lists Text operators
  • Table B.18 lists Miscellaneous operators

In addition to the operator and a description, each table also indicates whether the operator has a return value. If this is the case, an operator can also be used in a condition (see section 4.4.5 for conditions in FSM Rules, section 4.3 for conditions in Conditional Links, and section 5.3.2 for Scoring Conditions).

Tables in this appendix last verified and updated for version 10.4.
TABLE B.8: Operators for State Machine Variables
Operator Description
initFSM(Events) Execute state machine events.
raise(Event) Raise the given Event after the current event has been processed completely. Multiple operator calls in one rule raise the events in the order of the operator calls.
reset(Variable, Variable, ...) Set the values of the given Variables to 0.
set(Variable, Value) Set the given integer Variable to the given Value.
setString(Variable, Value) Set the given string Variable to the given Value.
setBool(Variable, Value) Set the given boolean Variable to the given Value.
setFSMEvent (Event, Timeout) Set the triggering interval for the given timer Event to the given Timeout (in milliseconds).
setFSMState (State, Page) Set the page attribute for the given State in the state machine to the given Page.
is_last_state (State, State, ...) Return true if the last state the state machine was in is one of the given States.
raised_all_events (Event, Event, ...) Return true if all given Events have been raised during the execution of the current task. We consider an event raised even if it did not trigger a transition. We also include events raised by the raise() operator.
raised_events() Return the number of events that have been raised during the execution of the current task. We consider an event raised even if it did not trigger a transition. We also include events raised by the raise() operator.
raised_all_events_in_state (State, Event, Event, ...) Return true if all given Events have been raised in the given State during the execution of the current task. We consider an event raised even if it did not trigger a transition. We also include events raised by the raise() operator.
raised_nb_events (Event, Event, ...) Return the number of events among the given Events that have been raised during the execution of the current task. We consider an event raised even if it did not trigger a transition. We also include events raised by the raise() operator
raised_nb_events_in_state (State, Event, Event, ...) Return the number of events among the given Events that have been raised in the given State during the execution of the current task. We consider an event raised even if it did not trigger a transition. We also include events raised by the raise() operator.
variable_in (Variable, Value, Value, ...) Return true if the value of the given Variable equals one of the given Values.
visited_all_states (State, State, ...) Return true if all given States have been visited during the execution of the current task.
visited_all_values_of_variable(Variable, Value, Value, ...) Return true if the value of the given Variable has covered all given values during the execution of the current task. Only initial values and values before and after an event has been processed are considered. Intermediate value changes due to modifications by the user (e.g. through a SpinnerValueInput) or during event processing are left out. 0 is used as variable value at the start of the FSM unless the variable has been initialized explicitly to a different value when processing the initial transition from the start state.
visited_nb_states (State, State, ...) Return the number of the given States that have been visited during the execution of the current task.
visited_nb_values_of_variable(Variable, Value, Value, ...) Return the number of given Values that the given Variable has covered during the execution of the current task. Only initial values and values before and after an event has been processed are considered. Intermediate value changes due to modifications by the user (e.g. through a SpinnerValueInput) or during event processing are left out. 0 is used as variable value at the start of the FSM unless the variable has been initialized explicitly to a different value when processing the initial transition from the start state.
changeLanguage(languageCode) Activate the language switch at runtime. The current language will be changed to the specified languageCode at runtime (see section 3.16).
TABLE B.9: Operators for Component States
Operator Description
setActive(Component), unsetActive(Component) Set the Component ‘active’ or ‘inactive’. This switches between the two ‘toggling’ states of the Component like checked/unchecked for a CheckBox or a RadioButton, pushed/released for a Button in toggling mode or selects an item in a list like the ComboBoxItem in a ComboBox.
setFrozen(Component), unsetFrozen(Component) Set the ‘Is Frozen’ attribute of the given Component.
setHidden(Component), unsetHidden(Component) Set the ‘Is Hidden’ attribute of the given Component.
setHighlightable(RichText), unsetHighlightable(RichText) Set the ‘Highlightable’ attribute of the given RichText component.
setMultiselect(Container), unsetMultiselect(Container) Switch the selection mode of the given select group Container between multi-select and single-select.
setNoDeselect(Container), unsetNoDeselect(Container) Switch the deselect flag of the given select group Container between no-deselect and deselect. The flag has no effect in multi-select mode.
setSelectable(Component), unsetSelectable(Component) Set the ‘Selectable’ attribute for the given Component.
setEmbeddedPage(PageArea, Page) Set the given Page as embedded page for the given PageArea.
focus(Component) Set the focus to a component. Note that the object should be on the current page, otherwise the focus operation might have no effect. If the object is not visible on the page it is scrolled to the object to make it visible.
initMediaPlayer(Component, Property, Property, ...) Initialize the given media player Component. The following Properties will be set (if not explicitly given the default values are used):
  - automaticStart (default false): Starts the media player automatically when its parent page is displayed, stops when the page is left.
  - hideControls (default false): Hide all controls.
  - maxPlay (default 0, means unlimited): Number of times the media player resource can be played. Note that a resource is counted as ‘played’, if it reaches the end, or if it is stopped explicitly (i.e. not when leaving the page). A sequence of pause and start operations does not count.
setMediaPlayer(Component, Operation) Control the given media player Component. The following Operations are available:
  - mp_start: starts the media player execution at the beginning or continues when paused.
  - mp_stop: stops the media player execution and rewinds to the beginning.
  - mp_pause: pauses the media player execution (without rewinding).
setMediaPlayerVolume(Component, Volume) Control the volume of the given media player Component. The Volume ranges from 0 (mute) to 10 (maximum volume).
setValueDisplayMode(Component, Mode) Set the drag&drop mode of the given Component. The following Modes are available:
  - dd_none: the component does not allow dragging or dropping.
  - dd_drag: the component only allows dragging.
  - dd_drop: the component only allows dropping.
  - dd_dragdrop: the component allows both dragging and dropping.
setInputValue(InputSource, InputTarget, NewSourceValue) Set the text value of the InputTarget component to the current value of the InputSource component and initialize InputSource with the value of the NewSourceValue if a NewSourceValue is given. Notes:
  - InputSource and Input Target can be identical, in that case only the NewSourceValue is relevant.
  - If values from (multi-line) InputFields are assigned to SingleLineInputFields or SearchFields, then only the first line of the InputField (up the the ‘first end of line’ character) is taken into account.
  - In a NewSourceValue String any ‘end of line’ character is represented as \n (e.g. line1\nline2\nline3).
  - The operator may overwrite SingleLineInputFields or InputFields, even if they are ‘read-only’.
insertText(InputField, TextToInsert, InsertPosition, DropLength) Insert the given TextToInsert into the InputField component at the specified InsertPosition. Drop the number of old characters specified by DropLength starting at the given InsertPosition before inserting the new text. A value of -1 for InsertPosition appends the text. A value of -1 for DropLength drops all old characters after the InsertPosition. DropLength is optional (defaults to -1). InsertPosition is optional if no DropLength is given (defaults to -1).
TABLE B.10: Operators for Trees
Operator Description
current_node(Tree, RegularExpression) Return true if the node ID of the current node in the given Tree matches the given RegularExpression.
exists_nodes(Tree, RegularExpression, RegularExpression, ...) Return the number of nodes in the given Tree whose node ID matches at least one of the given RegularExpressions. Each node counts once only.
visited_nodes(Tree, RegularExpression, RegularExpression, ...) Return the number of visited nodes in the given Tree whose node ID matches at least one of the given RegularExpressions. Each node counts once only.
matches_nodes(Tree, NodeIdPattern, ColumnPattern, ColumnPattern, ...) Return the number of nodes in the given Tree whose node path ID matches the NodeIdPattern and whose column values match the specified ColumnPatterns: The first ColumnPattern corresponds to the node name, the second ColumnPattern to the first additional column, etc. Each node counts once only.
tree_move(Tree, Node) Move the currently selected node in the given Tree into the given Node. The operator ignores the ‘read-only’ flag of the Tree.
tree_copy(Tree, Node) Copy the currently selected node in the given Tree into the given Node. The operator ignores the ‘read-only’ flag of the Tree.
TABLE B.11: Operators for Evaluations
Operator Description
matches(Component, RegularExpression), matches(Component, RegularExpression, Selector) Return true if the text content of the Component matches the RegularExpression. For spreadsheet table cells containing a formula the formula result counts as text content. The Selector options are:
  - formula: The formula text of a spreadsheet table cell counts as text content (instead of the formula value).
user_interactions() Return the number of user interactions within the current task execution.
getItemScore(Task, Calculation) Trigger all scoring calculations for the requested Task and return the requested calculation result. Valid Calculation values are:
  - result: overall result (‘1’ if there are no misses and the minimum required number of hits has been reached, otherwise ‘0’
  - nb_hits: number of hits
  - hit_weight: total weight of hits
  - nb_misses: number of misses
  - miss_weight: total weight of misses
  - credit_class: name of the class with the highest class weight
  - credit_weight: weight of the class with the highest class weight
  - nbInteractions: number of user interactions since start of the current task execution
  - nbInteractionsTotal: accumulated number of user interactions in previous executions of the task
  - reactionTime: time (in milliseconds) between the start of this task execution and the first user interaction
  - reactionTimeTotal: accumulated time (in milliseconds) between the start of the task execution and the first user interactions in previous executions of the task
  - execTime: time in (milliseconds) since the start of this task execution
  - execTimeTotal: accumulated time (in milliseconds) in previous executions of the task
highlighted(RichText, RichText, ...) Return true if in at least one of the given TextFields all non-blank characters are highlighted. Empty lines correspond to a blank character.
complete(Selection, Selection, ...) Return true if all Selections are selected or completely highlighted. A text block is completely selected if all non-blank characters of the text block are highlighted. Empty lines correspond to a blank character. A Link counts as selected if it was visited already.
partial(Selection, Selection, ...) Return true if at least one of the given Selections is selected or partly highlighted. A text block is partly selected if at least one non-blank character of the text block is highlighted. Empty lines correspond to a blank character. A Link counts as selected if it was visited already.
current_page(Page), current_page(Page, PageArea) Return true if the given Page is currently displayed:
  - One parameter variant: Is the page displayed at the top level?
  - Two parameter variant: Is the page displayed in the given PageArea?
bookmarked(Page) Return true if the given Page is currently bookmarked.
integer_value(Component, RoundingMode, Default) Evaluate the text content (or formula value for spreadsheet table cells containing a formula) of the given Component as integer:
  - If the text content is empty or does not represent a number, return the Default value.
  - If the text content represents a number and RoundingMode is ‘up’, then round up always: 1.0 => 1; 1.1 => 2; -1.0 => -1; -1.1 => -2
  - If the text content represents a number and RoundingMode is ‘down’, then round down always: 1.9 => 1; 2.0 => 2, -1.9 => -1; -2.0 => -2
  - If the text content represents a number and RoundingMode is ‘half_up’, then round up at x.5: 1.4 => 1; 1.5 => 2, -1.4 => -1; -1.5 => -2
  - If the text content represents a number and RoundingMode is ‘half_down’, then round down at x.5: 1.5 => 1; 1.6 => 2, -1.5 => -1; -1.6 => -2
panel_distance_range (Container, MinDistance, MaxDistance, Center, Component, Component, ...) Return true if
  - the mutual distance of all given Components in the given Container is within the given range MinDistance..MaxDistance and
  - for all other components in the given Container the distance is outside the given range for at least one of the given Components.
  The distance is calculated between
  - the centers of the Components if the Center flag it true
  - the upper left corners of the Components if the Center flag is false.
panel_position_range (Container, XStart, XEnd, YStart, YEnd, Center, Component, Component, ...) Return true if
  - the (X,Y) positions of all given Components in the given Container are within the range given by XStart, XEnd, YStart and YEnd relative to the Container’s (X,Y) position and
  - the (X,Y) positions of all other components in the given Container are outside the given range.
  As (X,Y) position of a Component and the Container counts
  - the center of the component if the Center flag it true
  - the upper left corner of the component if the Center flag is false.
result_text(TextSource), result_text (TemplateSource, ValueSource, ValueSource, ...) The operator always returns true. The single parameter version copies the text from the TextSource to the result text of the Hit/Miss condition. The multiple parameter version uses the text from the TemplateSource as template and replaces each occurrence of %<index>$s (where <index> is an integer between 1 and the total number of given ValueSources) by the text snippet obtained from the ValueSource corresponding to the given index. Example: result_text("Sorted text: %1$s %3$s %2%s", "one", "two", "three") writes Sorted text: one three two
trace_snapshot (TextSource), trace_snapshot (TemplateSource, ValueSource, ValueSource, ...) The operator always returns true. The single parameter version traces the text from the TextSource in the trace log and dumps a snapshot of the current task to trace log. The multiple parameter version uses the text from the TemplateSource as template and replaces each occurrence of %<index>$s (where <index> is an integer between 1 and the total number of given ValueSources) by the text snippet obtained from the ValueSource corresponding to the given index. Example: trace_snapshot("Sorted text: %1$s %3$s %2%s", "one", "two", "three") writes Sorted text: one three two
trace_text(TextSource), trace_text (TemplateSource, ValueSource, ValueSource, ...) The operator always returns true. The single parameter version traces the text from the TextSource in the trace log. The multiple parameter version uses the text from the TemplateSource as template and replaces each occurrence of %<index>$s (where <index> is an integer between 1 and the total number of given ValueSources) by the text snippet obtained from the ValueSource corresponding to the given index. Example: trace_text("Sorted text: %1$s %3$s %2$s", "one", "two", "three") writes Sorted text: one three two
result_label(TextSource), result_label (TemplateSource, ValueSource, ValueSource, ...) The operator always returns true. Works like result_text() but copies the text to the label result text of the Hit/Miss condition instead of the result text.
trace_typed_text(Type, TextSource), trace_typed_text (Type, TemplateSource, ValueSource, ...) The operator always returns true. Works like trace_text() but adds an additional type field to the details structure of the trace log entry.
trace_typed_snapshot(Type, TextSource), trace_typed_snapshot (Type, TemplateSource, ValueSource, ...) The operator always returns true. Works like trace_snapshot() but adds an additional type field to the details structure of the trace log entry.
elapsedTime() Return the elapsed time (in milliseconds) since the start of the current task execution. Time spent while paused or on other tasks does not count.
caretPosition(InputField, defaultValue) Return the caret position of the given InputField component. If the InputField was focused, the last caret position is returned. If the InputField has no caret position set yet, the optional defaultValue is returned (or -1 if not given).

The operator matches() is important for scoring string responses (see section 5.3.4), while the result_text() can be used to copy responses to result variables (see section 5.3.10). The operators trace_text() and trace_snapshot() are important for adding user-defined log events to the trace log (see section 4.4.6).

TABLE B.12: Finite-state machine operators for Task Management
Operator Description
isCurrentTask(Task) Return true if Task is currently executing.
next_task(Task, Test) Switch to the next task. Both parameters are optional, but Task is mandatory if Test is specified.
  - If no parameter is given, switch to the next task. If there is no next task do nothing. (The execution environment selects the ‘next’ task.)
  - If a Task is given, go to this task (in the specified Test if a Test is given). If no such task exists do nothing.
  If the task switch targets to a task that was interrupted before, the execution environment decides whether to initiate a new task instance now or to resume the task interrupted earlier.
back_task() Switch back to the previous task. If there is no previous task do nothing. (The execution environment selects the ‘next’ task.) If the task switch targets to a task that was interrupted before, the execution environment decides whether to initiate a new task instance now or to resume the task interrupted earlier.
cancel_task() Terminate the current task without switching to another task.

Note about execution sequence when used in a state machine transition rule: The system postpones task switches until all other operators in a transition are executed. For multiple task switch operators in a single transition it will only execute the last task switch encountered during the transition. For a transition that leads to a state with a page assigned, the system switches to this page after all actions assigned to the transition are executed. If a task switch appears in the action list of the transition, the page switch is done in the old task since the task switch is postponed as described above.

Table: (#tab:fsm-operators-calculator) Finite-state machine operators for Calculation Engine

TABLE B.14: Logical expressions in the domain specific language (DSL)
Operator Description
calcGetMem(MemIdx) Return the rounded integer value of the calculator memory identified by MemoryIndex. Return 0 if the memory is not initialized or not set.
calcOp(Operation, IntegerParam) Performs an operation on the stack of the calculator. The following operations are available:
  - clear: Clears the last operand on top of the stack (if any).
  - clearall: Clears the full stack.
  - equals: computes the result by executing all operations on the operands on the stack.
  - add: pushes the add operation to the stack.
  - subtract: pushes the subtract operation to the stack.
  - multiply: pushes the multiply operation to the stack.
  - divide: pushes the divide operation to the stack.
  - fact: calculates the factorial of the current operand and replaces the current operand by the result.
  - power: calculates the power of the current operand based on the exponent ‘exp’ given as IntegerParam and replaces the current operand on the stack by the result: xexp
  - npower: pushes the power function on the stack (and expects a n-th power integer operand): xy
  - root: calculates the power of the current operand based on the inverse exponent given as IntegerParam and replaces the current operand on the stack by the result: x1/exp
  - nroot: pushes the root function on the stack (and expects a n-th root integer operand): x1/y
  - sin: calculates the sine function of the current operand and replaces the current operand on the stack by the result.
  - cos: calculates the cosine function of the current operand and replaces the current operand on the stack by the result.
  - tan: calculates the tangent function of the current operand and replaces the current operand on the stack by the result.
  - cot: calculates the cotangent function of the current operand and replaces the current operand on the stack by the result.
  - sec: calculates the secant function of the current operand and replaces the current operand on the stack by the result.
  - csc: calculates the cosecant function of the current operand and replaces the current operand on the stack by the result.
  - e: calculates the natural exponentiation (base ‘e’) of the current operand on the stack and replaces it by the result: ex
  - exp: calculates the exponentiation of the current operand on the stack with the base given as IntegerParam and replaces it by the result: basex
  - ln: calculates the natural logarithm (base ‘e’) of the current operand on the stack and replaces it by the result: ln
  - log: calculates the logarithm of the current operand on the stack with the base given as IntegerParam and replaces it by the result: logbase
  - invmult: calculates the inverse of the current operand, i.e. divides 1 by the current operand: 1/x
  - invpower: pushes the inverse power function, i.e. n-th function on the stack (and expects a n-th power integer operand > 0): logyx
  - leftbr: pushes a left (opening) bracket on the stack as a marker for intermediate calculation.
  - rightbr: pushes a right (closing) bracket on the stack and calculates the result of the expression between the corresponding left bracket and replaces it by pushing the result on the stack.
  - msave: saves the current operand on top of the stack into the memory referred to by the memory index given as IntegerParam.
  - mread: reads the memory value referred to by the memory index given as IntegerParam and pushes it on top of the stack (or replaces the current operand).
  - mclear: clears the memory referred to by the memory index given as IntegerParam (i.e. sets it to 0).
  - madd: adds the current operand on top of the stack to the referred memory value and saves the result in the referred memory.
  - msubtract: subtracts the current operand on top of the stack from the referred memory value and saves the result in the referred memory.
calcOpnd(Operation, Digits) Modifies the current operand on the stack of the calculator. The following Operations are available (the parameter Digits – a non negative integer – may be optional):
  - add: adds Digits at the end of the current operand.
  - decimal: sets the decimal place and adds Digits at the end of the current operand (if specified).
  - back: removes the last digit (or decimal place) from the current operand (if any).
  - invadd: multiplies the current operand by -1 (additive inverse). Note that more digits can be added to the current operator afterwards.
calcSettings (Parameter, Parameter, ...) Initializes the calculator and sets Parameters. This must be done at the beginning, before any calculation is started, otherwise it has no effect. The following Parameters are available:
  - angle: the unit representation of angles: degree (default) or radian.
  - displayWidth: the number of digits (> 0) which can be used for external representation (default 10).
  - includeOperandInHistory: displays current operand in history, if set to true (default true).
  - withThousandSeparator: thousands separators are not displayed, if set to false (default true).
  - scale: the number of digits (> 0) after the decimal place, corresponds to the precision used for internal calculations, rounded half away from zero when required (default 0).
Operator Description
<opnd1> and <opnd2> Binary operator for logical ‘and’, i.e. returns true if both operands evaluate to true.
<opnd1> or <opnd2> Binary operator for logical ‘or’, i.e. returns true if at least one operand evaluates to true.
not <opnd> Unary operator for logical ‘not’, i.e. returns true if the operand evaluates to false.
ifthenelse (Condition, Then, Else) Return the numeric value of Then if Condition evaluates to true, otherwise return the value of Else.
ifthenelseString (Condition, Then, Else) Return the string value of Then if Condition evaluates to true, otherwise return the string value of Else.

Important: The combination of logical operators requires bracketing (see section 4.1.3).

TABLE B.15: Comparisons in the domain specific language (DSL)
Operator Description
<opnd1> == <opnd2> Compares two text or numerical values. If both operands evaluate to an integer, a numerical comparison is done. If both operands evaluate to a text, a text comparison is done. Otherwise the operator returns false.
<opnd1> <> <opnd2> Compares two text or numerical values. If both operands evaluate to an integer, a numerical comparison is done. If both operands evaluate to a text, a text comparison is done. Otherwise the operator returns false.
<opnd1> < <opnd2> Compares numerical values. If both operands evaluate to an integer (or a text that represents a numerical value), a numerical comparison is done. Otherwise the operator returns false.
<opnd1> <= <opnd2> Compares numerical values. If both operands evaluate to an integer (or a text that represents a numerical value), a numerical comparison is done. Otherwise the operator returns false.
<opnd1> > <opnd2> Compares numerical values. If both operands evaluate to an integer (or a text that represents a numerical value), a numerical comparison is done. Otherwise the operator returns false.
<opnd1> >= <opnd2> Compares numerical values. If both operands evaluate to an integer (or a text that represents a numerical value), a numerical comparison is done. Otherwise the operator returns false.
TABLE B.16: Arithmetics in the domain specific language (DSL)
Operator Description
<opnd1> + <opnd2> Arithmetic add operation.
<opnd1> - <opnd2> Arithmetic subtract operation.
<opnd1> * <opnd2> Arithmetic multiply operation.
<opnd1> / <opnd2> Arithmetic divide operation.
<opnd1> % <opnd2> Arithmetic remainder operation: Calculate the remainder when dividing the first operand by the second.
floor(<opnd>) Return the largest integer less than or equal to the given number.
ceil(<opnd>) Return the smallest integer greater than or equal to the given number.
trunc(<opnd>) Return the integer part of the given number by removing any fractional digits.
round(<opnd>) Return the integer nearest to the given number.
TABLE B.17: Text operators in the domain specific language (DSL)
Operator Description
concatenate(Left, Right) Return the concatenated value of the Left and Right evaluated string expressions.
numberToString(<opnd>) Return the text representation of the evaluated arithmetic expression.
boolToString(<opnd>) Return the text representation of the evaluated logical expression (true or false).
TABLE B.18: Miscellaneous operators in the domain specific language (DSL)
Operator Description
openDialog(Page, X, Y) Open the given Page as dialog at the position (X,Y). X and Y are optional.
closeDialog(Page) Close the dialog showing the given Page.
closeDialog(isXPage, isModal) Close dialogs matching the given criteria. isXPage (boolean) filters by xPage dialogs, isModal (boolean) filters by modal dialogs.
scrollTopLevelPage(isXPage, X, Y) Control the scrollbar positions of the top-level page. isXPage (boolean) selects which page to scroll. X and Y specify the scroll position in pixels or percentages. If a value is not present, that scroll position remains unchanged.
scrollEmbeddedPage(PageArea, X, Y) Control the scrollbar positions of the page displayed in the given PageArea. X and Y specify the scroll position in pixels or percentages.
callExternalPageFrame(Component, ...) Call a JavaScript function in the ExternalPageFrame identified by the given Component’s UserDefinedId. Additional optional parameters (static strings or FSM variable values) are passed to the JavaScript function (see section 4.6.5).
setGlobalProperty (Property, Value) Set the given global Property to the given Value. The following properties can be used:
  - highlight_color: Modifies the current highlighting color to Value. The Value is interpreted as RGB color integer value specified as plain positive or negative integer or as hexadecimal value (prepended with 0x). Invalid values are ignored silently.
recommend(Parameter, Parameter, ...) Highlight recommended Links, Tasks and Tests. Each parameter specifies a test name, a task name and the User Defined Id Path of a Link component separated by dots: <TestName>.<TaskName>.<UserDefinedIdPath> Example: recommend(myTest.someTask.myLink, myTest.anotherTask.someLink) To recommend a task without a specific Link component use an asterisk (*) as value for the User Defined Id Path like this: myTest.someTask.* To recommend a test without a specific task use asterisks for task and User Defined Id Path like this: myTest.*.* For User Defined Ids that are not defined in the current item, the ItemBuilder assumes that their components are part of an XPage.