Создание простого движка Java-правил - PullRequest
0 голосов
/ 05 июня 2018

Мы пытаемся создать универсальную службу регистрации оповещений для потребителей.Вот проблема, которую мы пытаемся решить:

  1. В предупреждении может быть зарегистрировано 'N' шаблонов. Каждый шаблон будет выбран на основе соответствия правил
  2. правило будет выглядеть примерно так:

    {"rule1": {"fieldName": "field1", "operator": ">", "value": "100"}

    FieldName может быть чем-то вроде - accountBal, status и т. Д. Оператором могут быть арифметические операторы, такие как ("+", "-", "/", "*") или логические операции, такие как (&&, ==, ||).планируем определить службу / регистрации и службу / выполнить.

Давайте возьмем правило, скажем: rule1 = field1> 100 -> выберите шаблон 1 rule2 = field1> = 100 &&field2 <150 - Выберите шаблон 2 </p>

По сути, я представляю это так:

abstract class Rule
{
    private String field;
    private Operator symbol;
    private String fieldValue

}

Правило -> может разрешить до N шаблонов, и система должна выслать мне список шаблоновназад.

Я начал смотреть на образец Интерпретатора и образец Правила, но я не нашел, на что смотрю.

БаМне нужен способ настроить правила (будут отправлены как json) из сервисного API и храниться в БД.В runTime, основанном на applicationId, будет запущено множество правил, которые будут возвращать List<Template>

. Любая помощь будет принята.

Я планировал использовать пользовательский обработчик правил с StandardEvaluationContext, нопример поможет мне начать работу.

1 Ответ

0 голосов
/ 05 июня 2018

Я использовал Apache Velocity для создания механизма правил.Velocity предоставляет функцию 'eval', которая может вычислять логические выражения.

...