Zoznam motorov s pravidlami v prostredí Java

1. Prehľad

V tomto článku si prejdeme niektoré z najpopulárnejších nástrojov na vytváranie pravidiel pre Javu.

V rámci kriticky dôležitých aplikácií môže byť proces udržiavania obchodnej logiky v zdrojovom kóde príliš komplikovaný. Obchodné pravidlá možno použiť na uľahčenie vývoja a údržby oddelením obchodnej logiky od zdrojového kódu.

Vo svete Java väčšina knižníc motorov pravidiel implementuje štandard JSR94 známy ako Java Rule API Engine.

2. Slintá

Drools je riešenie systému riadenia obchodných pravidiel (BRMS). Drools sa môže integrovať s jBPM, nástrojom na správu podnikových procesov pre štandardizáciu procesov, činností udalostí, úloh atď.

Ak si chcete prečítať viac, je tu úvod k Drools spolu s článkom o integrácii s Spring.

3. Tablety OpenL

OpenL Tablets je systém riadenia obchodných pravidiel a stroj obchodných pravidiel založený na rozhodovacích tabuľkách programu Excel. Pretože formát tabuliek používaný týmto rámcom je pre obchodných používateľov známy, preklenuje priepasť medzi obchodnými používateľmi a vývojármi.

Tu je jednoduchý príklad toho, ako rámec funguje pomocou súboru Excel obsahujúceho rozhodovacie tabuľky. Najskôr importujme jeho závislosti, ktoré sa spoliehajú na moduly org.openl.core a org.openl.rules:

 org.openl org.openl.core 5.19.4 org.openl.rules org.openl.rules 5.19.4 

Teraz, a Používateľ POJO:

public class User {private String name; // zakladatelia a zakladatelia}

A výčet, ktorý bude predstavovať výsledok použitých pravidiel:

verejné enum Pozdrav {// ...}

The Prípad trieda zabalí Používateľ objekt s premennými, ktoré vedú k výsledkom:

public class case {// Premenné na odvodenie výsledkov // getre a setre}

Rozhranie IRule obsahuje pravidlo vložené súborom Excel:

verejné rozhranie IRule {void helloUser (prípad aCase, konečná odpoveď); }

The Odozva trieda spracuje návrat použitého pravidla:

public class Response {private String result; súkromná mapa mapa = nová HashMap (); }

Hlavná trieda, ktorá spúšťa vykonávanie pravidla:

public class Main {private IRule instance; public static void main (String [] args) {Hlavné pravidlá = nové Main (); // nastavenie užívateľa a prípadu rules.process (aCase); } public void process (Case aCase) {EngineFactory engineFactory = new RulesEngineFactory (getClass (). getClassLoader () .getResource ("openltablets / HelloUser.xls"), IRule.class); instance = engineFactory.newEngineInstance (); instance.helloUser (aCase, new Response ()); }}

4. Jednoduché pravidlá

Easy Rules je jednoduchý modul pravidiel Java, ktorý poskytuje ľahký rámec založený na POJO na definovanie podnikania. Môže vytvárať zložité pravidlá z primitívnych pomocou zloženého vzoru.

Tento rámec, na rozdiel od najtradičnejších nástrojov na vytváranie pravidiel, nevyužíva súbory XML ani žiadne súbory špecifického jazyka pre oddelenie pravidiel od aplikácie. Používa triedy a metódy založené na anotáciách na vloženie obchodnej logiky do aplikácie.

Ľahké pravidlá môžu byť pre vývojárov užitočné pri vytváraní a údržbe aplikácií s obchodnou logikou, ktorá je úplne oddelená od samotnej aplikácie. Na druhej strane, ako tento rámec neimplementuje štandard JSR94 a obchodná logika musí byť kódovaná priamo do kódu Java.

Tu uvádzame príklad „Dobrý deň, svet“. Importujme požadované závislosti založené na module easy-rules-core:

 org.jeasy easy-rules-core 3.0.0 

Ďalej vytvoríme triedu, ktorá definuje pravidlo:

@Rule (name = "Pravidlo Hello World", description = "Vždy pozdravte svet") verejná trieda HelloWorldRule {@Condition public boolean when () {return true; } @Action public void then () hodí Exception {System.out.println ("ahoj svet"); }}

Nakoniec vytvoríme hlavnú triedu:

launcher verejnej triedy {public static void main (String ... args) {// vytváranie faktov Fakty fakty = nové Fakty (); // vytvorenie pravidiel Pravidlá pravidlá = nové Pravidlá (); rules.register (new HelloWorldRule ()); // vytvorte motor pravidiel a pravidlá streľby na základe známych skutočností RulesEngine rulesEngine = nový DefaultRulesEngine (); rulesEngine.fire (pravidlá, fakty); }}

5. RuleBook

RuleBook je rámec Java, ktorý na definovanie pravidiel pomocou jednoduchého prístupu BDD využíva lambdy Java 8 a model reťazca zodpovednosti.

Rovnako ako väčšina nástrojov na vytváranie pravidiel, RuleBook využíva koncept „Fakty”, Čo sú údaje poskytované pravidlám. RuleBook umožňuje pravidlám upravovať stav faktov, ktoré je potom možné čítať a upravovať pravidlami ďalej v reťazci. Pre tie pravidlá, ktoré načítajú údaje (Fakty) jedného typu a výstupom výsledku iného typu, ktorý má RuleBook Rozhodnutia.

RuleBook je možné integrovať do Spring pomocou Java DSL.

Tu poskytujeme jednoduchý príklad „Hello, world“ pomocou RuleBook. Pridajte svoju závislosť, ktorá sa spolieha na modul s pravidlami:

 com.deliveredtechnologies rulebook-core 0.6.2 

Teraz vytvoríme pravidlo:

verejná trieda HelloWorldRule {public RuleBook defineHelloWorldRules () {návrat RuleBookBuilder .create () .addRule (pravidlo -> pravidlo.withNoSpecifiedFactType (). potom (f -> System.out.print ("Hello"))) .addRule (pravidlo - > rule.withNoSpecifiedFactType () .then (f -> System.out.println ("svet"))) .build (); }} 

Nakoniec hlavná trieda:

public static void main (String [] args) {HelloWorldRule ruleBook = nový HelloWorldRule (); ruleBook .defineHelloWorldRules () .run (new FactMap ()); } 

6. Záver

V tomto rýchlom článku sme diskutovali o niektorých známych knižniciach, ktoré poskytujú nástroje na abstrakciu obchodnej logiky.

Príklady z tohto článku sú ako vždy dostupné v našom úložisku GitHub.


$config[zx-auto] not found$config[zx-overlay] not found