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 donne un bon exemple:
Par exemple, un système de vitrine 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 un code qui ressemble à ceci:
ruleEngine.applyRules(product);
À 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 Dois-je utiliser un moteur de règles? , Pourquoi utiliser un moteur de règles? , Quelques lignes directrices pour décider d'utiliser un moteur de règles et sur Google .
Y a-t-il d'autres joueurs?
Les autres joueurs incluent JRules, Corticon (JRules est l'OMI le plus célèbre - ce qui ne veut pas dire le meilleur).
comment se comparent-ils dans d'autres domaines comme la facilité d'utilisation, les performances, 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 sur des articles de blog tels que JBoss Drools vs ILog JRules - une histoire anecdotique (assurez-vous de la lire) ou Working with Drools du point de vue de JRules . Je suis sûr que vous pouvez en trouver plus sur Google (mais je voudrais essayer Drools).
Nous évaluons actuellement les règles à utiliser avec notre serveur d'applications. Nous avons rencontré OpenRules , qui est facile à intégrer à Java et, d'après nos tests, assez rapide. Le principal avantage d'OpenRules par rapport aux autres est la façon dont les règles sont modifiées et gérées. Tout se passe dans des tableaux Excel, ce qui est le moyen le plus simple pour les non-programmeurs. Toutes les personnes impliquées, même les personnes non techniques, ont tout compris parfaitement :-)
Nous avons également intégré des bave, mais les règles sont beaucoup plus compliquées à comprendre car il s'agit d'une approche plus programmatique. C'est pourquoi nous nous en tiendrons très probablement aux OpenRules.
la source
Nous avons eu une question similaire avec nous, nous avons finalement ramassé Drools, il faut utiliser des bave si vous avez les suivants:
Avoir plus de détails à l' URL suivante
la source
Il suffit d'ajouter que de nombreuses personnes recherchent quelque chose de plus proche de la gestion du respect de certaines conditions pour activer ou désactiver certaines fonctionnalités dans une application.
J'étais fatigué de réimplémenter le même modèle partout où j'allais, alors j'ai décidé de créer un projet OSS pour celui-ci appelé Roolie http://sourceforge.net/projects/roolie/
Je viens de le personnaliser et comme aucun bogue n'a été signalé depuis 2010 lors de sa sortie, je l'ai mis à niveau vers la version 1.0 sans aucun changement autre que ceux requis pour l'héberger chez Maven Central (ce que je suis en train de faire ).
Fondamentalement, le JSR-94 est excessif pour la plupart des choses, et il y a une énorme courbe d'apprentissage et des frais généraux qui accompagnent les offres actuelles. C'est bien si c'est ce que vous voulez. Mais si vous souhaitez simplement 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. Pas de dépendances et pas de courbe d'apprentissage.
la source
Lorsque nous avions besoin d'un moteur de règles, nous avons décidé de lancer le nôtre, car ceux disponibles étaient beaucoup trop compliqués pour nos tâches simples. Si vous êtes même expérimenté à distance avec l'analyse des expressions que les utilisateurs peuvent insérer, 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 plus en détail.
la source