Task overview

Task classes

Tasks are primarily linked in a tree structure that has a single root (top-level) task representing the application with sub-tasks representing its sub-components and sub-tasks below those representing sub-sub-components and so on down to any number of levels.

In addition to the parent-child relationship between tasks, they can also be linked associatively through their connection points.

The following class diagram shows how tasks are linked hierarchically to their parent and children and associatively through connections between their connection points:

mtf-runtime-task-classes.png

The following object diagram shows an example of a 3-tier hierarchy of tasks with the single root task at the top:

mtf-runtime-task-instances.png

Generic task properties

Tasks define two generic properties that all tasks inherit:
  • Name - unique name within the current scope
  • Dimensions - array of ints specifying size of each dimension

The main purpose of the task name is to allow it to be uniquely identified for debugging purposes. The full path to a task instance can be retrieved at runtime and consists of its name preceded by its ancestors' names separated by forward slashes (/).

All task instances have dimensions so that any task can determine its complete dimensionality by looking at its ancestors' dimensions. This information is used by the task to determine how many parallel instances of its internal state need to be created.

Specific task properties

In addition to the generic properties, it is often useful to specify additional properties that relate to the specific function of a particular task. To support this, a properties dictionary is provided that contains a collection of objects that are indexed by a string key.

Last edited Aug 30, 2012 at 9:06 AM by jaorme, version 14

Comments

No comments yet.