120 votes

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

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

Je comprends que bave est Open Source et JESS n’est pas, mais comment se comparent-ils dans d’autres domaines comme la facilité d’utilisation, performances, niveau d’intégration avec votre code ?

133voto

Pascal Thivent Points 295221

Quels sont les avantages et les inconvénients de l'adoption de la Java des règles des moteurs de JESS et de la Bave?

L'utilisation d'un moteur de règles si vous avez besoin de séparer les affaires les règles de la logique d'application. La est-ce que Votre Projet a Besoin d'un Moteur de Règle article est un bon exemple:

Par exemple, un type de vitrine le système pourrait impliquer code pour calculer une réduction:

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 le dessus avec code qui ressemble à ceci:

ruleEngine.applyRules(product);

À vous de décider de mettre une règle admin console dans les mains de personnes non techniques est une bonne chose ou pas :)

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 De l'Utilisation d'Un Moteur de Règles et sur Google.

Existe-il d'autres joueurs?

Les autres joueurs comprennent JRules, Corticon (JRules est le plus célèbre de l'OMI, 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 de l'intégration avec votre code?

Ne peux pas vous dire précisément, j'ai seulement un peu (positif) de l'expérience avec de la Bave. Mais vous aurez quelques commentaires de blogue comme JBoss Drools vs ILog JRules - une anecdote (assurez-vous de lire) ou de Travail avec la Bave d'un JRules point de vue. Je suis sûr que vous en trouverez d'autres sur Google (mais je donnerais Bave d'essayer).

17voto

DaDaDom Points 2184

Nous sommes l'évaluation des règles pour une utilisation avec notre serveur d'application. Nous avons rencontré OpenRules, qui est facile à intégrer avec Java et, dans la mesure de nos tests ont montré, assez rapide. Le principal avantage de OpenRules au-dessus de la oters est la façon dont les règles sont modifiées et traitées. Tout se passe dans des tableaux Excel, qui est le moyen le plus facile pour les non-programmeurs. Tout le monde, même les personnes non techniques, tout compris parfaitement :-)

Nous avons également bave intégré, mais les règles sont plus compliqués à comprendre que c'est une approche plus programmatique. C'est pourquoi nous - plus probable - coller à OpenRules.

9voto

Sachin Thapa Points 1208

Nous avons eu la même question avec nous, nous avons finalement repris Bave, on devrait utiliser bave si vous avez des éléments suivants:

  • La logique d'entreprise qui vous semble être encombrée avec plusieurs si les conditions à cause de la variété de scénarios
  • Vous aurez la demande croissante de l'augmentation de la complexité
  • La logique de gestion des changements seraient fréquents (1 à 2 fois par an serait également fréquent)
  • Votre serveur est d'avoir assez de mémoire que c'est un mémoire hongrie outil, il offre des performances à coût de la mémoire

Plus de détails à la suite de l'URL

3voto

R K Points 31

Juste en ajoutant que beaucoup de gens sont à la recherche de quelque chose de plus semblable à la gestion de la question de savoir si certaines conditions sont remplies d'activer ou de désactiver certaines fonctionnalités dans une application.

J'ai grandi fatigué de re-mettre en œuvre le même schéma encore et partout où je suis allé, j'ai donc décidé de faire un OSS projet appelé Roolie http://sourceforge.net/projects/roolie/

Je viens de maven-isée et depuis il n'y a eu aucun bugs signalés depuis 2010, quand il a été libéré, j'ai mis à niveau vers la v 1.0 avec pas de changements autres que ceux requis pour l'accueil à Maven Central (dont je suis en train de le faire).

Fondamentalement, la JSR-94 est trop pour la plupart des choses, et il y a une énorme courbe d'apprentissage et les frais généraux qui vont de pair avec l'offre actuelle. C'est bien si c'est ce que vous voulez. Mais si vous voulez juste pour la chaîne de règles simples, écrites en Java avec XML à maintenir votre état tests, Roolie est un moyen très rapide de le faire. Pas de dépendance, et aucune courbe d'apprentissage.

2voto

Confusion Points 6056

Lorsque nous avions besoin d’un moteur de règles, nous avons décidé de rouler nos propres, car celles disponibles étaient beaucoup trop compliqués pour nos tâches simples. Si vous êtes encore à distance expérimenté avec l’analyse des expressions utilisateur peut mettre, ce n’est pas très difficile à faire. Dans notre cas, la plus grande partie de la spécification est gérée par un XSD et seulement quelques uns des champs sont analysées plus loin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X