Actions and Predicates
Actions and Predicates for the rule system are implemented as ActionProvider and PredicateProvider. There are some common build in Provider in the framework. So in most cases these must not be implemented by plugins. But if you need a special provider for a plugin specific action you can implement your own.
Let's create a simple action provider that answers the question of life the universe and everything.
Each concrete ActionProvider must be a subclass of ActionProvider. The ActionProvider must implement a
that is called for every part of the action string of a rule by the framework. If the ActionHandler can handle
the input then it should return a info object with a ActionHandler (see below) that can execute the corresponding
The returned ActionHandler must be a subclass of ActionHandler and must implement a
executeAction-function that can be called by the framework.
executeAction-function should execute the action if
false. It should always return a promise
that gets fulfilled with a description string, after the action was executed.
Finally you have to register your ActionProvider in the framework.
For a more complex example, you can take a look at the shell-execute Plugin.
PredicateProvider follow the same pattern as ActionProvider, but the function of a PredicateHandler are different. It follows an Example PredicateProvider that is true if the value of a numeric expression is 42.
The corresponding PredicateHandler:
and finally the registration: