A Trigger is a component which is responsible, based on an external input, for generating events which will initiate flows. Each running instance of a Trigger has a configuration, and uses this to decide what events should be sent to the Orchestrator.
An Action is a component that accepts input from a running flow and returns an output back to the same flow. An action is responsible for defining the format of its input and output, both of which can be complex objects, the only requirement is that they can be serialized to JSON.
A Flow consists of a Trigger, an optional filter on the data contained in the Trigger event, and a sequence of one or more Actions. When a Trigger event is received, the Flow is initiated, and based on any filter present, the Flow's Actions are executed in the order defined in the Flow.
The Orchestrator is responsible for the execution of configured flows. It receives events from triggers connected to flows, and based on each flow's filter configuration, initiates them. While a flow is running, the Orchestrator ensures that the input to each Action is in the format required by that Action before executing it.