Lab 3: Rozbudowa modelu BPMN
Proszę rozbudować model do postaci jak na poniższym diagramie:
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 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:
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:
def resOffer = "negative"
/* TODO: sprawdz warunki i w razie
potrzeby przestaw resOffer na positive */
execution.setVariable("result", resOffer)
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:
<documentation>Formal condition check result is: ${result}</documentation>
Elementy języka 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 konsoli online.
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.
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 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.