ecFlow manages suites. A suite is a collection of families, and a family is a collection of tasks and possibly other families. Tasks may have events, meters, labels, etc. When it does not matter which one of the terms suite, family, or task is in question, the generic term node refers to any of them.
By default, suites are independent of each other. If necessary, suites can have cross-suite dependencies. These are best avoided since ideally, a suite is a self-contained unit.
There is an analogy between a suite definition and the UNIX file system hierarchy (see Table 5 1).
Table 5 1 Suite definition analogy with UNIX file system
Suite | File system |
Family | Directory |
Task | File (executable) |
Event | Signal (not part of the file system) |
Meter | Numerical signal (not part of the file system) |
Label | Text signal (not part of the file system) |
Dependency | Soft link (can span file systems) |
Normally a suite is defined using a file, or via the python API. Suite definitions are best stored in a suite per file.
A suite definition is normally placed in a definition file. Typically the name for the file is suitename.def, but any name may be used.
It is good practice to list all the attributes for families and suites before any tasks are defined. This makes the reading of the suite-definition file easier.
There are two ways of defining a suite.
- Using the ASCII suite definition file format
- Using the ecFlow python API