Architecture

Concept

Le concept d’MRules est simple :

  • Des beans Java d’entrée sont fournis.
  • Les données sont lues de ces beans, des conditions sont évaluées.
  • Des données sont écrites vers des beans Java de sortie.
  • Un système de cache interne permet d’éviter les multiples lectures d’une même donnée ou les multiples évaluations d’une même condition.

Composants

La librairie dans son intégralité contient un grand nombre de composants, que l’on peut classifier en différentes catégories selon leur responsabilité.

  • Accesseurs : responsables de l’accès aux données (lecture / écriture).
  • Conditions : évaluent les données pour modifier execution.
  • Evaluation Operators : effectuent une évaluation simple.
  • Logical Operators : combinent plusieurs évaluations simples.
  • Executables (également nommés “Rules”) : responsables de l’exécution des actions et de la coordination de leur exécution.
  • Actions : sont un type particulier d’Executable effectuant des actions unitaires (par exemple, ajouter un élément à une liste).
  • L’Executable spécial “Rule Execution Set” est le composant racine d’une instance de rule set.
  • Callables : sont des composants particulier pouvant être invoqués à n’importe quel moment durant l’exécution (par exemple, les fonctions).
  • Builder et Factories : effectuent la lecture et l’écriture de la configuration des moteurs de règles et construisent les instances.
  • Les contexts permettent de lancer la compilation et l’exécution.
MRules global architecture
Architecture globale de MRules

Conception orientée Addon

MRules est conçu pour être modulaire et facilement extensible. Pour atteindre cet objectif ambitieux, une structure basée sur des Addon a été mise en place. Tous les composants de la librairie sont des addons. Il est donc simple comme “bonjour” d’ajouter de nouvelle fonctionnalités ou d’écrire des extensions, qui seront chargée dynamiquement au Runtime via quelques ligne de configuration.

Ceci permet d’implémenter simplement des actions spécifiques en cas de besoin particulier, bien que beaucoup d’opérations soient déjà nativement possibles.