Download - Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Transcript
Page 1: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Informatyzacja przedsiębiorstwWYKŁAD

dr inż. Piotr Zabawa

IBM/Rational Certified Consultant

[email protected]

wersja 0.1.0

07.10.2010

Page 2: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Wykład 2Wykład 2Modelowanie procesów biznesowych

z wykorzystaniem BPMN

w środowisku Jboss Drools

Page 3: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Literatura

Wykład ten (Wykład 2) powstał na podstawie dwóch książek:

Bali M., Drools JBoss Rules 5.0.

Developers Guide, Packt Publishing

2009.

Browne P., JBoss Drools Business Rules,

Packt Publishing 2009.

oraz na podstawie dokumentacji do JBoss Drools.

Page 4: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Elementy diagramu BPMN2

• Na wykładzie tym zostaną zaprezentowane tylko te elementy

standardu BPMN2, które są dostępne w obecnej wersji z poziomu

JBossDrools 5.1.

• W drugiej części wykładu zostanie zaprezentowany sposób

skonfigurowania środowiska developerskiego do modelowania

procesów i reguł biznesowych w Eclipse. Zostanie też zaprezentowany

sposób tworzenia prostych projektów.

• Bardziej zaawansowany przykład (od modelu biznesowego po

aplikację Java EE) zostanie omówiony na jednym z kolejnych

wykładów.

Page 5: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Start/End

Start – jedyny na diagramie workflow początek

procesu. Nie ma wejścia i ma jedno wyjście.

End – jeden z wielu możliwych końców procesu.

Ma jedno wejście i nie ma wyjścia.

Page 6: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

GatewaysDiverge (Split) – miejsce rozgałęzienia procesu w

wiele ścieżek.

AND – przepływ we wszystkich wyjściach naraz

OR – przepływ do wszystkich warunków true

XOR – zostanie wybrane dokładnie jedno wyjście

Converge (Join) – miejsce połączenia wielu

ścieżek procesu w jedną.

AND – kontynuacja po zakończeniu wszystkich

wejść

XOR – kontynuacja po zakończeniu pierwszego

wejścia

Page 7: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Tasks

Rule – obejmuje grupę reguł biznesowych do

uruchomienia w ramach tego tasku.

Script – blok kodu do wykonania w ramach tego Script – blok kodu do wykonania w ramach tego

tasku.

User Task – task wymagający podjęcia działań przez business workera.

Subprocess – podproces służący dekompozycji

złożonego procesu lub ponownemu użyciu.

Page 8: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Service Tasks

Log - wbudowana usługa logowania do pliku.

Email – wbudowana usługa powiadamiania e-

mail.

Page 9: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Events

Timer – zdarzenie wyzwalane timerem.

Error – zdarzenie wyzwalane błędem.Error – zdarzenie wyzwalane błędem.

Message – zdarzenie wyzwalane komunikatem.

Page 10: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Sub-Process

Sub-Process – służy modelowaniu

podprocesów osadzanych w

ramach procesu. Podproces ma

dostęp do wszystkich danych dostęp do wszystkich danych

procesu, którego jest elementem.

Podobnie jak proces musi mieć jeden stan początkowy i może

mieć wiele stanów końcowych.

Page 11: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Multiple Instances

Multiple Instances – wielokrotne

uruchomienie podprocesu zawartego

w tym kontenerze.

Page 12: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Zaawansowany przykład modelu

Page 13: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Zaawansowany przykład modelu

Page 14: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Zaawansowany przykład modelu

Page 15: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Wady tradycyjnego podejściaWady tradycyjnego podejścia:

if (customer.getLevel() == Level.Gold){

// coś dla Gold

}

else if (customer.getLevel==Level.Silver){

if (customer.getAccounts()==null){

// coś dla Silver, który nnie ma rachunku???// coś dla Silver, który nnie ma rachunku???

}

else{

for(Account account : customer.getAccounts())

if (account.getBalance<0){

// coś dla Silver mającego konto z debetem

}

else if (account.getBalance>=0 and account.getBalance()<=1000){}

else if (account.getBalance>1000 and account.getBalance()<=100000){}

else if (account.getBalance>100000 and account.getBalance()<=500000){}

// …

}

}

Jak obsługiwać zmiany logiki w takim kodzie?

Page 16: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Rozwiązanie problemu

Lepiej rozbić to na niezależne warunki:

if Customer(level==Level.Silver) and no Account

if Customer(level==Level.Silver) and has Account debit

if Customer(level==Level.Silver) and has Account less then 1000

//…//…

