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.