Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:bim:lab1 [2013/10/14 15:30] kkluza [Rozbudowa modelu] |
— (aktualna) |
====== Lab. 1: Podstawy pracy z Activiti ====== | |
| |
===== Activiti BPM Platform ===== | |
| |
Na potrzeby dzisiejszych zajęć na komputerach powinien być uruchomiony JBoss, na którym działa Activiti. | |
| |
Proszę uruchomić w przeglądarce aplikację Activiti Explorer: http://localhost:8080/activiti-explorer, | |
a następnie zalogować się na konto: | |
login: kermit | |
hasło: kermit | |
| |
Po zalogowaniu, na górnym pasku powinno widnieć menu złożone z 4 ikon. | |
Służą one do administracji odpowiednio: | |
* //Tasks// -- zadaniami, | |
* //Processes// -- procesami, | |
* //Reports// -- raportami, | |
* //Manage// -- innymi kwestiami, np. użytkownikami, grupami, czy zarządzaniem bazą danych lub wdrożeniami procesów. | |
| |
==== Założenie kont ==== | |
| |
W zakładce Groups (menu Manage) obejrzyj istniejące grupy użytkowników. | |
Jako użytkownika administratora będziemy póki co używać użytkownika ''kermit'', natomiast przyda nam się użytkownik nie będący administratorem. | |
| |
Utwórz nowego użytkownika. Pamiętaj, aby nadać unikalny identyfikator. Przypisz swojego użytkownika do jakichś grup, ale nie grupy Admin. | |
| |
==== Stworzenie nowego modelu procesu ==== | |
| |
Aby zapoznać się z działaniem aplikacji przygotujemy bardzo uproszczony model procesu ofertowania. | |
| |
Z menu proszę wybrać zakładkę **Processes**. Powinny pojawić się 3 zakładki: | |
- //My instances// -- do obserwowania istniejących instancji procesu, | |
- //Deployed process definitions// -- do uruchamiania procesów wdrożonych na platformie Activiti, | |
- //Model workspace// -- do tworzenia nowych modeli oraz wdrażania lub edycji istniejących modeli procesów. | |
| |
W zakładce //Model workspace// klikamy przycisk //New model// i tworzymy nowy model procesu przy użyciu Activiti Modelera. Proszę nadać swojemu modelowi nazwę oraz opis. | |
| |
W otwartym oknie aplikacji **Activiti Modeler** proszę ustawić atrybuty procesu (z prawej strony okna). | |
Istotnymi elementami są tutaj identyfikator procesu (//Process identifier//) i nazwa procesu (//Name//), | |
dzięki którym odróżnimy nasz proces od innych naszych procesów czy procesów innych użytkowników. | |
Proszę uzupełnić również pole autora procesu (//Process author//). | |
| |
==== Modelowanie prostego procesu ==== | |
| |
Przeciągając z lewego menu element //Start event// rozpoczniemy modelowanie fragmentu docelowego procesu. | |
Na początek zamodelujemy bardzo uproszczony proces, jak poniżej:\\ | |
{{ :pl:dydaktyka:bim:lab1:proces1-diagram.png |}} | |
| |
Tak jak w przypadku procesu, tak samo dla elementów BPMNa po prawej stronie ustawiamy atrybuty. | |
| |
* Dla elementu //Start event//: | |
* //Documentation//: Start proceeding with an offer. | |
* //Initiator//: initiator (w tej zmiennej będzie trzymany użytkownik, który zainicjował proces) | |
* //Name//: Offer received | |
* //Form properties// - klikamy na ... i w nowym oknie ustawiamy wg poniższego screenshotu:\\ | |
{{ :pl:dydaktyka:bim:lab1::form-properties.png |}} | |
| |
* Dla zadania //Specify offer//: | |
* //Documentation//: Please add available specification for an offer as attachments. | |
* //Assignments//: mamy 3 możliwości\\ | |
* ''assignee'' -- przypisać zadanie konkretnemu użytkownikowi, | |
* ''candidateUsers'' -- przypisać zadanie tak, by dowolny z kilku użytkowników mógł je wykonać, | |
* ''candidateGroups'' -- przypisać zadanie tak, by dowolny użytkownik należący do przypisanej grupy mógł je wykonać.\\ | |
W naszym wypadku ustawiamy tylko zmiennej ''assignee'' wartość ''${initiator}'' -- oznacza to, że jako wykonawcę zadania wskazujemy osobę, która uruchomiła proces. | |
| |
Ponadto dla tego zadania ustawiamy również //Form properties//: | |
* //Specifications details// (id: ''specDetails'') - poziom szczegółowości specyfikacji przedmiotu zamówienia (póki co ustawiamy jako boolean), w dalszej części będziemy chcieli tę zmienną przerobić na typ enum (accurate, sufficient, insufficient). | |
* //Person responsible// (id: ''responsible'') - osoba przyporządkowana do analizy formalnej wniosku (odpowiadająca za przeprowadzenie analizy); tutaj nastąpi przyporządkowanie takiej osoby i przypisanie jej do zmiennej. | |
| |
Póki co do przetestowania takiego prostego procesu rezygnujemy z dalszych elementów procesu. | |
Tymczasem zamarkujmy jedno z końcowych zadań: //Approve offer//, w którym ustawiamy jedynie wykonawcę -- osobę, która została przyporządkowana do przeprowadzenia analizy formalnej (proszę użyć identyfikatora zdefiniowanej zmiennej). | |
| |
==== Uruchomienie prostego procesu ==== | |
| |
Zapisujemy model i wyłączamy **Activiti Modeler**. | |
Przechodzimy do **Activiti Explorera**. | |
W zakładce //Model workspace// wybieramy nasz proces z menu | |
i z listy //Model action// wybieramy **Deploy**. | |
| |
Powinno przenieść nas do zakładki //Deployments// (w **Manage**), gdzie wybieramy nasz process (klikając na jego nazwę) w sekcji //Process Definitions//\\ | |
{{ :pl:dydaktyka:bim:lab1::proces1-deploy.png |}} | |
Po wdrożeniu, z zakładki //Deployed process definitions// możemy uruchomić nasz proces przyciskiem **Start process**. Powinien otworzyć się formularz:\\ | |
{{ :pl:dydaktyka:bim:lab1:proces1-run1-form.png |}} | |
Uzupełniamy formularz dowolnymi danymi i klikamy **Start process**. | |
| |
Jeśli wszystko się powiodło, w zakładce **Processes** -> //My instances// powinniśmy widzieć instancję naszego procesu, | |
| |
Ponieważ pierwsze zadanie zostało przypisane do nas (użytkownika, który uruchomił proces), klikamy ikonę **Tasks** i przechodzimy zakładki //Inbox//, gdzie powinno czekać na nas zadanie //Specify offer//. | |
Uzupełniamy pole //Responsible// nazwą innego __istniejącego__ użytkownika (np. ''fozzie'' lub zdefiniowanego wcześniej użytkownika), możemy również zaznaczyć checkbox //Specifications details//. Następnie klikamy **Complete task**. | |
| |
Teraz klikamy ikonę **Processes** i przechodzimy do zakładki //My instances//, aby obejrzeć diagram, listę zadań i zmienne naszego procesu. | |
Ponieważ zadanie //Approve offer// czeka na innego użytkownika, logujemy się na konto podanego użytkownika (jeśli był to użytkownik ''fozzie'', jego hasło to: ''fozzie''), po czym kończymy zadanie //Approve offer//. | |
Wracamy na nasze konto i sprawdzamy, czy w zakładce //My instances// zniknął nasz proces. | |
| |
Historyczne dane naszego procesu są zapisane w bazie danych, której szybki podgląd mamy dostępny w zakładce //Database// (po kliknięciu w ikonę **Manage**). Proszę odszukać tabelę ''ACT_HI_PROCINST'' i znaleźć tam swój proces. | |
Ponieważ w laboratorium nasza instalacja Activiti z Activiti Modelerem nie ma skonfigurowanego trwałego zapisu modeli, zapiszemy nasz model u siebie na dysku. W tym celu z menu //Deployments// wybieramy //Show all// i odszukujemy nasz proces. Proszę zapisać na dysku plik swojego procesu (plik z rozszerzeniem **.bpmn20.xml**) i obejrzeć jego składnię. Zwróć uwagę na atrybuty tagu ''process'', a także dodatkowe atrybuty innych elementów procesu używane typowo przez Activiti. | |
| |
:!: DO SPRAWOZDANIA: | |
* Model procesu. | |
* Ew. napotkane problemy/błędy. | |
| |
==== Rozbudowa modelu ==== | |
| |
Wracamy do zakładki //Model workspace//, by rozbudować nasz model o bramę. | |
W zależności od poziom szczegółowości specyfikacji oferty, w przypadku, gdy jest ona niewystarczająco szczegółowa, będziemy chcieli prosić oferent o przesłanie dodatkowych informacji. | |
Aby rozbudować nasz model wybieramy odpowiedni model, po czym klikamy //Edit model//. | |
| |
Proszę rozbudować model do postaci jak na poniższym diagramie:\\ | |
{{:pl:dydaktyka:bim:lab1:process3-diagram.png?800|}} | |
| |
Istotnym elementem modelu jest użycie odpowiednich warunków na przepływach po bramie XOR (w zależności od wartości zmiennej ''specDetails''). | |
Sprawdź w [[http://www.activiti.org/userguide/index.html|Activiti User Guide]], w jaki sposób zdefiniować odpowiednie warunki dla tej bramy. | |
| |
| |
:!: DO SPRAWOZDANIA: | |
* Model procesu. | |
* Ew. napotkane problemy/błędy. | |
===== Testowanie działania poszczególnych bram ===== | |
| |
Umiejąc już modelować i uruchamiać modele procesów, proszę zamodelować dowolne proste procesy wykorzystujące poniżej zaprezentowaną konstrukcje. | |
| |
{{:pl:dydaktyka:bim:lab1:model-3zad-co.png|}} | |
| |
W powyższym modelu proszę w miejscu drugiej bramy wstawić: | |
- Bramę XOR (czyli nie zmieniamy modelu, tylko w bramie dodajemy maker X). | |
- Bramę OR. | |
- Bramę AND. | |
| |
**Uwaga**: należy wymyślić 3 proste procesy, które wykorzystają konstrukcje zgodnie z ich znaczeniem! | |
| |
Proszę uruchomić zamodelowane procesy, a następnie zaobserwować, w jaki sposób zachowują się te modele w czasie ich wykonywania przez maszynę procesową. Proszę zanotować odpowiednie wnioski w sprawozdaniu. | |
| |
Który model zachowuje się w sposób analogiczny do poniższego i dlaczego? | |
| |
{{:pl:dydaktyka:bim:lab1:model-3zad.png|}} | |
| |
Proszę również przetestować działanie następującego modelu: | |
{{:pl:dydaktyka:bim:lab1:model-4zador.png|}} | |
| |
DO SPRAWOZDANIA: | |
* Opisać krótko wymyślone procesy, zaprezentować modele. | |
* Zanotować wnioski z uruchomienia modeli. | |
| |
| |
| |
| |
| |
===== Dalsza rozbudowa modelu ===== | |
| |
=== Timer Boundary Event === | |
| |
Nasz podproces składa się z dwóch zadań, polegających na tym, że kontaktujemy się z klientem mailowo oraz dodatkowo dzwonimy do niego, by poinformować o przesłanym mailu. W bardzo szczegółowej wersji powinniśmy jeszcze mieć odpowiednie zadanie z oczekiwaniem na odpowiedź od klienta -- dla uproszczenia przyjmijmy, że gdy klient uszczegółowił wystarczająco przez telefon informacje, to użytkownik kończy zadanie "Call customer", w innym wypadku nie kończy tego zadania do czasu, aż nie uzyska wystarczających informacji. | |
| |
W standardowym przypadku, gdy minie deadline na składanie ofert, podproces powinien automatycznie zakończyć się i zakończyć cały proces. W tym celu rozbudujemy proces przy użyciu ''Timer Boundary Event'': | |
| |
{{ :pl:dydaktyka:bim:lab1:process5-eclipse-example.png |}} | |
| |
Element ''Timer Boundary Event'' ma następujące atrybuty: | |
* ''cancelActiviti'' -- w naszym przypadku należy ustawić **''true''**, by podproces został przerwany w momnecie wywołania zdarzenia, | |
* ''timeDate'' -- ustawia konkretną datę (w formacie [[wp>ISO 8601]]), kiedy odpalić zdarzenie, np. | |
<code xml> | |
<timerEventDefinition> | |
<timeDate>2012-12-06T17:00:00</timeDate> | |
</timerEventDefinition> | |
</code> | |
* ''timeDuration'' -- ustawia okres czasu, który musi minąć aż zdarzenie zostanie wyzwolone, np. dla 3 dni: | |
<code xml> | |
<timerEventDefinition> | |
<timeDuration>P3D</timeDuration> | |
</timerEventDefinition> | |
</code> | |
* ''timeCycle'' -- ustawia powtarzające się interwały czasu, by wyzwalać zdarzenie periodycznie, np. 5 powtórzeń, z których każde trwa godzinę: | |
<code xml> | |
<timerEventDefinition> | |
<timeCycle>R5/PT1H</timeCycle> | |
</timerEventDefinition> | |
</code> | |
| |
Aby móc przetestować proces i nie czekać zbyt długo na efekty proponuję ustawić ''timeDuration'' na 2 minuty. | |
| |
Proszę przetestować działanie swojego modelu, obejrzeć diagram instancji procesu w czasie oczekiwania (powinien wyglądać podobnie do modelu widocznego na poniższym diagramie): | |
{{ :pl:dydaktyka:bim:lab1:process5-run-example.png |}} | |
| |
W tym momencie w zakładce **Manage** -> **Jobs** powinien pojawić się nowy ''Timer job''. W razie potrzeby istnieje tu możliwość ręcznego wyzwolenia zdarzenia przyciskiem **Execute**: | |
{{ :pl:dydaktyka:bim:lab1:timer-job.png |}} | |
| |
:!: DO SPRAWOZDANIA: | |
* Model procesu. | |
* Ew. napotkane problemy/błędy. | |
| |
===== Signavio Process Editor ===== | |
| |
Proszę założyć konto na platformie Signavio: [[http://academic.signavio.com/p/register?link=0b77d60921ec4ab2ac93286867a9af7d|Registration for the Signavio BPM Academic Initiative]] | |
zaznaczając opcję:\\ //I agree that anonymized versions of all models I create using this platform can be made available for research purposes.// | |
| |
Aby zalogować się do edytora należy na stronie [[http://www.signavio.com/bpm-academic-initiative/|Signavio BPM Academic Initiative]] wybrać **Academic Login**. | |
| |
| |
| |