Page 17: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Uzasadnienie dla reguł biznesowych

• Zalety

• Wady

• Kiedy nie stosować

Page 18: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Reguły biznesowe - zalety

• Łatwiej zrozumieć analitykowi i nowemu programiście

• Łatwiej skupić się na istocie problemu, czyli co a nie jak

• Łatwość dodawania, usuwania reguł

• Łatwość wprowadzania zmian zarówno do reguł jak i do

modelu dziedzinowego

• Duża efektywność algorytmu

• Łatwość odwzorowania w reguły wymagań formułowanych przez analityków

Page 19: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Reguły biznesowe - zalety

• Łatwość korzystania z jednolitego mechanizmu przy

dodawaniu zobowiązań biznesowych, np. audyt,

raportowanie, logowanie zdarzeń

• Łatwość ponownego użycia• Łatwość ponownego użycia

• Uwolnienie reguł od sekwencyjności przetwarzania (w

odróżnieniu od języków deklaratywnych)

• Łatwość wykonywania reguł z procesu lub uruchamiania

procesów w regułach (Drools)

Page 20: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Reguły biznesowe - zalety

• Niezależne cykle życia. Wydzielenie reguł i procesu z

cyklu życia oprogramowania w osobną grupę często

zmieniających się artefaktów; niezależność zmian

reguł/procesów i kodu oprogramowaniareguł/procesów i kodu oprogramowania

• Łatwość osadzania Drools w aplikacjach

Page 21: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Reguły biznesowe - wady

• Konieczność przestawienia się programistów na inny

sposób myślenia

• Trudności w wykrywaniu i usuwaniu błędów w

regułach/procesieregułach/procesie

• Trudność śledzenia reguł bez dogłębnej znajomości tego

jak działa silnik

Page 22: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Reguły biznesowe - wady

• Wysokie wymagania dla zasobów pamięciowych

• Teoretyczne niebezpieczeństwo wpadnięcia w rekursję jeśli reguły zmieniają sobie nawzajem dane, na których

