Drools - składnia reguł

Jak widzieliście, plik .drl (plik reguł) ma własną składnię, w tym rozdziale omówimy część składni reguł.

Warunki w zasadach

Reguła może zawierać wiele warunków i wzorców, takich jak -

  • Konto (saldo == 200)
  • Klient (nazwa == „Vivek”)

Powyższe warunki sprawdzają, czy saldo konta wynosi 200 lub czy nazwa klienta to „Vivek”.

Zmienne w regułach

Nazwa zmiennej w Drools zaczyna się od symbolu dolara ($).

  • $ account - konto ()
  • $ account jest zmienną dla klasy Account ()

Drools może współpracować ze wszystkimi natywnymi typami Javy, a nawet z Enum.

Komentarze w zasadach

Do oznaczania komentarzy jednowierszowych można używać znaków specjalnych # lub //.

W przypadku komentarzy wielowierszowych użyj następującego formatu:

/*
   Another line
   .........
   .........
*/

Zmienne globalne

Zmienne globalne to zmienne przypisane do sesji. Mogą być używane z różnych powodów w następujący sposób -

  • Dla parametrów wejściowych (na przykład wartości stałych, które można dostosowywać między sesjami).

  • W przypadku parametrów wyjściowych (na przykład raportowanie - reguła mogłaby zapisać komunikat do globalnej zmiennej raportu).

  • Punkty wejścia do usług, takich jak logowanie, z których można korzystać w ramach reguł.

Funkcje w regułach

Funkcje to wygoda. Mogą być używane w warunkach i konsekwencjach. Funkcje stanowią alternatywę dla klas narzędziowych / pomocniczych. Na przykład,

function double calculateSquare (double value) {
   return value * value;
}

Dialekt

Dialekt określa składnię używaną w każdym wyrażeniu kodu, które jest w stanie lub w konsekwencji. Obejmuje wartości zwracane, ewaluacje, ewaluacje wbudowane, predykaty, wyrażenia istotności, konsekwencje i tak dalej. Wartość domyślna toJava. Drools obsługuje obecnie jeszcze jeden dialekt o nazwieMVEL. Domyślny dialekt można określić na poziomie pakietu w następujący sposób -

package org.mycompany.somePackage
dialect "mvel"

Dialekt MVEL

MVEL to język wyrażeń dla aplikacji opartych na Javie. Obsługuje dostęp do pól i metod / pobierających. Opiera się na składni Java.

Występ

Salience jest bardzo ważną cechą składni reguł. Salience jest używany przez strategię rozwiązywania konfliktów, aby zdecydować, która reguła zostanie uruchomiona jako pierwsza. Domyślnie jest to główne kryterium.

Możemy użyć znaczenia, aby zdefiniować kolejność reguł strzelania. Salience ma jeden atrybut, który przyjmuje dowolne wyrażenie zwracające liczbę typu int (prawidłowe są zarówno liczby dodatnie, jak i ujemne). Im wyższa wartość, tym większe prawdopodobieństwo, że reguła zostanie wychwycona przez strategię rozwiązywania konfliktów.

salience ($account.balance * 5)

Domyślna wartość istotności to 0. Powinniśmy o tym pamiętać, przypisując wartości istotności tylko do niektórych reguł.

Składnia reguł zawiera wiele innych funkcji / parametrów, ale omówiliśmy tutaj tylko te ważne.

Słowa kluczowe konsekwencji reguł

Słowa kluczowe związane z regułą to słowa kluczowe używane w „then”Część reguły.

  • Modify - Atrybuty faktu można modyfikować w pliku then częścią Reguły.

  • Insert - Na podstawie pewnego warunku, jeśli jest prawdziwy, można wstawić nowy fakt do bieżącej sesji silnika reguł.

  • Retract - Jeśli określony warunek w regule jest spełniony i nie chcesz robić nic innego w związku z tym faktem, możesz wycofać ten konkretny fakt z silnika reguł.

Note- Uznaje się za bardzo złą praktykę stosowanie logiki warunkowej (jeśli stwierdzenia) w ramach konsekwencji reguły. W większości przypadków należy utworzyć nową regułę.