Avantages et inconvénients des moteurs de règles Java

Quels sont les avantages et les inconvénients de l’adoption des moteurs de règles Java JESS et Drools ? Y a-t-il d’autres joueurs?

Je comprends que Drools est Open Source et JESS ne l’est pas, mais comment se comparent-ils dans d’autres domaines tels que la facilité d’utilisation, la performance, le niveau d’intégration avec votre code?

    Quels sont les avantages et les inconvénients de l’adoption des moteurs de règles Java JESS et Drools?

    Utilisez un moteur de règles si vous devez séparer les règles métier de la logique d’application. L’article Votre projet a-t-il besoin d’un moteur de règles en est un bon exemple:

    Par exemple, un système de visortingne classique peut impliquer un code pour calculer une remise:

    if (product.quantity > 100 && product.quantity < 500) { product.discount = 2; } else if (product.quantity >= 500 && product.quantity < 2000) { product.discount = 5; } else if (product.quantity >= 2000) { product.discount = 10; } 

    Un moteur de règles remplace ce qui précède par du code qui ressemble à ceci:

     ruleEngine.applyRules(product); 

    A vous de décider si mettre une console d’administration de règles entre les mains de personnes non techniques est une bonne chose ou non 🙂

    Plus de détails dans Devrais-je utiliser un moteur de règles? , Pourquoi utiliser un moteur de règles? , Quelques lignes direcsortingces pour décider si vous souhaitez utiliser un moteur de règles et sur Google .

    Y a-t-il d’autres joueurs?

    Les autres acteurs incluent JRules, Corticon (JRules est l’IMO la plus connue, ce qui ne veut pas dire le meilleur).

    Comment se comparent-ils dans d’autres domaines comme la facilité d’utilisation, la performance, le niveau d’intégration avec votre code?

    Je ne peux pas vous dire précisément, je n’ai qu’une petite expérience (positive) avec Drools. Mais vous obtiendrez des commentaires de blogs tels que JBoss Drools vs ILog JRules – une histoire anecdotique (assurez-vous de le lire) ou Travailler avec Drools du sharepoint vue de JRules . Je suis sûr que vous pouvez en trouver plus sur Google (mais je donnerais un essai à Drools).

    Nous évaluons maintenant les règles à utiliser avec notre serveur d’applications. Nous avons rencontré OpenRules , facile à intégrer à Java et, pour autant que nos tests l’aient montré, assez rapide. Le principal avantage d’OpenRules par rapport aux autres réside dans la manière dont les règles sont modifiées et gérées. Tout se passe dans les tableaux Excel, ce qui est le moyen le plus simple pour les non-programmeurs. Tout le monde, même les non-techniciens, comprenait parfaitement tout 🙂

    Nous avons également intégré les bribes, mais les règles sont beaucoup plus compliquées à comprendre car il s’agit d’une approche plus programmatique. C’est pourquoi nous – très probablement – nous en tiendrons à OpenRules.

    Nous avons eu une question similaire avec nous, nous avons finalement repris Drools, il faut utiliser des baver si vous avez suivi:

    • La logique métier qui selon vous est encombrée de multiples conditions en raison de la variété des scénarios
    • Vous aurez une demande croissante d’augmentation de la complexité
    • Les changements de logique métier seraient fréquents (1 à 2 fois par an seraient également fréquents)
    • Votre serveur a assez de mémoire car c’est un outil gourmand en mémoire, il fournit des performances au désortingment de la mémoire

    Avoir plus de détails à l’ URL suivante

    Il suffit d’append que de nombreuses personnes recherchent quelque chose de plus proche de la gestion de certaines conditions pour activer ou désactiver certaines fonctionnalités d’une application.

    Je me suis fatigué de ré-implémenter le même motif encore et encore partout, alors j’ai décidé de faire un projet OSS appelé Roolie http://sourceforge.net/projects/roolie/

    Je viens de le faire et depuis qu’il n’a pas été signalé de bogue depuis sa sortie en 2010, je l’ai mis à niveau vers la version 1.0 sans autre modification que celle requirejse pour l’héberger chez Maven Central (que je suis en train de faire). ).

    Fondamentalement, JSR-94 est excessif pour la plupart des choses, et il y a une courbe d’apprentissage énorme et des frais généraux qui accompagnent les offres actuelles. C’est bien si c’est ce que vous voulez. Mais si vous voulez juste enchaîner des règles simples écrites en Java avec XML pour maintenir vos tests d’état, Roolie est un moyen très rapide de le faire. Aucune dépendance et aucune courbe d’apprentissage.

    Lorsque nous avions besoin d’un moteur de règles, nous avons décidé de nous lancer nous-mêmes, car ceux qui étaient disponibles étaient beaucoup trop compliqués pour nos tâches simples. Si vous êtes expérimenté à distance avec les expressions d’parsing que les utilisateurs peuvent utiliser, ce n’est pas très difficile à faire. Dans notre cas, la plupart des spécifications sont gérées par un XSD et seuls quelques champs sont analysés.