Drools - pisanie reguł

Jeśli widzisz domyślną regułę zapisaną w projekcie Hello World (Sample.drl), użyto wielu słów kluczowych, które teraz wyjaśnimy.

Sample.drl

  • Package- Każda reguła zaczyna się od nazwy pakietu. Pakiet działa jako przestrzeń nazw dla reguł. Nazwy reguł w pakiecie muszą być unikalne. Pakiety w regułach są podobne do pakietów w Javie.

  • Import statement- Niezależnie od faktów, do których chcesz zastosować regułę, należy je zaimportować. Na przykład com.sample.DroolsTest.Message; w powyższym przykładzie.

  • Rule Definition- Składa się z nazwy reguły, warunku i konsekwencji. Słowa kluczowe Drools torule, when, then, i end. W powyższym przykładzie nazwy reguł to „Hello World” i „GoodBye”. Plikwhen część jest warunkiem zarówno w zasadach, jak i w thenczęść jest konsekwencją. W terminologii regułwhen część jest również nazywana LHS (lewa strona) i then część jako RHS (prawa strona) reguły.

Przejdźmy teraz przez terminy używane w pliku Java używanym do ładowania Drools i wykonywania reguł.

Baza wiedzy

Baza wiedzy to interfejs zarządzający zbiorem reguł, procesów i typów wewnętrznych. Znajduje się w opakowaniuorg.drools.KnowledgeBase. W Drools są one powszechnie określane jakoknowledge definitions lub knowledge. Definicje wiedzy są pogrupowane wknowledge packages. Definicje wiedzy można dodawać lub usuwać. Głównym celem bazy wiedzy jest ich przechowywanie i ponowne wykorzystanie, ponieważ ich tworzenie jest kosztowne. Baza wiedzy zawiera metody tworzenia sesji wiedzy.

Sesja wiedzy

Sesja wiedzy jest pobierana z bazy wiedzy. Jest to główny interfejs do interakcji z silnikiem Drools. Sesja wiedzy może być dwojakiego rodzaju -

  • Sesja wiedzy bezstanowej

  • Sesja wiedzy stanowej

Sesja wiedzy bezstanowej

Sesja wiedzy bezstanowej to sesja bezstanowa, która tworzy najprostszy przypadek użycia, nie wykorzystując wnioskowania. Sesję bezstanową można wywołać jak funkcję, przekazując jej pewne dane, a następnie otrzymując z powrotem pewne wyniki. Typowe przykłady sesji bezstanowych obejmują -

  • Validation

    • Czy ta osoba kwalifikuje się do kredytu hipotecznego?

  • Calculation

    • Oblicz premię za kredyt hipoteczny.

  • Routing and Filtering

    • Filtruj przychodzące wiadomości, takie jak e-maile, do folderów.

    • Wysyłaj wiadomości przychodzące do miejsca docelowego

Sesja wiedzy stanowej

Sesje stanowe są dłuższe i pozwalają na iteracyjne zmiany w czasie. Niektóre typowe przypadki użycia sesji stanowych obejmują -

  • Monitoring

    • Monitorowanie i analiza giełdy pod kątem zakupów półautomatycznych.

  • Diagnostics

    • Wyszukiwanie usterek, diagnostyka medyczna

  • Logistics

    • Śledzenie przesyłek i dostarczanie przesyłek

Kreator wiedzy

Interfejs KnoledgeBuilder jest odpowiedzialny za tworzenie pakietu wiedzy na podstawie definicji wiedzy (reguł, procesów, typów). Znajduje się w opakowaniuorg.drools.builder.KnowledgeBuilder. Definicje wiedzy mogą mieć różne formaty. Jeśli wystąpią jakiekolwiek problemy z budowaniem, KnowledgeBuilder zgłosi błędy za pomocą tych dwóch metod:hasErrors i getError.

Poniższy diagram wyjaśnia ten proces

W powyższym przykładzie, ponieważ bierzemy prosty przykład bezstanowej sesji wiedzy, wstawiliśmy fakt do sesji, a następnie wywołano metodę fireAllRules () i zobaczysz wynik.

W przypadku sesji wiedzy stanowej, po uruchomieniu reguł, obiekt sesji wiedzy stanowej musi wywołać metodę dispose() aby zwolnić sesję i uniknąć wycieków pamięci.