Lab. 1: Podstawy pracy z Activiti

Signavio Process Editor

Proszę założyć konto na platformie Signavio: 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 Signavio BPM Academic Initiative wybrać Academic Login.

www.manning.com_rademakers2_rademakers2_cover150.jpg

Activiti BPM Platform

Materiały pomocnicze do laboratorium:

Na potrzeby dzisiejszych zajęć na komputerach powinien być uruchomiony JBoss, na którym działa Activiti:

/etc/init.d/jboss [start|stop]

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

Można także korzystać z wersji serwerowej: http://192.168.1.145:8080/activiti-explorer/ui/

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.

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:

  1. My instances – do obserwowania istniejących instancji procesu,
  2. Deployed process definitions – do uruchamiania procesów wdrożonych na platformie Activiti,
  3. 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:

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:

  • 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
Po wdrożeniu, z zakładki Deployed process definitions możemy uruchomić nasz proces przyciskiem Start process. Powinien otworzyć się formularz:
Uzupełniamy formularz dowolnymi danymi i klikamy Start process.

Jeśli wszystko się powiodło, w zakładce ProcessesMy 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.

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:

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 Activiti User Guide, w jaki sposób zdefiniować odpowiednie warunki dla tej bramy.

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:

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 ISO 8601), kiedy odpalić zdarzenie, np.
<timerEventDefinition>
    <timeDate>2012-12-06T17:00:00</timeDate>
</timerEventDefinition>
  • timeDuration – ustawia okres czasu, który musi minąć aż zdarzenie zostanie wyzwolone, np. dla 3 dni:
<timerEventDefinition>
    <timeDuration>P3D</timeDuration>
</timerEventDefinition>
  • timeCycle – ustawia powtarzające się interwały czasu, by wyzwalać zdarzenie periodycznie, np. 5 powtórzeń, z których każde trwa godzinę:
<timerEventDefinition>
    <timeCycle>R5/PT1H</timeCycle>
</timerEventDefinition>

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):

W tym momencie w zakładce ManageJobs powinien pojawić się nowy Timer job. W razie potrzeby istnieje tu możliwość ręcznego wyzwolenia zdarzenia przyciskiem Execute:

Mail task

Jedno z zadań w podprocesie powinno wysyłać mail do klienta.
W pełnym procesie wcześniej należałoby pobrać dodatkowe dane do przesłania maila
np. jakich szczegółów chcielibyśmy się dowiedzieć,
natomiast u nas na razie zamarkujemy działanie tego zadania.

Nie mamy skonfigurowanego serwera poczty, ale możemy zaadresować maila na adres lokalny,
np.: student@AML-Lab-316.geist.agh.edu.pl.
Po przesłaniu maila możemy sprawdzić w terminalu poleceniem mail, czy mamy go na skrzynce.

Proszę w treści maila umieścić dane trzymane w jakiejś zmiennej instancji procesu.

pl/dydaktyka/bim/lab1_2014.txt · ostatnio zmienione: 2020/10/12 13:37 przez kkluza
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0