Architecture Du Framework

Présentation Globale

Le Framework MRules a pour objectif de regrouper et d’offrir un ensemble d’utilitaires servant de base au développement des autres produits.

Sa conception se veut modulaire et extensible. Il n’est ainsi pas spécifiquement dédié uniquement aux produits MRules, mais peut s’intégrer parfaitement à une application existante en lui apportant une plus-value certaines en termes de maintenance et d’évolutifs.

Le diagramme ci-dessous présente les principales fonctionnalités intégrées au produit.

MRules framework global architecture
Architecture globale du framework MRules

Logs

Les produits MRules doivent s’intégrer dans une application existante ou en devenir, quelques soient les choix techniques qui y ont été faits. Les logs sont une partie essentielle de l’exploitation d’un logiciel. En conséquence, le nécessaire a été mis en place pour que les logs des produits MRules s’intègrent de façon transparente au système mis en place.

Les framework de logs supportés sont :

  • slf4j en priorité
  • junit sinon
  • Java Utils Logging (JUL) par défaut.

> Plus d’informations sur la page dédiée au logging.

Resources Loader

Cet utilitaire permet aux produits MRules de charger leur configuration au sein d’un système composés de multiples Class Loader, avec un respects des configurations de sécurité.

Il est compatible avec les Class Loader complexes, du type de celui exploité par Spring Boot par exemple, packageant les librairies applicatives dans un package globale.

> Plus d’information dans la javadoc de l’api.

Property Access

L’une des deux fonctionnalités les plus importantes de notre Framework est de permettre d’accéder aux données (stockées dans des objets Java) de façon générique (c’est à dire grâce à leur nom en utilisant la réflexion Java).

De nombreux Frameworks proposent cette fonctionnalité (Apache Commons, Spring Beans, etc …). Cependant, nous avons décidé de développer intégralement cette fonctionnalité pour les raisons suivantes :

  • Optimiser le code pour maximiser les performances
  • Ajouter des fonctionnalités supplémentaires
  • Se libérer de dépendances à des librairies tierces

> Plus d’informations sur la page dédiée à l’accès aux données.

Converters

Il s’agit de la deuxième fonctionnalité principales de notre Framework. Les données lues doivent être exploitées. Et potentiellement, elle doivent être converties en un autre type pour le permettre. Par exemple, imaginons que l’on doivent additionner les données « 25 » et « 35 », lues sous formes de chaînes de caractères. Il nous faut les convertir en nombres avant de faire l’opération. Cette conversion est transparentes grâce à notre Framework.

De même que pour l’accès aux données, cette fonctionnalité est offerte par d’autres librairies du marché. Et nous l’avons redéveloppée pour des raisons identiques à celles exposées ci-dessus.

> Plus d’informations sur la page dédiée aux conversions de données.

Commons Beanutils Plugin

Ce connecteur permet de surcharger une partie des composants de la librairie Apache Common Beanutils au sein d’une application existante. Les fonctionnalités d’accès aux propriétés et de conversion gagneront ainsi en performances.

Ce plugin doit être explicitement activé. Même si MRules et les librairies Apache sont utilisées, ce n’est pas le cas par défaut.