nginn Workflow engine http://nginn.googlecode.com Rafał Gwizdała rafal.gwizdala@gmail.com
Nginn – do czego? Tworzenie aplikacji proceso-centrycznych Logika biznesowa oparta o procesy Proces -> szczegolowy plan realizacji okreslonego celu ----- obejmuje ludzi, systemy informatyczne, dokumenty i inne dane Nginn daje jezyk opisu procesow Oraz silnik ktory te procesy wykonuje
Tradycyjnie, czyli obiektowo Obiekty, klasy, pakiety, interfejsy Hierarchia, statyczna struktura Potrzebne, ale co ten kod robi?
Proceso-centrycznie* Procesy – serce (mózg?) aplikacji Reszta aplikacji– to usługi Sterowanie – poprzez proces Proces implementuje i dokumentuje logikę aplikacji Uwaga 1: nie zawsze to ma sens Uwaga 2: zwykle ma * Niech ktos podpowie lepsza nazwe
nginn w aplikacji
Sieci Petriego matematyczna reprezentacja dyskretnych systemów rozproszonych (wikipedia) Pozwala symulować procesy
Model procesu nginn Sieć Petriego z dodatkami Wymagamy startu oraz mety Przejscia (transitions) = zadania
Język nginn – struktury sterujące AND–Split i AND-Join - współbieżność Oznaczenie AND - Split
XOR – split, XOR - join wybór jednej opcji (dokładnie jednej)
OR-split, OR - join wybór kilku możliwości - jednocześnie
Decyzja odroczona Decydujemy metodą faktów dokonanych Uruchamiają się oba zadania, ale wcześniej zakończone zabiera token (anulując drugie przy okazji) Tu decyduje człowiek A tu czas - sprytne?
Zadania – z tego budujemy Zadanie manualne – polecenie dla człowieka - lista zadań /* nginn zawiera algorytmy automatycznego przydzielania zadań odpowiednim osobom */
Zadania (2) Powiadomienia – email (sms) Wywolania systemow zewnetrznych – web service, XML/HTTP Skrypty – dowolny kod
Zadania (3) Skrzynka odbiorcza – czeka na wiadomosc Podproces – tak jak podprocedura Timer – kontrolowane opóźnienie
Dane w procesie Zmienne – w procesie i w zadaniu Czyli jak parametry metody – in, out, local I NIC więcej Wejściowe Wyjściowe Lokalne
Typy danych w nginn Wbudowane Definiowane String Int DateTime, Boolean, .... Definiowane Wyliczeniowe (enum) Rekordy
Przepływ danych Data Binding – do transferu danych między zadaniami Start In Data Binding – do transferu danych między zadaniami Proces In Task 1 Out In Task 2 Out In Task 3 Out Out End
Ale co ja z tego będę miał? Elastyczność – do obsługi pokręconych wymagań klientów Spójny język opisu logiki Odpornosc na awarie: store & fwd, transakcje rozproszone – dane nie wsiąkną Łatwość raportowania i analizy procesów Satysfakcja z wdrożenia BPM - bezcenne
A co z WF-em? WF-a nie używamy Zupełnie inny model procesu oraz filozofia nginn – pelny engine WF – komponenty dla programistow Nginn – luźno typowany, tekstowo-skryptowy, interpretowany WF – kompilowany, silnie typowany, binarny
Dzisiejszą prezentację sponsorują .Net 3.5 YAWL – koncepcja języka BPM Sooda – dostep do danych Nlog - logowanie Spring.Net – kontener IOC Script.Net – interpreter skryptu SQL Server ASP.Net – interfejs HTTP