Informatyzacja przedsiębiorstw WYKŁAD

Podobne dokumenty
Informatyzacja przedsiębiorstw WYKŁAD

Java Developers Day. Silniki reguł biznesowych

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Informatyzacja przedsiębiorstw

Modelowanie procesów biznesowych, przepływu pracy i wdrażanie aplikacji w oparciu o Jboss jbpm lub Activiti

Modelowanie procesów biznesowych, przepływu pracy oraz reguł biznesowych na przykładzie Drools i jbpm lub Activiti

Informatyzacja przedsiębiorstw WYKŁAD

KOTLIN. Język programowania dla Androida

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Diagramy czynności Na podstawie UML 2.0 Tutorial

Programowanie obiektowe

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Analiza i projektowanie aplikacji Java

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Materiały do laboratorium MS ACCESS BASIC

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Procesy biznesowe w praktyce. Przykłady użycia z wykorzystaniem jbpm 4.4

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Zaawansowane aplikacje internetowe

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Wzorce logiki dziedziny

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Informatyzacja przedsiębiorstw WYKŁAD

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Zaawansowane programowanie obiektowe - wykład 5

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PL/SQL. Zaawansowane tematy PL/SQL

Platformy Programistyczne Podstawy języka Java

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Enterprise JavaBeans

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Terminologia BPMN 2.0 Wersja 2.0 opracowana w AION

Strumieniowe bazy danych. Piotr i Paweł

Rozdział 4 KLASY, OBIEKTY, METODY

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Wykład 2: Podstawy Języka

Ćwiczenie 1. Modelowanie prostego procesu

Ćwiczenie 1. Przygotowanie środowiska JAVA

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie obiektowe

Wprowadzenie do projektu QualitySpy

Wykład 7: Pakiety i Interfejsy

Język UML w modelowaniu systemów informatycznych

Właściwości i metody obiektu Comment Właściwości

Programowanie komponentowe 5

Programowanie Obiektowe Ćwiczenie 4

Systemy Rozproszone. Spis treści. Temat projektu: Regułowy system analizujacy logi. autorzy: Rafał Sadłowski, Sebastian Falkus, Michał Różycki

Tworzenie raportów XML Publisher przy użyciu Data Templates

Graficzna notacja procesów biznesowych BPMN. Porównanie z notacja UML. Jakub Morkis, Piotr Chmielewski

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Aplikacje RMI Lab4

Wykład 8: klasy cz. 4

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie obiektowe

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Robert Barański, AGH, KMIW State Machine v1.0. Maszyna stanów (State Machine)

Podstawy programowania III WYKŁAD 4

Programowanie w CLIPS

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

HP Service Anywhere Uproszczenie zarządzania usługami IT

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

PHP 5 język obiektowy

Jak powstaje model biznesowy? Co to jest? Modelowanie biznesowe. Model biznesowy. Jak powstaje model biznesowy? Jak firma generuje przychody?

Dokumentacja do API Javy.

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Laboratorium 8 Diagramy aktywności

Technologie obiektowe

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Diagram stanów Laboratorium 9

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

15. Funkcje i procedury składowane PL/SQL


Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Wykład 1 Inżynieria Oprogramowania

Współbieżność w środowisku Java

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Język ludzki kod maszynowy

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

EXSO-CORE - specyfikacja

Modelowanie i Programowanie Obiektowe

Aplikacje w środowisku Java

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Serwery aplikacji. dr Radosław Matusik. radmat

C++ Przeładowanie operatorów i wzorce w klasach

Transkrypt:

Informatyzacja przedsiębiorstw WYKŁAD dr inż. Piotr Zabawa IBM/Rational Certified Consultant pzabawa@pk.edu.pl wersja 0.1.0 07.10.2010

Wykład 2 Modelowanie procesów biznesowych z wykorzystaniem BPMN w środowisku Jboss Drools

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.

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.

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.

Gateways Diverge (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

Tasks Rule obejmuje grupę reguł biznesowych do uruchomienia w ramach tego tasku. 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.

Service Tasks Log - wbudowana usługa logowania do pliku. Email wbudowana usługa powiadamiania e- mail.

Events Timer zdarzenie wyzwalane timerem. Error zdarzenie wyzwalane błędem. Message zdarzenie wyzwalane komunikatem.

Sub-Process Sub-Process służy modelowaniu podprocesów osadzanych w ramach procesu. Podproces ma 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.

Multiple Instances Multiple Instances wielokrotne uruchomienie podprocesu zawartego w tym kontenerze.

Zaawansowany przykład modelu

Zaawansowany przykład modelu

Zaawansowany przykład modelu

Wady tradycyjnego podejścia Wady 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??? } 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?

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 //

