Osoby, które dotychczas nie rozbudowały modelu o ten element, proszone są o jego dodanie i konfigurację zgodnie z opisem z lab 1.
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.
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 certyfikatyformalExperience
- Firma posiada wystarczające doświadczenieformalConflicts
- 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.
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:
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.