Wykład 3

Transkrypt

Wykład 3
Informatyzacja przedsiębiorstw
WYKŁAD
dr inż. Piotr Zabawa
IBM/Rational Certified Consultant
[email protected]
wersja 0.1.0
07.10.2010
Wykład 3
Modelowanie procesów biznesowych
z wykorzystaniem BPMN
w środowisku Jboss Drools
Przykłady reguł biznesowych
Zostaną tutaj zaprezentowane niewielkie, ale za to
posiadające namacalną postać (działające
oprogramowanie), przykłady prostych reguł biznesowych
o różnych zastosowaniach:
• Walidacja danych
• Transformacja danych
• Monitorowanie danych – uzupełnić i dodać eventy
Na tle tych przykładów zaprezentowany zostanie
podstawowy sposób pracy nad developmentem reguł
biznesowych polegający na ich unit-testowaniu.
Przykład reguł biznesowych
Kontekst biznesowy zostanie dokładniej opisany przy każdej
regule. Tutaj podany zostanie fragment analitycznego
dziedzinowego modelu (Domain-Specific Model)
biznesowego dla bankowości.
Źródło przykładów
Przykłady te zostały zaczerpnięte z literatury:
• Bali M., Drools JBoss Rules 5.0. Developers Guide, Packt
Publishing 2009.
• Kod źródłowy przykładów dostępny jest ze strony
wydawnictwa:
https://www.packtpub.com/support?nid=4009
• Aktualna wersja przykładu znajdująca się pod kontrolą
wersji dostępna jest spod:
uzupełnić !!!
Jest to rozwiązanie tymczasowe – znacznie uproszczony
przykład zostanie udostępniony wkrótce.
Język reguł biznesowych - walidacja
Reguły tej kategorii mogą służyć do weryfikacji
poprawności, spójności lub kompletności danych
wymaganych na danym etapie procesu biznesowego.
Przykładem takich reguł jest walidacja danych klienta
zgłaszającego przez aplikację internetową podanie o
założenie rachunku bankowego. Aby klient został zapisany w
bazie danych systemu bankowego musi np. określić swoje
dane kontaktowe (adres e-mail). Jednak nie musi od razu
podawać swoich wszystkich danych – może je uzupełnić w
czasie kolejnej sesji z systemem bankowym. Powinien zostać
powiadomiony od razu o konieczności uzupełnienia tych
danych.
Język reguł biznesowych - walidacja
• Wymagane jest podanie adresu przez nowego klienta
– w przeciwnym razie ostrzeżenie
rule „addressRequired”
when
Customer ( address == null )
then
warning(kcontext);
end
Język reguł biznesowych - walidacja
• Wymagane jest podanie adresu przez nowego klienta
– w przeciwnym razie błąd
rule „studentAccountCustomerAgeLessThan”
when
Customer ( eval (yearsPassedSince(dateOfBirth) >= 27) )
$account : Account ( type == Account.Type.STUDENT)
then
error(kcontext, $account);
end
Język reguł biznesowych - walidacja
Implementacja i testy JUnit4 w projektach Drools Eclipse.
ValidationSample
Język reguł biznesowych transformacja
Reguły takie mogą zostać wykorzystane do konwersji danych
pomiędzy dwoma systemami korporacyjnymi, np.
bankowymi. Może to być konwersja związana z
przenoszeniem danych ze starego systemu do nowego.
Dzięki zastosowaniu reguł biznesowych możemy się
skupić na tym co a nie jak należy konwertować. Unikamy
konieczności sięgania do wewnętrznych struktur baz
danych (dla różnych wersji systemu te struktury mogą się
znacząco różnić). Jest to możliwe dzięki korzystaniu tylko
z interfejsów programowych (API) wspomnianych
systemów. Reguły można zastosować do konwersji tak
uzyskanych danych towarzyszącej ich przenoszeniu.
Język reguł biznesowych transformacja
Przykładem takiej sytuacji jest wymóg aby przejściu ze
starego systemu do nowego towarzyszyła zamiana wielu kont
każdego z klientów na jedno konto, na którym docelowo
można otwierać wiele rachunków.
Zastosowanie reguł biznesowych nie jest zapewne
najefektywniejszym z możliwych podejść. Jednak ze względu
na łatwość jego realizacji może się okazać konkurencyjne w
stosunku do efektywnego (ale tylko w czasie wykonania –
pomijalnym w stosunku do czasu implementacji) podejścia
polegającego na pisaniu skomplikowanych zapytań SQL do
baz danych o różnych strukturach z jednoczesną konwersją i
skomplikowanym przeliczaniem danych.
Język reguł biznesowych transformacja
• Wymagana jest redukcja wielu rachunków klienta do
jednego rachunku
rule „reduceLegacyAccounts”
when
$accountMap1 : Map( this[„_type_”] == „Account” )
$accountMap2 : Map( this[„_type_”] == „Account”,
eval ( $accountMap1 != $accountMap2),
this[„customer_id”] == $accountMap1[„customer_id”],
this[„currency”] == $accountMap1[„currency”] )
then
modify($accountMap1){
put(„balance”, (
(BigDecimal)$accountMap1.get(„balance”)).add(
(BigDecimal)$accountMap2.get(„balance”)) )
}
retract( $accountMap2 );
end
Język reguł biznesowych transformacja
Implementacja i testy JUnit4 w projektach Drools Eclipse.
TransformationSample

Podobne dokumenty