działają (teoretyczne jeśli modelujemy działający już działają (teoretyczne jeśli modelujemy działający już proces)

Page 23: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Reguły biznesowe – kiedy nie?

• Jeśli mniej niż 20 reguł

• Jeśli logika biznesowa zmienia się rzadko

• Jeśli reguły są proste, działają tylko na jednym obiekcie

• Jeśli w pseudo-kodzie poziom zagnieżdżenia instrukcji

warunkowych jest mniejszy niż 3

• Jeśli software ma charakter doraźny i nie będzie

ewoluował

• Jeśli brakuje zasobów do obsługi reguł biznesowych

Page 24: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

DroolsJest to tzw. BLiP (Business Logic integration Platform).

Na zajęciach skorzystamy z:

• Drools Expert – silnik reguł biznesowych

• Drools Flow – silnik procesów biznesowych

• Drools Fusion – zdarzenia biznesowe

Page 25: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Instalacja środowisk

Na kolejnych slajdach przedstawiono sposób instalacji

całego uniwersalnego środowiska deweloperskiego i

wykonawczego.

Jednak do samego działania w Drools wystarczy Jednak do samego działania w Drools wystarczy

wykonać jedynie następujące kroki:

• Instalacja uniwersalnego środowiska developerskiego

• Konfiguracja środowiska developerskiego Drools

Page 26: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Instalacja uniwersalnegośrodowiska deweloperskiego

Środowisko to służy jednocześnie do:

• Modelowania w UML

• Modelowania w BPMN z wykorzystaniem Drools i

uruchamiania modeli

• Pisania aplikacji Java EE w przyjętym szkielecie

• Pisania aplikacji Java SE/EE wykorzystujących silniki

Drools

Instalacja opisana w pliku:

UniversalIDE_01_Installation.pdf

Page 27: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Instalacja uniwersalnegośrodowiska wykonawczego

Środowisko to służy do uruchamiania:

• Aplikacji Java EE

• Modeli BPMN w JBoss Drools

Instalacja opisana w pliku:

UniversalRuntime_01_InstallAndConfig.pdf

Page 28: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Konfiguracja uniwersalnegośrodowiska deweloperskiego

Środowisko to wykorzystuje następujące środowisko

wykonawcze:

• JBoss AS i/lub Tomcat jako serwery aplikacyjne

• MySQL i/lub Derby jako serwery baz danych

• JBoss Drools

Konfiguracja opisana w pliku:

UniversalIDE_02_Configuration.pdf

Page 29: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Konfiguracja środowiska developerskiego Drools

Opisana w pliku:

JBossDrools_01_RuntimeSetting.pdf

Page 30: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Przykłady Drools_HelloWorld

Są to maksymalnie uproszczone przykłady „na dobry początek” pokazujące różne przydatne mechanizmy dostępne w silnikach oferowanych przez Drools. Wszystkie przykłady odwołują się do różnych zagadnień związanych z powitaniami (HelloWorld). Mogą stanowić dobrą podstawę do rozpoczęcia własnych Mogą stanowić dobrą podstawę do rozpoczęcia własnych eksperymentów zarówno ze środowiskiem developerskim jak i z samym zagadnieniem modelowania procesów biznesowych.

Były pisane przeze mnie w bardzo szybkim tempie, więc tym bardziej wszelkie uwagi i sugestie są mile widziane.

W dalszej części wykładu mechanizmy poznane na tych prostych przykładach zostaną wykorzystane w przykładach bardziej zaawansowanych odnoszących się do systemów bankowych –warto zatem je od razu tutaj poznać.

Page 31: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Przykłady Drools_HelloWorldszybki przegląd i szybki start

• HelloWorld01_ProcessOnly – zrobiony za pomocą kreatora zawierający proces z akcją i klasę runnera

• HelloWorld02_RuleOnly – zrobiony za pomocą kreatora zawierający reguły i klasę runnerakreatora zawierający reguły i klasę runnera

• HelloWorld03_ProcessAndRule – zrobiony na

podstawie dwóch poprzednich łączący proces z regułami i

zawierający zmienioną klasę runnera

• HelloWorld04_ProcessAndDSLRule – przykład

poprzedni dostosowany do oczekiwań analityków

biznesowych dzięki wykorzystaniu DSL (Domain-Specific

Language)

Page 32: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Przykłady Drools_HelloWorldzdarzenia i analiza statystyczna

• HelloWorld05_RulesAndEvents – prosty program

pokazujący jak korzystając z silnika reguł biznesowych

doprowadzić do wypisania powitania sterowanego

zdarzeniemzdarzeniem

• HelloWorld06_StatefullSession – nieco bardziej

złożony program ilustrujący sposób przeprowadzenia

analizy statystycznej faktów znajdujących się w bazie

wiedzy silnika reguł biznesowych

• HelloWorld07_DroolsTypeDeclaration – dość skomplikowany przykład, w którym przeprowadzana jest

analiza statystyczna dotycząca zdarzeń biznesowych

Page 33: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Przykłady Drools_HelloWorldzdarzenia na osi czasu

• HelloWorld08_? –

uzupełnić!

• HelloWorld09_? –

uzupełnić!

Page 34: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Przykłady Drools_HelloWorldarchitektura

• HelloWorld10_BusinessRulesEngine – przykład

pokazujący jak w sposób nie naiwny korzystać w aplikacji

z silnika reguł biznesowych ukrytego za interfejsem

uzupełnić!uzupełnić!

• HelloWorld11_BusinessProcessEngine – przykład

ilustrujący możliwość ukrycia przed aplikacją procesu

biznesowego za interfejsem

uzupełnić!

Page 35: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Sposób utworzenia nowego projektu

Sposób utworzenia nowego przykładu z procesem opisany w

pliku:

JBossDrools_02_ProjectCreationWizard.pdf

Page 36: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Przykłady Drools_HelloWorld

Sposób uruchomienia przykładu z procesem opisany w pliku:

JBossDrools_03_ProjectWorkflowExecution.pdf

Page 37: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Koncepcja silnika reguł biznesowych

Przykład – reguła biznesowa:

package droolsbook;

rule „basic rule”rule „basic rule”

when // condition(s) albo LHS

Account ( balanace < 100 )

then // consequence albo RHS

System.out.println(„Account balance is less then 100”);

end

Page 38: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Koncepcja silnika reguł biznesowych

Przykład c.d. – bean jako zwykła klasa Java (POJO):package droolsbook;

public class Account{

private long balance;

public long getBalance(){ return balance; }public long getBalance(){ return balance; }

public void setBalance(long balance){

this.balance = balance;

}

@Override

public boolean equals(final Object other){//…}

@Override

public int hashCode(){//…}

@Override

public String toString(){//…}

}

Page 39: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Koncepcja silnika reguł biznesowychOpis koncepcji działania na powyższym przykładzie.

Klasa klienta realizuje następujące kroki:

• Tworzy obiekt bazy wiedzy

• Umieszcza w tym obiekcie zasoby (tu: reguły biznesowe)• Umieszcza w tym obiekcie zasoby (tu: reguły biznesowe)

• Tworzy obiekt sesji (stanowej lub bezstanowej)

• Tworzy obiekt klasy Account

• Umieszcza obiekt klasy Account w obiekcie sesji

• Uruchamia reguły

Do tworzenia obiektów Drools wykorzystywany jest Builder.

Bardziej szczegółowe informacje widać w

Drools_HelloWorld.

Page 40: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Koncepcja silnika reguł biznesowych

Opis reakcji silnika Drools:

Drools próbuje dopasować każdy fakt (tu: Account)

umieszczony w sesji z bazą wiedzy do każdego warunku

reguł biznesowych umieszczonych w bazie wiedzy aby reguł biznesowych umieszczonych w bazie wiedzy aby

sprawdzić które fakty spełniają te reguły. Etap ten to tzw.

pattern matching. Jeśli dany fakt spełnia wszystkie warunki w

danej regule biznesowej, to jest wykonywana dla tego faktu

konsekwencja określona wtej regule biznesowej. Czyli

mamy funkcjonalność wyprowadzoną na zewnątrz z faktów i

przeniesioną do reguł. Innymi słowy funkcjonalnością obiektów sterujemy spoza nich.

Page 41: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Koncepcja silnika reguł biznesowych

Opis reakcji silnika Drools c.d.:

Jeśli faktów jest więcej i warunki danej reguły dotyczą więcej niż jednego faktu, to silnik reguł biznesowych

dopasowuje zestawy faktów w taki sposób, aby znaleźć dopasowuje zestawy faktów w taki sposób, aby znaleźć wszystkie zestawy faktów spełniające daną regułę (wszystkie

jej warunki jednocześnie). Następnie konsekwencja takiej

reguły jest realizowana dla każdego zestawu dopasowanego

wcześniej z sukcesem.

Page 42: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Koncepcja silnika reguł biznesowych

Kolejność wykonania:

Kolejność wykonania konsekwencji dla poszczególnych

obiektów nie jest określona – decyduje o tym silnik reguł

biznesowych (por. uwagi o wadach silników). Jednak są w

Drools mechanizmy pozwalające zapanować do pewnego Drools mechanizmy pozwalające zapanować do pewnego

stopnia nad kolejnością wykonania:

• Agenda

– Priorytety reguł (salience)

– Grupowanie reguł

• (activation-group) albo (agenda-group)

• Ruleflow czyli Workflow (ruleflow-group)

Page 43: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Reguła może zawierać wiele warunkówAccount ( balance == 200)

Customer (name == „John”)

• Reguła może deklarować zmienne (to tylko deklaracja –

podstawianiem zajmuje się silnik)podstawianiem zajmuje się silnik)$account : Account ( $type : type )

• Reguła może używać zadeklarowanej zmiennej (dla

każdego znalezionego obiektu klasy Account znajdujemy

wszystkie obiekty klasy Customer o polu account będącym

znalezionym wcześniej obiektem klasy Account)$account : Account()

Customer ( account == $account )

Page 44: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Typy natywne java i inne

– String

– Wyrażenie regularne

– Date– Date

– Boolean

– Enum

• Komentarze

– pojedyncza linia # lub //

– /* blok */

• Pakiety i importowanie

Page 45: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Zmienne globalne (deklaracja, przekazanie do sesji,

skorzystanie w regule)

• Dialekty

– Java – domyślny– Java – domyślny

– mvel – przydatny ze względu na skróconą formę zapisu

reguł

Page 46: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Operatory w warunkach reguł

– And

– Or

– Not– Not

– Exists

– Eval

– return value restriction (wywołanie metody faktu ujęte

w nawiasy)

– Inline eval

– Nested accessors

Page 47: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Operatory w warunkach reguł c.d.

– This

– Działania na kolekcjach

• Contains• Contains

• Not contains

• Member of

• Not member of

• from

Page 48: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Metody w konsekwencjach reguł

– Modify (modyfikuje fakt w ramach sesji)

– Insert (umieszcza nowy fakt w sesji)

– Retract (usuwa fakt z sesji)– Retract (usuwa fakt z sesji)

Page 49: Informatyzacja przedsi ębiorstw WYKŁADriad.usk.pk.edu.pl/~pzabawa/StaticXHTML/files/lectures/Informatyza... · Koncepcja silnika reguł biznesowych Opis reakcji silnika Drools c.d.:

Język reguł biznesowych

• Atrybuty reguł

– salience

– no-loop

– dialect– dialect