Les exécutables sont un concept essentiel. Ils permettent d’exécuter toutes les actions à effectuer (évaluer des conditions, positionner des valeurs, etc …). Ils sont décrits par l’interface Java IExecutable.
Ils se déclinent en plusieurs types, décrits ci-dessous.
Le Rule Set
Il s’agit du cœur de la librairie. Il est décrit par l’interface Java suivante : IMruleExecutionSet.
On pourrait donc envisager d’imbriquer plusieurs instances de MRules dans une instance maîtresse. Mais cette pratique n’est pas recommandée et ne présente pas de réel intérêt.
Une seule implémentation de Rule Set est fournie : RULEEXECUTIONSET. La classe Java correspondante est MruleExecutionSet.
Les règles
Les règles sont les exécutables permettant d’évaluer des conditions et d’effectuer les actions nécessaires selon le résultat de l’évaluation. Les actions nécessaires sont en général elles-mêmes un ou plusieurs Exécutables. Aucune interface spécifique ne décrit ce type d’Exécutables.
Les implémentations de règles fournies sont les suivantes :
BLOCK : Permet d’encapsuler l’exécution de plusieurs Exécutables. Ceci permet de contrôler de façon avancée le flow d’exécution.
FOREACH : pour chaque valeur d’une Collection, d’un tableau, d’une suite d’Accesseurs, etc … Positionne une variable et lance un ou plusieurs Exécutables.
FOREACHNUMBER : Permet d’itérer sur une sérier de nombre, précisant le début, la fin ou le nombre d’itération et l’incrément.
INDEX : lance un ou plusieurs Exécutables, choisi(s) en fonction d’une valeur source.
RULE : Evalue une condition, et exécute un ou plusieurs Exécutables si vrai (then) ou un ou plusieurs autres Exécutables si faux (else).
Les actions
Ce sont les exécutables « feuilles ». Ces sont ces implémentations qui effectueront les actions produisant le résultat désiré (mise à jour de données, écriture d’une chaîne de caractères, etc …). Ils sont décrits par l’interface Java IAction.
Les implémentations d’actions fournies sont les suivantes :
ACCEXEC : Permet d’exécuter l’action effectuée par un Accesseur. Utilisé par exemple pour invoquer une méthode via le framework d’accès aux propriétés. Cet Exécutable est instancié de façon automatique.
ADD : Ajoute une valeur à une Collection.
ADDALL : Ajoute toutes les valeurs d’une source (de type Collection, d’un tableau, d’un Iterator, etc…) à une Collection cible.
CLEAR : Vide le contenu d’une Collection, d’une Map, d’un StringBuffer ou de tout objet ayant une méthode « clear ». Cette action retourne l’objet vide.
DEFINE : Positionne une variable.
EXEC : Exécute une commande système et récupère le code retour dans une variable. Les flux de sortie standard et erreur sont redirigés vers les flux adéquates du contexte d’exécution.
PRINT : Écrit sur un flux de caractère (positionnable dans le contexte, par défaut les sorties standard et erreur).
PRINTF : Basé sur l’accesseur FORMAT, permet de formater une String, d’une manière similaire à l’utilitaire Java Message Format.
SET : Positionne une valeur dans un bean de sortie.
SORT : Effectue un tri sur une collection. Le tri est par défaut fait directement sur la collection source (sauf si elle n’est pas triable, comme par exemple un Set, ou qu’elle n’est pas modifiable). Une nouvelle instance de collection peut également être créée selon la configuration.