Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This defines a dependency for a task or family. There can be only one trigger dependency per node, but that can be a complex boolean expression of the status of several nodes. Triggers should be avoided on suites.
A node with a trigger can only be activated when its trigger has expired. A trigger holds the node as long as the trigger's expression evaluation returns false. There are a few additional keywords and some names may point to other nodes with their value acting as the status of those nodes. Trigger mathematics are computed, using double arithmetic (with no string comparisons). There should not be any need to use numerical expressions, instead logical functions (and, or, not, eq, ne) with node names should be used.


The keywords in trigger mathematics are: unknown, suspended, complete, queued, submitted, active and aborted for task and family status; and clear and set for event status. These keywords are treated as numbers starting from 0 (unknown) to 6 (aborted). There is no need to be aware of the numerical values as long as you do not use a trigger in the form:
trigger plain_name # WARNING! DO NOT USE!


This is true only as long as the status of plain_name is unknown. It is not advisable to use mathematical function names for node names.
The full name or relative name of a node can also be used as an operand. A full name starts from the super-node. A relative name can include "../" to indicate the parent node level. A relative name can also include "./' to indicate the same level, this is needed if the task name is numeric (otherwise its numeric value would be used in the expression.)

Code Block
family foo
  task bar
  task foobar
 endfamily
 family second
  task 00z
     trigger ../foo/foobar==complete # task from previous family
  task another
     trigger ./00z == complete # the previous task

...