2010
18.02
18.02

Lors de la réalisation d’une application informatique, les développeurs ont la charge d’implémenter les règles métier. Par exemple, toutes les demandes d’achat d’un montant supérieur à 10 000€ doivent être approuvées par le directeur général, sauf lorsque ce-dernier est en congés. C’est alors au directeur financier de valider la demande. Les développeurs disposent de plusieurs solutions pour « implémenter » cette règle :
- la coder en « dur » : il faudra alors produire une nouvelle version de l’application dès lors qu’un des paramètres de la règle change ;
- recourir à un mécanisme de configuration externe : l’administrateur de l’application aura alors la possibilité de modifier la règle ;
- utiliser un Business Rule Management System (BRMS) pour permettre au responsable métier de changer dynamiquement la règle.
C’est de cette troisième possibilité qu’il sera question dans cet article. Il est, en effet, possible de gagner fortement en agilité et en réactivité en permettant au responsable métier de modifier par lui-même les règles métier de « son » applicatif.
Cela n’est envisageable qu’à partir du moment où les règles sont exprimées dans un langage clair et compréhensible (pas du code
).

Cette façon d’exprimer une règle correspond à ce que l’on appelle un Domain Specific Language (DSL). Il s’agit d’un langage, ou grammaire, spécifique à un domaine métier, utilisable et compréhensible par des non informaticiens. Les DSLs se marient bien avec l’approche de conception Domain Driven Design.
Le moteur de règle Drools Expert, de la plateforme Drools (voir cet article) supporte la définition et l’utilisation de DSL.
Définition du langage via les dictionnaires DSL
Un dictionnaire DSL peut être associé à la définition d’une règle Drools. Les phrases décrivant les conditions et les actions des règles seront listées dans ce dictionnaire. Un ordre Drools est associé à chacune des phrases DSL.
[condition][]Un sujet sondé=person: Person()
[condition][]- est français=person.country == « FR »
[condition][]- est un homme=person.genre == « MALE »
[condition][]- est une femme=person.genre == « FEMALE »
[condition][]- a plus de {age} ans=person.age > {age}
[condition][]- appartient à la catégorie socio professionnelle « {jobClass} »=person.jobClass == « {jobClass} »
[condition][]- réside parmi les villes de « {city} »=person.city matches « {city} »
[consequence][]Ce client est une cible pour le produit « {productId} »=System.out.println( »1 more target for product {productId} »);
[condition][]- est français=person.country == « FR »
[condition][]- est un homme=person.genre == « MALE »
[condition][]- est une femme=person.genre == « FEMALE »
[condition][]- a plus de {age} ans=person.age > {age}
[condition][]- appartient à la catégorie socio professionnelle « {jobClass} »=person.jobClass == « {jobClass} »
[condition][]- réside parmi les villes de « {city} »=person.city matches « {city} »
[consequence][]Ce client est une cible pour le produit « {productId} »=System.out.println( »1 more target for product {productId} »);
Les parties techniques des conditions sont exprimées avec un langage qui permet d’évaluer des expressions logiques sur des objets Java (ici MVEL). Celles des conséquences peuvent être également écrites avec des expressions MVEL, et même Java. Les parties DSL des phrases sont écrites en langage naturel. Lors de la compilation de la règle, Drools remplace dynamiquement les phrases DSL par leur équivalent technique.
La mise au point des dictionnaires est donc effectuée par les développeurs à partir des besoins exprimés par les représentants utilisateurs. Pour ce faire, nous demandons généralement aux représentants utilisateurs d’exprimer les règles en langage naturel ou de les formaliser dans un fichier type excel. Dès lors, nous sommes en mesure d’extrapoler et de définir un dictionnaire « générique ». Les responsables métier de l’application peuvent alors commencer à rédiger leurs règles métier. Drools facilite encore plus cela en fournissant un environnement web collaboratif pour la rédaction de règles : Guvnor.
Un référentiel de règles sur le web : Guvnor
Guvnor est l’application web de gestion des règles métiers (Business Rules Management System) du framework Drools. Il agit comme le référentiel de la plateforme Drools, et permet, notamment, l’externalisation des règles métiers du code source de l’application. Ces règles métiers peuvent être administrées en ligne, par exemple par un ou plusieurs responsables fonctionnels (en fonction de leurs droits). Et grâce à l’utilisation des DSL, ce responsable fonctionnel n’a pas besoin d’une formation technique avancée pour administrer les règles métiers : celles-ci sont écrites en langage naturel, propre à son domaine de compétence.Guvnor gère un entrepôt de données contenant tous les types de ressource utilisée par Drools (règles, tables de décisions, workflow, DSL, …). Cet entrepôt peut être persisté sur un système de fichiers, mais aussi en base de données. Il est principalement utilisé par les administrateurs, les responsables fonctionnel d’application et les développeurs.


Guvnor dispose d’un éditeur de règles en ligne très puissant. Il permet d’utiliser un dictionnaire DSL et propose à l’utilisateur un ensemble de phrases sous forme de liste de choix, ou sous forme de champ libre en auto-complétion.

A la croisée du domaine métier et de la production logicielle, les DSL apportent beaucoup à la formulation et à l’exploitation des règles métiers. C’est une des grandes satisfactions de nos clients, lorsqu’ils utilisent la plateforme Drools à travers nos produits.
De plus, avec Drools, la mise en place d’un dictionnaire est peu coûteuse et très peu complexe.
Pour finir, si les règles métier sont externalisées du code de l’application, comme par exemple avec Guvnor, il est alors encore plus judicieux d’utiliser les DSL. En effet, sans dictionnaire, l’externalisation des règles métiers avec un BRMS n’a de valeur que pour le développeur.
Pour aller plus loin :


Guvnor dispose d’un éditeur de règles en ligne très puissant. Il permet d’utiliser un dictionnaire DSL et propose à l’utilisateur un ensemble de phrases sous forme de liste de choix, ou sous forme de champ libre en auto-complétion.

Conclusion
A la croisée du domaine métier et de la production logicielle, les DSL apportent beaucoup à la formulation et à l’exploitation des règles métiers. C’est une des grandes satisfactions de nos clients, lorsqu’ils utilisent la plateforme Drools à travers nos produits.
De plus, avec Drools, la mise en place d’un dictionnaire est peu coûteuse et très peu complexe.
Pour finir, si les règles métier sont externalisées du code de l’application, comme par exemple avec Guvnor, il est alors encore plus judicieux d’utiliser les DSL. En effet, sans dictionnaire, l’externalisation des règles métiers avec un BRMS n’a de valeur que pour le développeur.
Pour aller plus loin :


1 commentaire
Ajouter votre commentaire