Temat: SOA, a może jednak inaczej...
Andrzej Góralczyk:
Jarosławie, czy nie jest to jakaś droga wyjścia z tego, co uważam za błąd w opisie procesów w konwencji BPML, polegający na pojmowaniu zdarzeń jako składnika procesów?
Hm... moim zdaniem to nie tyle błąd co pewien przyjęty formalizm. Modelowanie, jeśli traktujemy model jako jakiś kompletny system opisu, to proces formalny (w przeciwnym wypadku diagram jest tylko "jakimś" opisem).
Uznawanie zdarzeń za składnik procesu ma swoje źródło w uznaniu (definicja procesu: proces ma produkt), że praca z dokumentem może tworzyć decyzje - zmianę stanu dokumentu czyli jego status (z "napisany" na "zatwierdzony"). Zdarzenie w prostszych notacjach jest "zastępowane" np. "odnotowaniem" (być może w dzienniku korespondencji) nadejścia korespondencji.
W Notacji BPMN zdarzenie jako inny byt od procesu zostało wprowadzone z następującego powodu: (1) proces trwa w czasie, zdarzenie zaś nie trwa w czasie (to jest "moment" zaistnienia czego), (2) zdarzenia nie mają wykonawcy ale mogą być skutkiem procesu, jego produktem (a proces musi mieć wykonawcę). Typowym przykładem zdarzenia są: "stan zapasu spadł poniżej ..., lub "jak wybije godzina ... to...".
Owszem można nie używać pojęcia zdarzenie w modelach procesów, jednak wtedy wtedy pewne elementy semantyki będą albo niemożliwe do zamodelowania albo model będzie nieco "fałszywy" w rozumieniu nie będzie zawierał "znaczników czasu.
Przypomnę, że mój zarzut opieram na tym, iż proces to processing czyli przetwarzanie (materiału, dokumentu, "sprawy do załatwienia" i innego "tworzywa"). Natomiast zdarzenia niczego nie przetwarzają, nie dotyczą bezpośrednio tworzywa - zdarzenia należą nie do warstwy procesu, lecz do warstwy sterowania procesem.
To prawda, proces ze swej natury przetwarza, jednak model procesów poza nimi samymi zawiera (w zasadzie musi dla oddania rzeczywistości) kontekst, w szczególności dokumentu - na mapach procesów umieszczamy "to co przetwarzane i skutki tego przetwarzania". Tak więc dokument także nie jest procesem ale umieszczamy je na mapach procesów.
Są metody modelowania procesów polegające na umieszczaniu na diagramach wyłącznie "pracy" i w wielu przypadkach taki model wystarczy. Rzecz w tym, że implementacja przepływu pracy w jakimkolwiek systemie IT wymaga dwóch dodatkowych elementów": dane przetwarzane i tak zwane "wyzwalacze". Pierwsze to dokumenty drugie to właśnie zdarzenia. Faktycznie zdarzenia sterują procesem jednak np. notacja BPMN sama z siebie (bo "zdarzeń można nie używać na modelach) może (nie ma obowiązku) pokazać na jednym diagramie nie tylko sam proces ale także jego sterowanie oraz przepływ danych.
Syntaktyka (składnia) BPMN dopuszcza użycie wyłącznie czynności i procesów na diagramach, jednak często proces pozbawiony "sterowania i danych" traci kontekst.
To tyle na uzasadnienie mojego sprzeciwu wobec traktowaniu zdarzeń jako składnika procesów (proces to nie jest bieg zdarzeń, lecz operacji).
Wydaje mi się, że to wyłącznie kwestia tego jakiej definicji użyjemy jako kontekstu modelowania. Można użyć tej - chyba - najprostszej: proces to czynność lub logicznie powiązany ciąg czynności przetwarzający stan wejścia w stan wyjścia (w kategoriach biznesowych należy dodać: tworzący wartość dodaną).
W takim przypadku pozostaje uznać np. zdarzenie "stan gwoździ w magazynie spadł poniżej poziomu minimalnego" za stan wejściowy "procesu uzupełniania stanów magazynowych" kończącego się protokołem przyjęcia na magazyn tychże gwoździ. Owszem można przejść ze zdarzeń na dokumenty (zamówienie itp.) jednak coraz częściej pewnych "zdarzeń" nie formalizujemy dokumentem jednak obsługujemy je (zresztą fakty te i tak są zapisywane w systemach ;)).
Swego czasu stosowałem własną notację, która wymagała zawsze jakiegoś dokumentu na wejściu i wyjściu procesu jednak okazywało się często zbyt dużym uproszczeniem.
No i to co tu napisałeś i co mówi ów mówca (nie dosłuchałem do końca, za długie) wygląda mi na to, że zdarzenia wreszcie potraktowano jako warstwę sterowania. Czy tak właśnie postąpiłeś w projekcie procesów sterowanych zdarzeniami w portalu?
Generalnie jest to kwestia umowy. Owszem zdarzenie jest "sterowaniem" ale jest także elementem "całości" wiec jeżeli podejmiemy umowę, że model procesu zawiera poza procesami także elementy sterowania i przepływu danych to mamy model BPMN w "pełnej wersji", jeżeli z powodu braku takiej potrzeby pominiemy np. zdarzenia na modelu nie będzie to błąd, po protu nie będzie tam tej informacji - to decyzja, ilość informacji na modelu, analityka "modelarza".
Analizując firmę w kontekście specyfikowania potrzeb na jakiekolwiek oprogramowanie należy przekazać wykonawcy dwie kluczowe informacje: dane przetwarzane oraz zdarzenia jakie należy obsługiwać. Model procesów przenosi tu wyłącznie kontekst (proces nie jest programowany). Typowym przykładem jest portal: system w odpowiedzi na nasze zachowania (zdarzenia) wyświetla nam coś a ekranie (dane), my jakoś na nie reagujemy itp.
Co ciekawe, paradoksalnie, programistów nie interesuję żadne procesy (one są tak na prawdę bytem abstrakcyjnym) bo oni ich nie implementują :), programista potrzebuje tak zwane "przypadku użycia" a te właśnie są charakteryzowane przez stan początkowy, stan końcowy oraz dane jakie należy przetworzyć (i jak to należy zrobić). Jeżeli więc opracowujemy model procesów w kontekście analizy wymagań na jakiekolwiek oprogramowanie te informacje (zdarzenia i dane) muszą zostać "zidentyfikowane" i opisane.
Inny przykład to edytor tekstu: wymagania użytkownika odzwierciedla meny tego narzędzia, jednak edytor nie ma "wbudowanego" procesu pisania notatki służbowej czy opinii prawnej a mimo to jest do tych procesów wykorzystywany.
Chyba się rozpisałem. W każdym razie model procesu, bez kontekstu jego tworzenia, trudno ocenić choć na pewno wiadomo, że proces to "przetwarzanie-przekształcanie". Z tego właśnie powodu przestrzegam w swoich projektach zasady: model musi mieć zdefiniowany kontekst a do niego pragmatykę. Z niej może np. wynikać, że danym przypadku modelujemy scenariusz realizacji jakiejś pracy i na modelu nie umieszczamy ani zdarzeń ani nawet dokumentów (danych) ale za to dokładnie opisujemy czynności. I taki model spokojnie można utworzyć notacją BPMN ale już nie można notacją eEPC, bo ta nie dopuszcza konstrukcji pozbawionej zdarzeń :).
Jarek Żeliński edytował(a) ten post dnia 05.09.10 o godzinie 09:59