Je vérifie un projet qui utilise ce qu'on appelle un Moteur de règles . En bref, c'est un moyen d'externaliser la logique métier du code de l'application.
Ce concept est entièrement nouveau pour moi et je suis assez sceptique à son sujet. Après avoir entendu les gens parler de Modèles de domaine anémiques depuis quelques années, je remets en question l'approche du moteur de règles. Pour moi, ils semblent être un excellent moyen d'affaiblir un modèle de domaine. Par exemple, disons que je fais une application web Java qui interagit avec un moteur de règles. Ensuite, je décide que je veux avoir une application Android basée sur le même domaine. À moins que je ne veuille que l'application Android interagisse également avec le moteur de règles, je vais devoir faire l'impasse sur la logique métier déjà écrite.
Comme je n'ai pas encore d'expérience en la matière, par simple curiosité, j'aimerais connaître les avantages et les inconvénients de l'utilisation d'un moteur de règles ? Le seul avantage auquel je pense est que vous n'avez pas besoin de reconstruire l'ensemble de votre application juste pour changer une règle de gestion (mais vraiment, combien d'applications ont vraiment autant de changements ?) Mais l'utilisation d'un moteur de règles pour résoudre ce problème me donne l'impression de mettre un pansement sur une blessure par balle.
UPDATE - depuis que j'ai écrit ceci, le dieu lui-même, Martin Fowler, a a publié un blog sur l'utilisation d'un moteur de règles .
0 votes
Envisagez-vous de recourir à des produits tiers ou allez-vous créer votre propre produit ?
3 votes
C'est un excellent article de Martin Fowler, merci !
0 votes
Vous avez raison - ils sont très anti-OO. Ils viennent d'une époque où l'OO n'était pas courant (ce qui l'explique en partie) mais oui, ils veulent absolument travailler avec des enregistrements/objets de valeur qui sont "anémiques" comme vous le dites. Ce n'est pas nécessairement une mauvaise chose, mais c'est ce que c'est. Si vous n'aimez pas cela, vous n'aimerez pas du tout les moteurs de règles.
0 votes
Je me demanderais également si l'on veut vraiment le moteur de règles (à enchaînement direct) ou si l'on veut les programmes logiques sémantiquement clairs (au sens où l'on sait au moins ce qu'ils calculent en premier lieu) de Prolog ou de Datalog, beaucoup plus simple (ou l'on peut aller dans des territoires plus raréfiés et jeter un coup d'oeil à la logique des transactions). Si l'on veut de la réactivité ("dès que quelque chose change dans la base de données, faites quelque chose, n'importe quoi !"), un regard sur une implémentation de Tuplespace/Lindaspace liée à la bonne vieille programmation OO en $PREFERRED_LANGUAGE pourrait en valoir la peine.