7  Triggers

Professionals can configure triggers based on data acquired by SPARK. When a trigger is set on an activity, it will determine whether this activity will be shown to the participant or not.

Activities which have a trigger set on them, will periodically be evaluated on previously gathered sensor and survey data. If the trigger conditions are met, the activity will be shown to the participant.

7.1 Instructions

Triggers can be set based on the following question types:

  • Boolean
  • List
  • Multi-Select
  • Slider
  • Rating
  • Time
  • Likert
  • Short Answer

Triggers are set in the “Decision Tree Builders” section of the dashboard.

7.1.1 Visual builder

A professional can use a flowchart-like visual builder to construct triggers.

7.1.1.1 Evaluation

An evaluation of survey/sensor data.

7.1.1.2 Activity

Equivalent to the StartSurvey(...) method.

7.1.1.3 Data Source

Equivalent to the DataSource(...) method.

7.1.1.4 Action

Not used.

7.1.2 Logical expression

A professional can configure a trigger by logical expression.

7.1.2.1 Syntax

A trigger consists of 1 or more blocks. A block must be of the format:

{ EXPRESSION, ACTION_TRUE, ACTION_FALSE }

  • EXPRESSION is the expression to be evaluated. The syntax for the expressions is explained in sec-expressions .
  • ACTION_TRUE defines the action that will be performed when the trigger is expression evaluates to true.
  • ACTION_FALSE defines the action that will be performed when the trigger is expression evaluates to false. This is optional.

The action could be starting a survey (StartSurvey(...)), setting a variable (DataSource(...)), or an integer. An integer refers to the index of one of the expression blocks. The expression blocks can be viewed as an array, which has a zero based index that auto increments. The first block has index 0, the second block has index 1, etc.

A block can also start with an action (e.g. StartSurvey), in this case the expression is automatically evaluated to true. ACTION_TRUE and ACTION_FALSE can also be used as previously defined in this case, for example:

{ StartSurvey(NewSurvey), 1 } {survey1.A CONTAINS a, StartSurvey(OtherSurvey) }

If the action is the index of one of the expression blocks, then the expression of this block will be evaluated and its action will be performed. This way expression blocks can be performed in a chain.

For example:

{ (survey1.qA == 3) OR (survey1.qB == 2), 1, 2 } { survey1.vraagD == 7, StartSurvey(SurveyZ) } { spark.steps <= 1000, StartSurvey(SurveyF) }

If the first expression evaluates to true, the second block will be evaluated. Furthermore, if the expression in the second block evaluates to true, SurveyZ will be started.

Similarly, if the first expression evaluates to false, the third block will be evaluated. If the expression in this third block evaluates to true, SurveyF will be started.