Je suis un grand fan des moteurs de règles métier, car ils peuvent vous aider à vous simplifier la vie en tant que programmeur. L'une des premières expériences que j'ai eues en travaillant sur un projet d'entrepôt de données a été de trouver des procédures stockées contenant des structures CASE complexes s'étendant sur des pages entières. Ce fut un cauchemar à déboguer, car il était très difficile de comprendre la logique appliquée dans des structures CASE aussi longues, et de déterminer si vous avez un chevauchement entre une règle à la page 1 du code et une autre de la page 5. Dans l'ensemble, nous avions plus de 300 règles de ce type intégrées dans le code.
Lorsque nous avons reçu une nouvelle exigence de développement, pour quelque chose appelé Destination comptable, qui impliquait le traitement de plus de 3000 règles, je savais que quelque chose devait changer. À l'époque, j'ai travaillé sur un prototype qui deviendra plus tard le parent de ce qui est maintenant un moteur de règles métier personnalisées, capable de gérer tous les opérateurs standard SQL. Au départ, nous avons utilisé Excel comme outil de création et, plus tard, nous avons créé une application ASP.net qui permettra aux utilisateurs professionnels de définir leurs propres règles métier, sans avoir besoin d'écrire de code. Maintenant, le système fonctionne correctement, avec très peu de bogues, et contient plus de 7000 règles pour calculer cette destination comptable. Je ne pense pas qu'un tel scénario aurait été possible par un simple codage en dur.
Pourtant, il y a des limites à une telle approche:
- Vous devez avoir des utilisateurs professionnels compétents qui ont une excellente compréhension des activités de l'entreprise.
- Il y a une charge de travail importante sur la recherche de l'ensemble du système (dans notre cas, un Data Warehouse), afin de déterminer toutes les conditions codées en dur qui ont du sens à se traduire en règles à gérer par un moteur de règles métier. Nous avons également dû veiller à ce que ces modèles initiaux soient parfaitement compréhensibles par les utilisateurs professionnels.
- Vous devez disposer d'une application utilisée pour la création de règles, dans laquelle des algorithmes de détection des règles métier qui se chevauchent sont implémentés. Sinon, vous vous retrouverez avec un gros gâchis, où personne ne comprend plus les résultats qu'ils obtiennent. Lorsque vous rencontrez un bogue dans un composant générique tel qu'un moteur de règles métier personnalisées, il peut être très difficile à déboguer et impliquer des tests approfondis pour s'assurer que les éléments qui fonctionnaient auparavant fonctionnent également maintenant.
Plus de détails sur ce sujet peuvent être trouvés sur un article que j'ai écrit: http://dwhbp.com/post/2011/10/30/Implementing-a-Business-Rule-Engine.aspx
Dans l'ensemble, le plus grand avantage de l'utilisation d'un moteur de règles métier est qu'il permet aux utilisateurs de reprendre le contrôle des définitions et de la création des règles métier, sans avoir à se rendre au service informatique à chaque fois qu'ils doivent modifier quelque chose. Cela réduit également la charge de travail des équipes de développement informatique, qui peuvent désormais se concentrer sur la création d'éléments à plus forte valeur ajoutée.
À votre santé,
Nicolae