Как вы увидели, что .drl (файл правил) имеет свой собственный синтаксис, давайте рассмотрим некоторую часть синтаксиса правил в этой главе.
Условия в Правилах
Правило может содержать много условий и шаблонов, таких как —
- Аккаунт (баланс == 200)
- Заказчик (имя == «Вивек»)
Приведенные выше условия проверяют, равен ли остаток на Счете 200 или имя Клиента «Vivek».
Переменные в правилах
Имя переменной в Drools начинается с символа доллара ($).
- $ account — Account ()
- $ account — переменная для класса Account ()
Drools может работать со всеми нативными типами Java и даже с Enum.
Комментарии в правилах
Специальные символы, # или //, могут использоваться для пометки однострочных комментариев.
Для многострочных комментариев используйте следующий формат:
/*
Another line
.........
.........
*/
Глобальные переменные
Глобальные переменные — это переменные, назначенные сеансу. Они могут быть использованы по разным причинам следующим образом —
-
Для входных параметров (например, постоянных значений, которые можно настраивать от сеанса к сеансу).
-
Для выходных параметров (например, отчетность — правило может записать какое-то сообщение в глобальную переменную отчета).
-
Точки входа для таких сервисов, как логирование, которые можно использовать в рамках правил.
Для входных параметров (например, постоянных значений, которые можно настраивать от сеанса к сеансу).
Для выходных параметров (например, отчетность — правило может записать какое-то сообщение в глобальную переменную отчета).
Точки входа для таких сервисов, как логирование, которые можно использовать в рамках правил.
Функции в правилах
Функции являются удобной функцией. Их можно использовать в условиях и последствиях. Функции представляют альтернативу классам утилит / помощников. Например,
function double calculateSquare (double value) { return value * value; }
говор
Диалект определяет синтаксис, используемый в любом выражении кода, которое находится в условии или в последствии. Он включает в себя возвращаемые значения, уклонения, встроенные уклонения, предикаты, выражения значимости, последствия и т. Д. Значением по умолчанию является Java . В настоящее время Drools поддерживает еще один диалект под названием MVEL . Диалект по умолчанию может быть указан на уровне пакета следующим образом:
package org.mycompany.somePackage dialect "mvel"
MVEL Диалект
MVEL — это язык выражений для приложений на основе Java. Он поддерживает доступ к полям и методам / получателям. Он основан на синтаксисе Java.
выпуклость
Важность — очень важная особенность синтаксиса правил. Значимость используется стратегией разрешения конфликтов, чтобы решить, какое правило применять в первую очередь. По умолчанию это основной критерий.
Мы можем использовать особенности, чтобы определить порядок правил стрельбы. У Salience есть один атрибут, который принимает любое выражение, которое возвращает число типа int (допустимы как положительные, так и отрицательные числа). Чем выше значение, тем больше вероятность того, что стратегия разрешения конфликтов будет применена к правилу.
salience ($account.balance * 5)
Значением по умолчанию является 0. Мы должны помнить об этом при назначении значений значимости только для некоторых правил.
В синтаксисе правил есть много других функций / параметров, но мы рассмотрели только важные из них.
Ключевые слова следствия правила
Ключевые слова следствия правила — это ключевые слова, используемые в части правила « then ».
-
Изменить — Атрибуты факта могут быть изменены в тогдашней части правила.
-
Вставить — на основании некоторого условия, если оно истинно, можно вставить новый факт в текущий сеанс механизма правил.
-
Убрать — если определенное условие является истинным в правиле, и вы не хотите действовать в отношении этого факта, вы можете убрать конкретный факт из механизма правил.
Изменить — Атрибуты факта могут быть изменены в тогдашней части правила.
Вставить — на основании некоторого условия, если оно истинно, можно вставить новый факт в текущий сеанс механизма правил.
Убрать — если определенное условие является истинным в правиле, и вы не хотите действовать в отношении этого факта, вы можете убрать конкретный факт из механизма правил.
Примечание. Считается очень плохой практикой иметь условную логику (если операторы) в рамках следствия правила. В большинстве случаев новое правило должно быть создано.