1 nginn Workflow engine http://nginn.googlecode.com Rafał Gwizdała
2 Nginn – do czego? Tworzenie aplikacji proceso-centrycznychLogika 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
3 Tradycyjnie, czyli obiektowoObiekty, klasy, pakiety, interfejsy Hierarchia, statyczna struktura Potrzebne, ale co ten kod robi?
4 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
5 nginn w aplikacji
6 Sieci Petriego matematyczna reprezentacja dyskretnych systemów rozproszonych (wikipedia) Pozwala symulować procesy
7 Model procesu nginn Sieć Petriego z dodatkamiWymagamy startu oraz mety Przejscia (transitions) = zadania
8 Język nginn – struktury sterująceAND–Split i AND-Join - współbieżność Oznaczenie AND - Split
9 XOR – split, XOR - join wybór jednej opcji (dokładnie jednej)
10 OR-split, OR - join wybór kilku możliwości - jednocześnie
11 Decyzja odroczona Decydujemy metodą faktów dokonanychUruchamiają się oba zadania, ale wcześniej zakończone zabiera token (anulując drugie przy okazji) Tu decyduje człowiek A tu czas - sprytne?
12 Zadania – z tego budujemyZadanie manualne – polecenie dla człowieka - lista zadań /* nginn zawiera algorytmy automatycznego przydzielania zadań odpowiednim osobom */
13 Zadania (2) Powiadomienia – email (sms)Wywolania systemow zewnetrznych – web service, XML/HTTP Skrypty – dowolny kod
14 Zadania (3) Skrzynka odbiorcza – czeka na wiadomoscPodproces – tak jak podprocedura Timer – kontrolowane opóźnienie
15 Dane w procesie Zmienne – w procesie i w zadaniuCzyli jak parametry metody – in, out, local I NIC więcej Wejściowe Wyjściowe Lokalne
16 Typy danych w nginn Wbudowane Definiowane String IntDateTime, Boolean, .... Definiowane Wyliczeniowe (enum) Rekordy
17 Przepływ danych Data Binding – do transferu danych między zadaniamiStart In Data Binding – do transferu danych między zadaniami Proces In Task 1 Out In Task 2 Out In Task 3 Out Out End
18 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
19 A co z WF-em? WF-a nie używamyZupeł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
20 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