YML internal representation of an application rests on the concept of events. Each task executed on the middleware is scheduled based on a set of dependencies. Dependencies are represented using a combination of events. Each events is similar to a boolean variable. Initially all events are set to false. Each time the system generate an events, its value is toggled to true and never change again. The events can be combined using boolean operator in order to express preconditions. A precondition is a boolean expression that must be true so that the task is executed. Once a task finished its execution, a set of event are notified to the system so that the application execution progress.
The events are at the heart of the scheduling in YML. They are used to express dependencies. Preconditions are computed at compilation time as we will see later in this guide.