--- marp: true theme: default paginate: true size: 16:9 style: | section { font-size: 24px; } section h1 { color: #1a5276; } section h2 { color: #2980b9; } section table { font-size: 20px; } section small { font-size: 18px; } --- # Wykład 10 ## Procesy pracy — standardy i systemy **Systemy Zarządzania Treścią** Politechnika Poznańska --- # Część 1 ## Standaryzacja: Workflow Management Coalition (WfMC) --- ## Czym jest WfMC? **Workflow Management Coalition (WfMC)** to organizacja standaryzacyjna zajmująca się procesami pracy. | Aspekt | Informacja | |---|---| | **Założenie** | sierpień 1993 | | **Członkowie** | ok. 200 | | **Grupy robocze** | 8 (związanych z pięcioma interfejsami) | | **Integracja** | obecnie zintegrowana z OMG (CORBA) | | **Strona** | http://www.wfmc.org | ### Powiązania WfMC współpracuje z innymi grupami standaryzacyjnymi: Black Forest, OMG, Document Management Alliance. > Celem WfMC jest **ujednolicenie interfejsów** między komponentami systemów workflow, aby produkty różnych producentów mogły współpracować. --- ## Standardy WfMC — osiem interfejsów WfMC opracowała standardy ośmiu interfejsów: | Interfejs | Standard | Temat | |---|---|---| | **Interface 1** | WFMC-TC-1025 | Process Definition Interchange | | **Interface 2** | WFMC-TC-1009 | Workflow Client Application API | | **Interface 3** | WFMC-TC-1009 | Invoked Applications | | **Interface 4** | Wf-XML 2.0 | Interoperability | | **Interface 5** | WFMC-TC-1015 | Audit Data Specification | | **Interface 6** | — | OMG | | **Interface 7** | — | Conformance | | **Interface 8** | — | Reference Model | ### Najważniejsze standardy - **Interface 1** — wymiana definicji procesów między narzędziami, - **Interface 2/3** — API dla aplikacji klienckich i wołanych aplikacji, - **Interface 4** — współdziałanie między silnikami workflow, - **Interface 5** — dane audytowe. --- ## Model referencyjny WfMC ![width:90%](../img/wfmc-model.svg) ### Centralny element: Workflow Enactment Service W centrum modelu znajduje się **Workflow Enactment Service** — silnik (lub silniki) wykonujące procesy pracy. Wokół niego rozmieszczone są narzędzia komunikujące się przez **pięć interfejsów**. --- ## Terminologia WfMC — pojęcia WfMC definiuje spójną terminologię procesów pracy: | Pojęcie | Definicja | |---|---| | **Proces biznesowy** | To, co ma się zdarzyć | | **Definicja procesu** | Reprezentacja tego, co ma się zdarzyć | | **System Zarządzania PP** | Steruje automatycznymi aspektami procesu | | **Aktywności** | Czynności: manualne lub automatyczne | | **Wystąpienie procesu** | Reprezentacja tego, co aktualnie zachodzi | | **Wystąpienia aktywności** | Konkretne wykonania aktywności | | **Składowe pracy** | Zadania przypisane uczestnikom | | **Wołane aplikacje** | Narzędzia wspomagające proces | | **Pod-procesy** | Procesy zagnieżdżone w innych procesach | ### Relacje pojęć - **Proces biznesowy** → jest zdefiniowany przez → **Definicja procesu**, - **Definicja procesu** → jest zarządzana przez → **System Zarządzania PP**, - **Wystąpienie procesu** → składa się z → **Wystąpień aktywności**, - **Aktywności** → mogą być manualne lub automatyczne. --- ## Pojęcia procesów pracy — diagram ```mermaid flowchart TD PB["Proces biznesowy\n(to co ma się zdarzyć)"] -->|"jest zdefiniowany przez"| DP["Definicja procesu\n(reprezentacja)"] DP -->|"jest zarządzana przez"| SZPP["System Zarządzania PP"] SZPP -->|"podczas wykonania\nreprezentowane przez"| WP["Wystąpienia procesu\n(co aktualnie zachodzi)"] WP -->|"składa się z"| WA["Wystąpienia aktywności"] WA -->|"włączają"| SP["Składowe pracy\n(zadania dla uczestników)"] WA -->|"wołają"| Apl["Wołane aplikacje"] ``` > Terminologia WfMC rozróżnia **definicję** (co ma się zdarzyć) od **wystąpienia** (co aktualnie zachodzi) — analogicznie jak klasa i obiekt w programowaniu. --- # Część 2 ## Rodan OfficeObjects®WorkFlow --- ## OOWF — nowoczesny system zarządzania PP **OfficeObjects®WorkFlow (OOWF)** to przykład nowoczesnego systemu zarządzania procesami pracy, opracowany przez firmę Rodan S.A. ### Kluczowe cechy | Cecha | Opis | |---|---| | **Semantyka** | Workflow Process Metamodel, przepływ sterowania i danych, zgodność ze standardami | | **Elastyczność** | Business Process Query Language (BPQL), elastyczne przypisywanie wykonawców | | **Zarządzanie jakością** | Modelowanie i monitorowanie parametrów jakościowych (czas) | | **Integracja** | Wywoływanie aplikacji zewnętrznych | ### Dodatkowe cechy - dynamiczna współpraca uczestników procesu, - obsługa zdarzeń, - zgodność ze standardami WfMC. --- ## Metamodel procesów OOWF OOWF rozszerza **metamodel zaproponowany przez WfMC** (TC-1003). ### Główne części metamodelu | Część | Opis | |---|---| | **Definicja procesu** | Statyczna struktura procesu | | **Wykonanie procesu** | Dynamiczny stan wykonania | | **Otoczenie workflow** | Wymagania na dane, usługi i zasoby | ### Poziomy opisu - **Koncepcyjny** — klasy, związki, - **Szczegółowy** — atrybuty, pointery. ### Klasa Każda klasa składa się z: - definicji, - specyfikacji atrybutów, - związków, - modelu zachowań. --- ## BPQL — Business Process Query Language **BPQL** to obiektowy język odpytywania procesów pracy: ``` ProcessInst - id: String ActivityInst - id: String Performer - id: String, name: String ``` ### Przykłady zapytań BPQL | Zapytanie | Znaczenie | |---|---| | `ProcessInst.id` | Identyfikatory instancji procesów | | `ProcessInst where(id='123')` | Proces o id 123 | | `(ProcessInst where id='123').ConsistsOf.ActivityInst` | Aktywności procesu 123 | | `(ProcessInst where id='123').count(ConsistsOf)` | Liczba aktywności procesu | | `ActivityInst where (PerformedBy.Performer.name='johnb')` | Aktywności wykonane przez johnb | | `StartActivityInst(ProcessInst where id='123').id` | Aktywność początkowa procesu | ### Złożone zapytanie ``` ((ProcessInst where id='123') as P). (P.ConsistsOf.ActivityInst as A). exists(A.PerformedBy.Performer.name='johnb') ``` > BPQL pozwala **zapytywać o stan procesów** w sposób obiektowy — jak SQL dla danych relacyjnych. --- ## OOWF a workflow patterns (van der Aalst) OOWF implementuje większość wzorców procesów pracy opisanych przez van der Aalsta: | Kategoria | Wzorce | OOWF | |---|---|---| | **Basic** | sekwencja, rozgałęzienie, synchronizacja, wybór, scalenie | ✅ wszystkie | | **Advanced Sync.** | multi-choice, sync-merge, multi-merge | ✅ (oprócz discriminate) | | **Strukturalne** | arbitrary cycles, implicit termination | ✅ | | **Wiele instancji** | MI required/design-time/runtime | ✅ (częściowo) | | **Stanowe** | deferred choice, interleaved parallel | ❌ | | **Anulowanie** | cancel activity, cancel case | ✅ | ### Przykład: Synchronising Merge (OR-Join) Punkt procesu, w którym wiele ścieżek zbiega się w jedną. Jeśli ścieżek jest więcej, następuje synchronizacja; jeśli jedna — gałęzie łączą się bez synchronizacji. > Zgodność z wzorcami Aalsta jest **miarą siły wyrazu** systemu workflow. --- # Część 3 ## Przypisywanie wykonawców i zarządzanie czasem --- ## Przypisywanie wykonawców (WPA) **Workflow Participant Assignment (WPA)** — mechanizm określania, kto wykona daną czynność. ### Podstawowe wymagania | Typ | Opis | |---|---| | **Statyczne** | Użytkownicy (konkretne osoby) | | **Dynamiczne** | Grupy, jednostki organizacyjne, role, kompetencje | | **Historia** | Kto i kiedy wykonał czynność | | **Wielu wykonawców** | Przypisanie czynności wielu osobom | | **Ad-hoc** | Selekcja wykonawców w trakcie realizacji | ### Dynamiczne przypisanie - **Grupy, jednostki organizacyjne** — np. "dział serwisu", - **Role, kompetencje** — np. "ekspert Java", - **Historia wykonania** — np. "osoba, która wykonała poprzednią czynność". --- ## Elastyczne przypisanie — decyzja ad-hoc Decyzja **ad-hoc** to podejmowanie w trakcie realizacji procesu decyzji, kto z wybranej grupy użytkowników wykona daną czynność. ### Scenariusz ```mermaid flowchart LR A["Wpłynęła skarga..."] --> B["Kierownik"] B -->|"Kto się nią zajmie?"| C{"Decyzja ad-hoc"} C -->|"wybór"| D["Pracownik A"] C -->|"wybór"| E["Pracownik B"] ``` ### Wariant "kto pierwszy" Czynność realizuje osoba, która **pierwsza zgłosi chęć jej wykonania**: ```mermaid flowchart LR A["Wpłynęła reklamacja..."] --> B["Dział serwisu"] B --> C{"Kto pierwszy?"} C --> D["Serwisant A"] C --> E["Serwisant B"] ``` --- ## Złożone warunki przypisania wykonawców OOWF pozwala wyrażać złożone warunki wyboru wykonawcy: ### Przykłady wyrażeń | Wyrażenie | Znaczenie | |---|---| | `A = Expert('JAVA') * Expert('XML')` | Ekspert języka Java **i** XML | | `B = A - ['Jan Problem']` | Jak wyżej, ale **nie** Jan Problem | | `C = Participant(PrevActivityInst) + Participant(StartActivityInst)` | Osoba, która wykonała poprzednią czynność **lub** rozpoczęła proces | ### Przykład z funkcjami WPA ``` WM_Fun_Supervisor(WM_Fun_ActivityOwner(WM_Fun_PreviousAct())) /\ WM_Fun_OrgUnitMembers('jezyk_angielski') ``` Wykonawcą ma być: - osoba będąca **przełożonym** (`WM_Fun_Supervisor`) - osoby będącej **wykonawcą poprzedniej czynności** (`WM_Fun_PreviousAct`), - i jednocześnie (`/\`) - osoba znająca **język angielski** (członek grupy kompetencji). --- ## Definiowanie wykonawcy — parametry Przy definiowaniu wykonawcy określa się dwa parametry: | Parametr | Opcje | Znaczenie | |---|---|---| | **Decyzja** | Auto / Ad-hoc | Wykonawcy wybierani automatycznie (BPQL) lub manualnie | | **Liczność** | Jeden / Wszyscy | Jeden z kandydatów lub wszyscy kandydaci | ### Sposób określania wykonawcy Wykorzystywane są wyrażenia w języku **BPQL**: - dane słownikowe, - wbudowane funkcje BPQL. > Elastyczne przypisywanie wykonawców (role, kompetencje, historia) to kluczowa cecha odróżniająca nowoczesne systemy workflow od prostych systemów obiegu dokumentów. --- ## Zarządzanie zdarzeniami OOWF obsługuje zdarzenia generowane przez systemy informatyczne i wewnętrzne. ### Wymagania - obsługa zdarzeń **zewnętrznych**, - wyrażenie złożonych **zależności między procesami**, - reakcja systemu na zdarzenia związane z obsługą procesów. ### Koncepcja zdarzeń | Źródło zdarzenia | Przykład | |---|---| | **Systemy informatyczne** | Zdarzenie z systemu zewnętrznego | | **OOWF — specjalizowane czynności** | Wysyłanie zdarzenia, odbiór zdarzenia | | **OOWF — wewnętrzne** | Związane z obiektami workflow (modele zachowania) | ### Specjalizowane czynności - **Wysyłanie zdarzenia** — proces emituje zdarzenie, - **Odbiór zdarzenia** — proces czeka na zdarzenie. --- ## Zarządzanie czasem (ePERT) OOWF modeluje i monitoruje **ograniczenia czasowe** procesów: ### Aktualne wymagania - dynamiczna zmiana ograniczeń czasowych, - przewidywanie możliwych opóźnień, - wczesna i odpowiednia sygnalizacja opóźnień. ### Pojęcia zarządzania czasem | Pojęcie | Opis | |---|---| | **Termin zakończenia** | Deadline czynności | | **Czas trwania** | Czas wykonania | | **Opóźniona czynność** | Czynność po terminie | | **Czynność krytyczna** | Opóźnia cały proces | | **Wybór powiadamianych** | WPA — kto ma być powiadomiony | --- ## Zarządzanie czasem — przykład ```mermaid flowchart LR P["Projektowanie"] --> I["Implementacja"] I --> D["Wdrożenie"] P --> PD["Przyg. dokumentacji"] PD --> D ``` ### Analiza opóźnień | Czynność | Czas | Opóźniona? | Krytyczna? | |---|---|---|---| | **Przyg. dokumentacji** | 5 dni | ✅ opóźniona | ❌ nie opóźnia procesu | | **Implementacja** | 21 dni | ✅ opóźniona | ✅ opóźnia proces (krytyczna) | > Czynność **krytyczna** to taka, której opóźnienie przesuwa termin zakończenia całego procesu — analogia do ścieżki krytycznej w zarządzaniu projektami. --- ## Sygnalizacja opóźnień OOWF sygnalizuje opóźnienia na kilka sposobów: | Sposób | Opis | |---|---| | **Lista zadań** | Zadania widoczne w liście zadań | | **Historia wykonania** | Tekstowa i graficzna historia procesu | | **Powiadomienia** | "Czynność jest opóźniona", "Proces jest opóźniony" | ### Rodzaje powiadomień - **Czynność opóźniona** — pojedyncza czynność po terminie, - **Proces opóźniony** — czynność opóźnia cały proces. --- # Część 4 ## Architektura i cykl życia OOWF --- ## Architektura funkcjonalna OOWF ```mermaid flowchart TD subgraph "Modelowanie i definicja" PD["Process Designer"] end subgraph "Wykonanie" WC["Workflow Client"] WE["Workflow Enactment Engine"] TC["Team Collaboration Manager"] end subgraph "Monitorowanie i administracja" WM["Workflow Monitor"] WA["Workflow Administrator"] PV["Process Visualisation"] end subgraph "Dane" WR["Workflow Repository"] end PD --> WR WE --> WR WM --> WR ``` ### Komponenty | Komponent | Rola | |---|---| | **Process Designer** | Modelowanie i definicja procesów | | **Workflow Enactment Engine** | Silnik wykonawczy | | **Workflow Client** | Interfejs użytkownika (lista zadań) | | **Team Collaboration Manager** | Współpraca wykonawców | | **Workflow Monitor / Administrator** | Monitorowanie i administracja | | **Process Visualisation** | Graficzna historia wykonania | | **Workflow Repository** | Repozytorium procesów | --- ## Modelowanie i definicja procesów (Process Designer) ### Modelowanie | Narzędzie | Opis | |---|---| | **Narzędzie własne OOWF** | Rozszerzona notacja BPMN | | **Narzędzia zewnętrzne** | XPDL, BPEL: iGrafx, Aris Toolset, Corporate Modeller, MS Project | ### Definicja (uszczegółowienie procesu) - **Czynności** — przypisanie wykonawców, aplikacje, parametry, - **Przepływ sterowania** — rozdzielanie i złączanie sterowania, warunki przepływu, - **Ograniczenia niefunkcjonalne** — czas. ### Weryfikacja i udostępnianie - **Weryfikacja** — sprawdzenie kompletności i spójności definicji, - **Udostępnienie** — opublikowanie procesu (natychmiastowa możliwość wykonywania zadań). --- ## Wykonywanie procesów ### Workflow Enactment Engine - uruchom instancję procesu, - wykonaj proces zgodnie z jego definicją, - wybór wykonawców, ewaluacja warunków, - przetwarzanie zdarzeń. ### Workflow Client - **Zadania manualne** — lista zadań, - **Zadania automatyczne** — agenci. ### Team Collaboration Manager - dynamiczna współpraca między wykonawcami, - wątek, komunikat, odpowiedź. > Silnik (Enactment Engine) jest "sercem" systemu — wykonuje definicje procesów, wybiera wykonawców i przetwarza zdarzenia. --- ## Monitorowanie i administracja ### Workflow Monitor - monitorowanie ograniczeń niefunkcjonalnych (czas), - powiadomienia. ### Workflow Administrator - lista instancji procesów, - lista instancji czynności, - operacje: Search, Terminate, Suspend, Resume, Modify, Reassign. ### Process Visualisation Historia wykonania procesu: - tekstowa, - graficzna. --- ## Repozytorium procesów Repozytorium przechowuje definicje i stany wykonania: ### Definicja procesu | Element | Opis | |---|---| | **Czynność** | Atomic, Routing, Compound | | **Przypisanie wykonawców** | Kto wykonuje | | **Specyfikacja aplikacji** | Jakie aplikacje wołane | | **Przejścia** | Sterowanie przepływem | | **Zdarzenia** | Obsługa zdarzeń | ### Instancja procesu | Element | Opis | |---|---| | **Instancja czynności** | Konkretne wykonanie | | **Wykonawca** | Kto wykonał | | **Wołanie aplikacji** | Jakie aplikacje uruchomiono | | **Stan** | Aktualny status | | **Instancja przejścia** | Przebyte przejścia | ### Technologia dostępu Repozytorium dostępne przez **SQL, JDBC**. --- # Część 5 ## Przykład: proces obsługi delegacji --- ## Przykład procesu pracy — opis tekstowy Proces dotyczy **obsługi delegacji**. Wniosek o delegację może złożyć dowolny pracownik firmy (wnioskodawca = osoba delegowana). ### Przebieg procesu 1. **Złożenie wniosku** — pracownik wypełnia wniosek, 2. **Akceptacja wstępna** — bezpośredni przełożony może: - a) zaakceptować wniosek, - b) odrzucić wniosek, - c) przesłać do akceptacji swojemu przełożonemu, 3. **Akceptacja ostateczna** — przełożony przełożonego (w przypadku c), 4. **Rozliczenie delegacji** — delegowany wypełnia faktycznie poniesione koszty, 5. **Księgowanie** — księgowość księguje delegację. ### Role | Rola | Czynność | |---|---| | **Delegowany** | Złożenie wniosku, rozliczenie | | **Kierownik** | Akceptacja wstępna | | **Dyrektor** | Akceptacja ostateczna | | **Księgowy** | Księgowanie delegacji | --- ## Przykład — modelowanie procesu ### Czynności | Czynność | Rola | |---|---| | Złożenie wniosku | Delegowany | | Akceptacja wstępna | Kierownik | | Akceptacja ostateczna | Dyrektor | | Rozliczenie delegacji | Delegowany | | Księgowanie delegacji | Księgowy | | Zakończenie | — | ### Przepływ sterowania ```mermaid flowchart TD A["Złożenie wniosku"] --> B["Akceptacja wstępna"] B --> C{"Decyzja?"} C -->|"zaakceptowany"| D["Rozliczenie delegacji"] C -->|"odrzucony"| E["Zakończenie (anulowanie)"] C -->|"przekazanie wyżej"| F["Akceptacja ostateczna"] F --> G{"Decyzja?"} G -->|"zaakceptowany"| D G -->|"odrzucony"| E D --> H["Księgowanie delegacji"] H --> E ``` --- ## Definiowanie — wykonawcy, aplikacje, czas ### Definiowanie wykonawcy Wykonawcę czynności określa się wyrażeniem BPQL: ``` WM_Fun_Supervisor(WM_Fun_ActivityOwner(WM_Fun_PreviousAct())) ``` Oznacza: przełożony osoby, która wykonała poprzednią czynność. ### Definiowanie wywołania aplikacji | Parametr | Opis | |---|---| | **Nazwa aplikacji** | Element UI (akcja struts, JSP, JSF) lub klasa Java (`WfExtApplication`) | | **Parametry wejściowe** | Wartość lub odwołanie do atrybutu procesu (`$nazwa`) | | **Parametry wyjściowe** | Nazwa atrybutu procesu, na który zapisany zostanie wynik | ### Definiowanie ograniczeń czasowych - maksymalny czas wykonania, - ostateczny termin realizacji, - w odniesieniu do całego procesu lub poszczególnych czynności, - wykorzystanie WPA do określenia osób powiadamianych o opóźnieniu. --- ## Definiowanie — warunki przepływu Warunek przepływu określa, którą ścieżką pójdzie sterowanie: ### Wyrażenie BPQL - możliwość wyboru **atrybutu procesu** z kontenera, - np. atrybut `akcept_wst` reprezentujący status akceptacji wstępnej. ### Opcjonalne elementy | Element | Opis | |---|---| | **Nazwa** | Tekst warunku widoczny na modelu procesu | | **Opis** | Tekst opisujący przejście | ### Weryfikacja i publikacja - **Weryfikacja** — sprawdzenie kompletności i spójności (czy wszystkim czynnościom przypisano wykonawców, czy przejścia tworzą poprawny ciąg), - **Udostępnienie** — opublikowanie procesu, natychmiastowa możliwość wykonywania. --- ## Wykonanie i monitorowanie procesu ### Elementy wykonania procesu | Element | Opis | |---|---| | **Instancja procesu** | Konkretne uruchomienie procesu | | **Status instancji** | W toku, zakończony, przerwany, zarchiwizowany | | **Atrybuty procesu** | Dane procesu | | **Instancja czynności** | Konkretna czynność | | **Status czynności** | Wykonywana, nieodebrana, zakończona, przerwana, wstrzymana | | **Wykonawca** | Kto wykonuje | | **Wywołanie aplikacji** | Uruchomione aplikacje | ### Lista zadań Lista zadań jest **podstawowym interfejsem** wykonania procesu. --- ## Monitorowanie instancji procesów i czynności ### Kategoryzacja i statusy | Kategoria | Statusy | |---|---| | **Instancje procesów** | W toku, Zakończone, Archiwalne | | **Instancje czynności** | Aktywne, Nieaktywne | ### Usługi monitorowania procesów | Usługa | Opis | |---|---| | **Historia wykonania** | Tekstowa lub graficzna | | **Modyfikacja** | Zmiana daty zakończenia | | **Przerwanie** | Przerwanie instancji | | **Archiwizacja** | Eksport do XML | | **Przywrócenie** | Odtworzenie z archiwum | | **Czynności** | Informacje o czynnościach | ### Usługi monitorowania czynności | Usługa | Opis | |---|---| | **Wskazówki** | Opis czynności | | **Modyfikacja** | Zmiana deadline lub wykonawcy | | **Wycofanie** | Cofnięcie do poprzedniej czynności | | **Przerwanie** | Przerwanie czynności | | **Proces** | Informacje o procesie | --- ## Podsumowanie | Temat | Kluczowe wnioski | |---|---| | **WfMC** | Organizacja standaryzująca procesy pracy (8 interfejsów) | | **Model referencyjny** | Workflow Enactment Service + 5 interfejsów | | **Terminologia** | Definicja vs wystąpienie procesu (jak klasa vs obiekt) | | **OOWF** | Nowoczesny system: metamodel, BPQL, wzorce Aalsta | | **WPA** | Przypisywanie wykonawców: role, kompetencje, ad-hoc | | **Zarządzanie czasem** | ePERT, czynności krytyczne, sygnalizacja opóźnień | | **Architektura** | Designer + Engine + Client + Monitor + Repository | | **Przykład** | Proces obsługi delegacji — pełny cykl życia | --- # Dziękuję za uwagę **Systemy Zarządzania Treścią** Politechnika Poznańska