Voor- en nadelen van Java-regelengines

Wat zijn de voor- en nadelen van het toepassen van de Java-regelengines JESSen Kwijlt? Zijn er nog andere spelers?

Ik begrijp dat Drools Open Source is en JESS niet, maar hoe verhouden ze zich op andere gebieden, zoals gebruiksgemak, prestaties, niveau van integratie met uw code?


Antwoord 1, autoriteit 100%

Wat zijn de voor- en nadelen van het toepassen van de Java-regelengines JESS en Drools?

Gebruik een rule engine als u de bedrijfsregels wilt scheiden van de toepassingslogica. De Heeft uw project een Rule Engineartikel heeft een goed voorbeeld:

Bijvoorbeeld een typische etalage
systeem kan code bevatten om te berekenen
een korting:

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;
}

Een rule engine vervangt het bovenstaande door
code die er als volgt uitziet:

ruleEngine.applyRules(product);

Aan jou om te beslissen of het een goede zaak is om een ​​regelbeheerconsole in handen te geven van niet-technische mensen 🙂

Meer details in Moet ik een Rules Engine gebruiken?, Waarom een ​​Rule Engine gebruiken?, Enkele richtlijnen om te beslissen of u een Rules Engine moet gebruikenen op Google.

Zijn er nog andere spelers?

Andere spelers zijn JRules, Corticon (JRules is de meest bekende IMO – wat niet de beste betekent).

hoe verhouden ze zich op andere gebieden, zoals gebruiksgemak, prestaties, niveau van integratie met uw code?

Ik kan het je niet precies vertellen, ik heb alleen een beetje (positieve) ervaring met Drools. Maar je krijgt wel wat feedback van blogposts zoals JBoss Drools vs ILog JRules – een anekdotisch verhaal(lees het zeker) of Werken met Drools vanuit een JRules-perspectief. Ik weet zeker dat je er meer kunt vinden op Google (maar ik zou Drools eens proberen).


Antwoord 2, autoriteit 12%

We evalueren nu regels voor gebruik met onze applicatieserver. We zijn OpenRulestegengekomen, die gemakkelijk te integreren is met Java en, voor zover onze tests hebben aangetoond, snel genoeg . Het belangrijkste voordeel van OpenRules boven de andere is de manier waarop de regels worden aangepast en behandeld. Het gebeurt allemaal in Excel-tabellen, wat de gemakkelijkste manier is voor niet-programmeurs. Alle betrokkenen, zelfs de niet-technische mensen, begrepen alles perfect 🙂

We hebben ook kwijlen geïntegreerd, maar de regels zijn veel ingewikkelder om te begrijpen omdat het een meer programmatische benadering is. Daarom houden we ons – hoogstwaarschijnlijk – aan OpenRules.


Antwoord 3, autoriteit 6%

We hadden een soortgelijke vraag met ons, we hebben eindelijk Drools opgepikt, men zou kwijlen moeten gebruiken als je het volgende hebt:

  • Bedrijfslogica waarvan u denkt dat deze vol raakt met meerdere if-voorwaarden vanwege de verschillende scenario’s
  • U zult een groeiende vraag hebben naar toename van de complexiteit
  • De wijzigingen in de bedrijfslogica zouden frequent zijn (1 – 2 keer per jaar zou ook frequent zijn)
  • Uw server heeft genoeg geheugen, want het is een geheugen-hongerige tool, het levert prestaties ten koste van geheugen

Meer informatie vindt u op de volgende URL


Antwoord 4, autoriteit 2%

Ik voeg er alleen aan toe dat veel mensen op zoek zijn naar iets dat meer lijkt op het beheren of aan bepaalde voorwaarden wordt voldaan om bepaalde functies in een toepassing in of uit te schakelen.

Ik werd moe van het steeds opnieuw implementeren van hetzelfde patroon overal waar ik ging, dus besloot ik er een OSS-project voor te maken genaamd Roolie http://sourceforge.net/projects/roolie/

Ik heb het zojuist uitgebreid en aangezien er geen bugs zijn gemeld sinds de release in 2010, heb ik het geüpgraded naar v 1.0 zonder andere wijzigingen dan die nodig zijn om het op Maven Central te hosten (waarvan ik in de proces van doen).

In principe is JSR-94 overkill voor de meeste dingen, en er is een enorme leercurve en overhead die samengaan met het huidige aanbod. Dat is prima als je dat wilt. Maar als u eenvoudige regels die in Java zijn geschreven aan XML wilt koppelen om uw statustests te onderhouden, dan is Roolie een zeer snelle manier om dat te doen. Geen afhankelijkheden en geen leercurve.


Antwoord 5, autoriteit 2%

Toen we een regelengine nodig hadden, besloten we er zelf een te gebruiken, omdat de beschikbare regels veel te ingewikkeld waren voor onze eenvoudige taken. Als je zelfs maar op afstand ervaring hebt met het ontleden van uitdrukkingen die gebruikers kunnen invoeren, is dit niet erg moeilijk om te doen. In ons geval wordt het grootste deel van de specificaties afgehandeld door een XSD en worden slechts enkele velden verder geparseerd.

Other episodes