Список двигателей правил на Java
1. Обзор
В этой статье мы пройдемся по самым популярным двигателям правил для Java.
В критически важных приложениях процесс поддержания бизнес-логики в исходный код может стать слишком сложным. Бизнес-правила могут быть использованы для облегчения разработки и обслуживания путем отделения бизнес-логики от исходных кодов.
В Java-мире большинство библиотек двигателей правил реализуют стандарт JSR94, известный как Java Правило API Двигатель .
2. Друолы
Слюни является решением системы управления бизнес-правилами (BRMS). Drools может интегрироваться с jBPM, инструментом управления бизнес-процессами для стандартизации процесса, событий, задач и т.д.
Если вы хотите узнать больше, введение в Drools доступна здесь , наряду со статьей об интеграции с весной .
3. Таблетки OpenL
OpenL таблетки является системой управления бизнес-правилами и двигателем бизнес-правил, основанным на таблицах решений Excel. Поскольку формат таблиц, используемых этой структурой, знаком бизнес-пользователям, он устраняет разрыв между бизнес-пользователями и разработчиками.
Вот простой пример того, как работает фреймвок с помощью файла Excel, содержащего таблицы решений. Во-первых, давайте импортировать его зависимостей, которые полагаются на org.openl.core и org.openl.rules Модули:
org.openl org.openl.core 5.19.4 org.openl.rules org.openl.rules 5.19.4
Теперь, Пользователь POJO:
public class User { private String name; // getters and setters }
И enum, который будет представлять результат применяемых правил:
public enum Greeting { // ... }
Дело класс обертывает Пользователь объект с переменными, которые приводят к результатам:
public class Case { // Variables to infer outcomes // getters and setters }
Интерфейс IRule содержит правило, введенное файлом Excel:
public interface IRule { void helloUser(Case aCase, final Response response); }
Ответные класс обрабатывает возврат применяемого правила:
public class Response { private String result; private Mapmap = new HashMap<>(); }
Основной класс, который вызывает выполнение правила:
public class Main { private IRule instance; public static void main(String[] args) { Main rules = new Main(); // setup user and case here rules.process(aCase); } public void process(Case aCase) { EngineFactoryengineFactory = new RulesEngineFactory ( getClass().getClassLoader() .getResource("openltablets/HelloUser.xls"), IRule.class); instance = engineFactory.newEngineInstance(); instance.helloUser(aCase, new Response()); } }
4. Легкие правила
Easy Rules – это простой движок правил Java, обеспечивающий легкую и основанную poJO основу для определения бизнеса. Он может создавать сложные правила из примитивных, используя композитный шаблон.
Эта структура, в отличие от самых традиционных правил двигателей, не использует XML файлов или каких-либо доменных файлов конкретного языка для разделения правил от приложения. Он использует классы и методы на основе аннотации для введения бизнес-логики в приложение.
Простые правила могут быть удобны для разработчиков для создания и поддержания приложений с бизнес-логикой, которая полностью отделена от самого приложения. С другой стороны, как эта структура не реализует стандартную систему JSR94 и бизнес-логика должна быть закодирована прямо на Java-код.
Здесь мы предоставляем пример “Здравствуйте, мир”. Давайте импортировать необходимые зависимости на основе простые правила-основной модуль:
org.jeasy easy-rules-core 3.0.0
Далее мы создаем класс, определяющий правило:
@Rule(name = "Hello World rule", description = "Always say hello world") public class HelloWorldRule { @Condition public boolean when() { return true; } @Action public void then() throws Exception { System.out.println("hello world"); } }
Наконец, мы создаем основной класс:
public class Launcher { public static void main(String... args) { // create facts Facts facts = new Facts(); // create rules Rules rules = new Rules(); rules.register(new HelloWorldRule()); // create a rules engine and fire rules on known facts RulesEngine rulesEngine = new DefaultRulesEngine(); rulesEngine.fire(rules, facts); } }
5. Книга правил
RuleBook – это java-структура, которая использует Java 8 lambdas и шаблон цепи ответственности для определения правил с использованием простого подхода BDD.
Как и большинство двигателей правил, RuleBook использует понятие ” Факты “, который является данные, предоставленные в правила. RuleBook позволяет правилам изменять состояние фактов, которые затем могут быть прочитаны и изменены правилами дальше по цепочке. Для тех правил, которые читаются в данных ( Факты ) одного типа и вывода в результате другого типа, RuleBook имеет Решения .
RuleBook может быть интегрирован с Spring с помощью Java DSL.
Здесь мы предоставляем простой пример “Здравствуйте, мир” с помощью RuleBook. Давайте добавим его зависимость, которая опирается на свод правил основных модуль:
com.deliveredtechnologies rulebook-core 0.6.2
Теперь мы создаем правило:
public class HelloWorldRule { public RuleBook
Наконец, основной класс:
public static void main(String[] args) { HelloWorldRule ruleBook = new HelloWorldRule(); ruleBook .defineHelloWorldRules() .run(new FactMap<>()); }
6. Заключение
В этой быстрой статье мы обсудили некоторые известные библиотеки, которые обеспечивают двигатели для абстракции бизнес-логики.
Как всегда, примеры из этой статьи доступны на нашем Репозиторий GitHub .