Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:bim:lab3 [2013/11/04 13:05] kkluza |
pl:dydaktyka:bim:lab3 [2019/06/27 15:50] (aktualna) |
====== Lab 3: Rozbudowa modelu BPMN ====== | ====== Lab 3: Rozbudowa modelu BPMN ====== |
| |
| Proszę rozbudować model do postaci jak na poniższym diagramie: |
| |
{{:pl:dydaktyka:bim:lab3:process8-eclipse-example.png|}} | {{:pl:dydaktyka:bim:lab3:process8-eclipse-example.png|}} |
| |
| ===== Zaawansowane elementy ===== |
| |
| ==== Timer Boundary Event ==== |
| |
| Osoby, które dotychczas nie rozbudowały modelu o ten element, proszone są o jego dodanie i konfigurację zgodnie z opisem z [[pl:dydaktyka:bim:lab1#timer_boundary_event|lab 1]]. |
| |
| ==== 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. |
| |
| ==== Script task ==== |
| |
| Proszę rozbudować model do postaci jak na poniższym diagramie:\\ |
| |
| {{ :pl:dydaktyka:bim:lab3:process8-eclipse-example.png |}} |
| |
| Dla podanych właściwości przygotować formularz w zadaniu //Set formal conditions// (typ boolean): |
| * ''formalCertificates'' - Firma posiada wymagane certyfikaty |
| * ''formalExperience'' - Firma posiada wystarczające doświadczenie |
| * ''formalConflicts'' - Oferta powoduje wystąpienie konfliktu z innymi zamówieniami |
| |
| W zależności od potrzeb można ustawić wartości domyślne w odpowiednich polach przy użyciu atrybutu ''default''. |
| |
| W zadaniu //Check formal conditions// należy wybrać język ''groovy'', a następnie ustawić odpowiednią wartość (''negative'' albo ''positive'') zmiennej ''resOffer''. Aby w groovym zdefiniować zmienną, a następnie wyeksportować ją do naszego procesu należy użyć następującej składni: |
| <code groovy> |
| def resOffer = "negative" |
| /* TODO: sprawdz warunki i w razie |
| potrzeby przestaw resOffer na positive */ |
| execution.setVariable("result", resOffer) |
| </code> |
| |
| Po uruchomieniu procesu proszę sprawdzić, czy odpowiednia zmienna ''result'' została utworzona. |
| Zmienną można również wyświetlić przy okazji jakiegoś zadania typu //UserTask// dodając w XMLu tag: |
| <code xml><documentation>Formal condition check result is: ${result}</documentation></code> |
| |
| Elementy języka [[wp>Groovy (programming language)]] są wspierane zgodnie z jego składnią. Ponieważ plugin Activiti do eclipse nie wspiera walidacji składni, można próbować sprawdzać działanie w [[http://groovyconsole.appspot.com/|konsoli online]]. |
| |
| {{:pl:dydaktyka:bim:lab3:eclipse2-designer-gateway.png?200 |}} |
| |
| ** Zakończenie procesu przy negatywnym rezultacie ** |
| |
| Jeśli rezultat formalnego spełnienia warunków jest negatywny, proces powinien się zakończyć. |
| Proszę dodać bramę, która w zależności od rezultatu posteruje przepływem, by odpowiednio zakończyć proces. |
| |
| ==== Multi instance task ==== |
| |
| ** Zatwierdzenie oferty przez członków zarządu ** |
| |
| Aby sensowniej zakończyć proces zamodelujemy zatwierdzenie oferty przez członków zarządu. |
| |
| {{ :pl:dydaktyka:bim:lab3:explorer2-execution-multiinstance.png|}} |
| W tym celu zadanie ''Approve offer'' zdefiniujemy jako wieloinstancyjne. \\ |
| W eclipsie mamy do dyspozycji w zakładce ''Multi instance'' następujące parametry: |
| * **Sequential** -- sekwencyjne (true) lub równoległe (false) wykonanie, |
| * **Loop cardinality** -- liczba instancji (sprawdzana tylko raz, przy utworzeniu zadania, |
| * **Collection** -- zmienna kolekcji (lista użytkowników, którzy mają wykonać zadanie), |
| * **Element variable** -- zmienna przechowująca poszczególnych użytkowników, \\ w celu przypisania ich do zadania, |
| * **Completion condition** -- warunek ukończenia zadania. |
| |
| Sprawdź w [[http://www.activiti.org/userguide/index.html|Activiti User Guide]], w jaki sposób zdefiniować odpowiedni warunek ukończenia zadania. |
| Przyjmijmy, że firma uznaje decyzję zarządu za podjętą, jeśli podjęło ją co najmniej 2ch z 3ch członków zarządu. Ponieważ nie definiowaliśmy jeszcze zmiennej ''board'', proszę dołożyć zmienną ''board'' będącą listą członków zarządu (złożoną z istniejących użytkowników Activiti). |
| |
| Proszę uruchomić proces i przetestować jego działanie dla różnych scenariuszy. |