Overview

In everyday use, BRAHMS is invoked by the user to execute a System. It initialises the System, steps it through time until the scheduled Stop Time, and then terminates it and returns results to the user; we label these three phases of execution as Init, Run, and Term. For the individual Process, this involves, at minimum, handling EVENT_STATE_SET to initialise state, EVENT_INIT_CONNECT to initialise relationships with peer Processes, and EVENT_RUN_SERVICE, to perform computations. We will see how to handle these Events in Developing Processes Quickstart; one or two other events are mentioned in the Advanced Topics section, there.

More generally, there are a total of 12 events which a Process may receive (other events, specific to Data or Utility Components, or module-level events, are not discussed, here). Understanding the Process Life Cycle, i.e. the arrival of these Events, is key to authoring coherent Processes. Here, we show just the simple, everyday, Life Cycle, to place the events you will meet into chronological context (table below). For much more detail of possible non-linear chronologies, see Life Cycle (Advanced) under Advanced Topics.

The order of arrival of Events in the everyday case is illustrated in the figure below, along with a brief summary of the most basic actions a Process should take on handling these. Where no summary is given, this indicates that the event need not be handled in most Processes that only handle this simple case. The column Multiple indicates which events may be called multiple times sequentially.

EventMultipleSummary
Init Phase
EVENT_STATE_SETRead parameters.
EVENT_INIT_PRECONNECTValidate input count.
EVENT_INIT_CONNECTYesReview/validate offered inputs; Create outputs.
EVENT_INIT_POSTCONNECT
EVENT_LOG_INIT
Run Phase
EVENT_RUN_PLAY
EVENT_RUN_RESUME
EVENT_RUN_SERVICEYesService input/output Ports (incidentally, do computation).
EVENT_RUN_PAUSE
EVENT_RUN_STOP
Term Phase
EVENT_STATE_GET
EVENT_LOG_TERM