This is a glossary of terms used in the Event Processing extensions to the Prova rule language.
control channel
An event channel that is annotated with @pause, @resume or @stop annotations.
event channel
An inline reaction that is a member of a reaction group.
exit channel
An event channel that intercepts the internal message sent by a reaction group when an event pattern is successfully detected. The required annotation on this channel includes its logical grouping, either @and or @or as well as optional timeout or multiplicity conditions with @timeout and @count, respectively. See the example of an AND group here.
global reaction
A rule with rcvMsg as the head literal. It has the same life scope as the engine instance running the rulebase. When the engine detects an inbound message that matches the pattern in the arguments of this rcvMsg, the rule body is executed just as it happens when a goal matching the head literal is executed. See the details and example in global reaction rules.
inline reaction
A literal for a message receiving primitive rcvMsg (or rcvMult). When it is executed by the engine, the latter creates a temporal hidden rule containing a closure of all remaining literals in the current goal with all context variables baked into it and immediately fails (in the Prolog sense), allowing for other non-deterministic branches to be visited. When subsequently the engine detects an inbound message matching the pattern of the arguments inside rcvMsg, the message is accepted and the aforementioned closure is executed. There are many variations related to the way the inbound messages are accepted by inline reactions, see full details in inline reaction rules. Inline reactions can form groups which is the Prova way of doing Event Processing, see the discussion on reaction groups. Note that the actual reaction can be executed on a different thread from the one that executes the message receiving literal, see the Section on concurrent reactive messaging.
positive channel
An event channel that is not annotated with @not and is not a control channel.
negative channel
An event channel that is annotated with @not and is not a control channel.
reaction group
This construct forms the basis of the event processing functionality in Prova. The idea is to provide a common context for more than one concurrently enabled inline reaction (see the extensive discussion here).
Membership of event channels in a reaction group is indicated using the annotation @group and assigned a group id GID, unique within the containing rulebase. The exit channels of type @and and @or define an internal callback for the results of pattern detection published each time the reaction group is proved. The group is considered as proved when the conditions depending on its type and a variety of annotations providing further semantic fine-tuning are verified. For example, an AND group may require two inline reactions to arrive before a specified timeout for the event pattern to be detected. There are settings for which reaction groups emit multiple event pattern detections, notably when using the @vars annotation in AND groups and for emitting recurring aggregates using @size or @timer in OR groups.
It is important to understand that a reaction group, as part of the containing rulebase run by the Prova engine, is only a template for reaction group instances. Each of these instances is created and instantiated anew each time the engine visits an inline reaction rcvMsg (or rcvMult) with a unique GID for the current goal. This creates a group instance that becomes fully instantiated once the exit channel reaction is visited as well.
timeout channel
An event channel that intercepts internal messages sent by the containing reaction group when the timeout on the group expires. See this example of an AND group.
