# Proces jako logika biznesowa

Zamiast stosowanego dawniej modelu, w którym przepływ sterowania i reguły biznesowe są zaszyte w kodzie (np. w formie instrukcji warunkowych, pętli czy wywołań usług), wykorzystanie procesu BPMN umożliwia przeniesienie tej odpowiedzialności na poziom zdefiniowanego jako graficzny diagram procesu.

Taki proces jest centralnym „koordynatorem” przetwarzania sprawy w systemie, który steruje tym jakie kroki należy wykonać, w jakiej kolejności, oraz jakie decyzje podejmować na podstawie danych wejściowych i wyników pośrednich. Dzięki temu można zamodelować sposób realizacji danej sprawy w przejrzysty i łatwy w utrzymaniu sposób.

Takie podejście niesie ze sobą szereg korzyści:

* **Przejrzystość i zrozumiałość** - logika procesu jest zapisana w bardziej przystępnej graficznej notacji, ułatwiając zrozumienie jego przepływu i współpracę nad jego kształtem i rozwojem.
* **Zwiększona elastyczność** - modyfikacje logiki biznesowej mogą być wprowadzane szybciej, bez konieczności zmiany kodu i ponownego wdrożenia aplikacji.
* **Lepsze monitorowanie i audytowalność** - każdy proces uruchamiany w Camundzie jest rejestrowany w historii. Można analizować zdarzenia i incydenty, co znacznie ułatwia debugowanie i analizę działania systemu.

W skład definicji procesów biznesowych wchodzą elementy umożliwiające odwzorowanie logiki biznesowej w postaci procesu, takie jak

* **User Task (Zadanie użytkownika)** - *Zadania użytkownika* służą do włączania ludzi w przebieg procesu. Mogą być przypisywane do konkretnych osób, ról lub grup użytkowników. Umożliwiają realizację takich działań jak zatwierdzenia, uzupełnienia danych, decyzje ręczne czy weryfikacja informacji.
* **Service Task (Zadanie serwisowe)** - *Service Task* umożliwia wykonanie automatycznego działania przez system, bez udziału człowieka. Może to być wywołanie zewnętrznego API, skryptu, usługi REST, SOAP lub innego komponentu technicznego.
* **Gateway (Bramki decyzyjne)** - bramki służą do sterowania przepływem procesu w zależności od spełnienia warunków logicznych. Umożliwiają modelowanie reguł biznesowych, które określają, jaka ścieżka zostanie wybrana na podstawie danych procesu.
* **Script Task (Zadanie skryptowe)** - umożliwia wykonanie prostych operacji na danych procesu (np. transformacje, wyliczenia) przy użyciu języka skryptowego (np. JavaScript, Groovy). Zalecane tylko dla prostych operacji – logika biznesowa powinna być możliwie wyniesiona do zewnętrznych komponentów.