Uzasadnienie dla reguł biznesowych Zalety Wady Kiedy nie stosować

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

Reguły biznesowe - zalety Łatwość korzystania z jednolitego mechanizmu przy dodawaniu zobowiązań biznesowych, np. audyt, raportowanie, logowanie zdarzeń Ł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)

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 oprogramowania Łatwość osadzania Drools w aplikacjach

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/procesie Trudność śledzenia reguł bez dogłębnej znajomości tego jak działa silnik

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ż proces)

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

Drools Jest 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

Instalacja środowisk Na kolejnych slajdach przedstawiono sposób instalacji całego uniwersalnego środowiska deweloperskiego i wykonawczego. Jednak do samego działania w Drools wystarczy wykonać jedynie następujące kroki: Instalacja uniwersalnego środowiska developerskiego Konfiguracja środowiska developerskiego Drools

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

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

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

Opisana w pliku: Konfiguracja środowiska developerskiego Drools JBossDrools_01_RuntimeSetting.pdf

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 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ć.

Przykłady Drools_HelloWorld szybki 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ę 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)

Przykłady Drools_HelloWorld zdarzenia i analiza statystyczna HelloWorld05_RulesAndEvents prosty program pokazujący jak korzystając z silnika reguł biznesowych doprowadzić do wypisania powitania sterowanego zdarzeniem 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

Przykłady Drools_HelloWorld zdarzenia na osi czasu HelloWorld08_? uzupełnić! HelloWorld09_? uzupełnić!

Przykłady Drools_HelloWorld architektura HelloWorld10_BusinessRulesEngine przykład pokazujący jak w sposób nie naiwny korzystać w aplikacji z silnika reguł biznesowych ukrytego za interfejsem uzupełnić! HelloWorld11_BusinessProcessEngine przykład ilustrujący możliwość ukrycia przed aplikacją procesu biznesowego za interfejsem uzupełnić!

Sposób utworzenia nowego projektu Sposób utworzenia nowego przykładu z procesem opisany w pliku: JBossDrools_02_ProjectCreationWizard.pdf

Przykłady Drools_HelloWorld Sposób uruchomienia przykładu z procesem opisany w pliku: JBossDrools_03_ProjectWorkflowExecution.pdf

Koncepcja silnika reguł biznesowych Przykład reguła biznesowa: package droolsbook; rule basic rule end when // condition(s) albo LHS Account ( balanace < 100 ) then // consequence albo RHS System.out.println( Account balance is less then 100 );

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 void setbalance(long balance){ } this.balance = balance; @Override public boolean equals(final Object other){// } @Override public int hashcode(){// } @Override public String tostring(){// }

Koncepcja silnika reguł biznesowych Opis 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) 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.

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 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.

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źć 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.

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 stopnia nad kolejnością wykonania: Agenda Priorytety reguł (salience) Grupowanie reguł (activation-group) albo (agenda-group) Ruleflow czyli Workflow (ruleflow-group)

Język reguł biznesowych Reguła może zawierać wiele warunków Account ( balance == 200) Customer (name == John ) Reguła może deklarować zmienne (to tylko deklaracja 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 )

Język reguł biznesowych Typy natywne java i inne String Wyrażenie regularne Date Boolean Enum Komentarze pojedyncza linia # lub // /* blok */ Pakiety i importowanie

Język reguł biznesowych Zmienne globalne (deklaracja, przekazanie do sesji, skorzystanie w regule) Dialekty Java domyślny mvel przydatny ze względu na skróconą formę zapisu reguł

Język reguł biznesowych Operatory w warunkach reguł And Or Not Exists Eval return value restriction (wywołanie metody faktu ujęte w nawiasy) Inline eval Nested accessors

Język reguł biznesowych Operatory w warunkach reguł c.d. This Działania na kolekcjach Contains Not contains Member of Not member of from

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)

Język reguł biznesowych Atrybuty reguł salience no-loop dialect