Temat: Zasoby, harmonogram, wieloinstancyjna czynność...
Przepraszam najmocniej, że do tej pory nie odpowiedziałem na Wasze posty. Miałem dość wymagającą sesję, ale mam już czas i wszystko opiszę. Zastanawiałem się na jakim poziomie szczegółowości odpowiedzieć na własne pytania i doszedłem do wniosku, że lepiej napisać więcej niż mniej. Mam nadzieję, że nikogo nie przerazi rozbudowana treść mojego postu. Wracając do problemów – zacznę od opisu procesu i założenia.
Założenia i opis parametrów:
a)
Zasoby:
Komputer w czynności „Obliczanie …” – 1 sztuka
Pracownik we wszystkich czynnościach – na każdą zmianę po dwóch pracowników
Telefony – we wszystkich czynnościach – 3 sztuki
b)
Harmonogramy:
I zmiana – 8-16
II zmiana – 15-23
Zmiany – 8-23 (w generatorach) (urządzenia są wykorzystywane w godzinach otwarcia zakładu)
c)
Generowanie
Sekwencyjny, 1-2 minut, Rozproszony, Normalny, Losowo, harmonogram ograniczony (zmiany)
d)
Opis czynności
Rozmowa telefoniczna – Przyjęcie połączenia. Przypisywanie zasobów do transakcji. Wykorzystywani są pracownik i telefon. Praca trwa BetweenNorm(10;60) sekund. Zachowanie po upływie czasu: „OK jeśli rozpoczęto”.
Obliczenie ceny zamówienia – Wykorzystywani są: pracownik i telefon oraz komputer. Praca trwa BetweenNorm(10;80) sekund. Zachowanie po upływie czasu”: Zawsze OK.
Przyjęcie zamówienia – Wykorzystani są: są pracownik i telefon. Trwa BetweenNorm(10;90) sekund. Zachowanie po (…): Zawsze OK. W tej czynności są zwalniane zasoby, które były wcześniej przypisane do żetonu. Czynność dot. m.in. wpisania do komputera danych o zamówieniu oraz zakończeniu rozmowy z klientem.
e)
Inne założenia
Klient rozłącza się jeżeli pracownik nie odbierze telefonu w ciągu 10 sekund.
Nadgodziny: 30 minut (dla wszystkich nawet dla urządzeń)
Problem: Przypisanie zasobu do transakcji.
Cel: Ten sam pracownik rozmawia z klientem podczas realizacji procesu (pracownik nie może być zmieniany).
Należy we właściwościach kształtu „Rozmowa z klientem” pobrać zasoby oraz ustalić dla niego „powinowactwo” - przypisany. Wtedy zasób jest przypisany do określonej transakcji do momentu aż zostanie zwolniony (poprzez funkcję „zwolnij” w zakładce zasoby we właściwościach kształtu). Natomiast powinowactwo określa sposób wykorzystania zasobów, gdy są one w okresie nieaktywności (czyli po zakończeniu harmonogramu zasobu). Ponadto powinowactwo determinuje sposób wykorzystania nadgodzin (jeżeli nie zaznaczymy tej funkcji, to po wykorzystaniu nadgodzin jednego z pracowników, system zacznie wykorzystywać nadgodziny pozostałych pracowników).
W czynności „obliczanie ceny zamówienia” nie został określony zasób, bo wcześniej został on przypisany do transakcji. Jeżeli dodamy w tym miejscu zasób to niestety będziemy mieć dwóch pracowników wykonujących tę samą czynność. W ostatnim zadaniu procesu zasób jest zwolniony z transakcji.
Zatrzymam się jeszcze na funkcji „czekaj” (zakładka zasoby). W sytuacji gdy wykorzystywane są podczas pracy np. dwa zasoby (człowiek i komputer) i w przypadku obydwu zasobów funkcja „czekaj” zostanie zaznaczona to obydwa zasoby będą na siebie nawzajem oczekiwać, jeżeli jeden z nich będzie niedostępny (zajęty). Oznacza to, że gdy np. komputer jest dostępny, a człowiek nie, to urządzenie czeka aż pracownik będzie wolny (dostępny). Jednakże warto zadać sobie pytanie - czy taki model odwzorowuje rzeczywistość? Czy komputer może czekać na człowieka? Chyba nie, ale za to człowiek tak (np. inny pracownik w tym czasie korzysta z komputera a pracownik znajduje się w stanie „oczekiwania”). Zatem przy zasobie człowiek należy zaznaczyć opcję „czekaj”, a przy komputerze ma być odznaczona. Reasumując to co wcześniej napisałem – jeżeli zasób zostanie pobrany, to nie może uczestniczyć w wykonywaniu innej pracy.
W problemie nr 3 należy wykorzystać funkcjonalność „Zachowanie po upływie czasu” (np. „jeśli rozpoczęto” lub „zawsze ok”) – w pomocy systemu iGrafx jest to dobrze wyjaśnione. Np. pracownik pracuje do godziny 23:00, zatem w sytuacji, gdy zadzwoni klient o 22:59:30 („Jeśli rozpoczęto)” to pracownik odbierze. Jeżeli rozmowa trwa do 23:00:25 to naliczane są nadgodziny, ponieważ pracownik pracuje dłużej niż 8 godzin. Natomiast sytuacja, gdy klient dzwoni o 23:00:40 nie jest możliwa do zajścia, bo generator transakcji jest ograniczony harmonogramem (można dzwonić do 23:00). Można oczywiście skomplikować sobie życie i przyjąć, że klient dzwoni również po 23:00. Wtedy pracownik nie odbierze telefonu i uruchamiana jest ścieżka wyjątkowa np. klient czeka przez 10 sekund, aż ktoś odbierze telefon, a po tym czasie rozłącza się (umożliwia to wyzwalacz przerywający typu timer).
W sytuacji, gdy klient dzwoni np. o 22:59:30, a pracownik ma przypisane nadgodziny, do tego w czynności „Rozmowa z klientem” pole wyboru o nazwie „Zachowanie po upływie czasu” jest ustawiona na „OK. jeśli rozpoczęto”, a w pozostałych czynnościach „Zawsze OK” to przyjmowana jest transakcja, a następnie jest przetwarzana do momentu, aż wartość nadgodzin zostanie wykorzystana. Tu pojawia się pewien problem, ponieważ może być taka sytuacja, że po wykorzystaniu nadgodzin pracownika, czynność będzie zawieszona np. w ostatniej czynności w momencie wpisywania danych zamówienia do bazy danych i zakończenie rozmowy z klientem, nagle zostają wykorzystane nadgodziny. Wtedy pracownik idzie do domu i nie obchodzi go czy zostawił klienta i komputer. Żeby zabezpieczyć się przed taką sytuacją, to należy podliczyć, czy czas nadgodzin jest wystarczający do realizacji ostatniej transakcji pod koniec harmonogramu ograniczającego działanie przedsiębiorstwa. Jednakże czasami jest to nie możliwe, gdy posiadamy multum danych np. 20 różnych zasobów, każdy ma inne nadgodziny, to ich przeliczenie jest skomplikowane (ale możliwe). Np. dzwoni klient o godzinie 22:59:59, pracownik odbiera i obsługuje go. Powiedzmy, że wykonanie wszystkich czynności trwa 35 minut, a nadgodziny pracownika wynoszą 30 minut. Wtedy po wykorzystaniu nadgodzin pracownik staje się niedostępny, a klient czeka na linii, aż ktoś ponownie raczy dokończyć rozmowę z nim. Wtedy proponuję użycia ścieżki wyjątkowej. Np. pracownik po czasie wykorzystania czasu nadgodzin proponuje klientowi, że zadzwoni następnego dnia, a w tym przypadku wykorzystane są ścieżki wyjątkowe. Jednakże nie jest to dobre rozwiązanie (system podaje nie po mojej myśli wyniki). Można wykorzystać atrybuty i tak zamodelować proces, że w określonej sytuacji transakcja ma być anulowana (w tips and tricks systemu iGrafx zostało to zaprezentowane). Jeszcze innym pomysłem jest porównanie czasów: okresu przepracowanego przez pracownika (OPP) i czasu realizacji czynności (CC) z czasem pracy standardowej (CPS) i czasu nadgodzin (CN). Wyrażenie: OPP + CC > CPS + CN oznacza, że praca nie będzie wykonana w czasie gdy pracownik jest dostępny. Wtedy przydałaby się jakaś ścieżka wyjątkowa. Ogólnie problem mam z ustaleniem funkcji określającej okres przepracowany przez pracownika (OPP). Wtedy dałbym radę rozwiązać problem . Myślę, że jest może łatwiejsze rozwiązanie i prosiłbym o jego podanie.
Co do wieloinstancyjności to dalej mam z tym problemy. Zapoznałem się z kilkoma artykułami na ten temat, ale niestety dalej tego nie czuję (choć w pewnym stopniu rozumiem) i nie potrafię zamodelować procesu wykorzystującego wieloinstancyjność. Wiem, że instancja to wystąpienie i można porównać to do smażenia kotletów na jednym patelni (Piotrkowski s. 57). Każdy kotlet na patelni to instancja, które są jednocześnie „wykonywane”. Lepiej wyjaśnia to S. Drejewicz (Zrozumieć BPMN s. 119-120), który nawiązuje do procesu zaopatrywania sieci hurtowni. Proces jest realizowany wielokrotnie w roku, ale w ramach tego procesu, niektóre czynności mogą być wykonywane wielokrotnie „w obrębie jednej instancji danego procesu”. W ramach procesu są wykonywane następujące czynności: zbieranie informacji o zapotrzebowaniach (pętla), przekazywanie zamówień (wieloinst. Sekwencyjna) oraz dostawa części (wieloinst. równoległa). Zauważyłem, że „chyba” istotnym elementem jest fakt, czy transakcje (a może instancje) są od siebie zależne czy też nie. Dalej tego nie rozumiem. Ponadto zwrócę uwagę na jeden z artykułów
http://tynerblain.com/blog/2006/08/01/bpmn-tasks/, ale po jego analizie stwierdziłem, że nie da się wykonać zaprezentowanego modelu bo proces zapętli się. Proszę o wyjaśnienie tej łamigłówki
Pozdrawiam wszystkich
Adrian
Adrian Durka edytował(a) ten post dnia 11.03.12 o godzinie 20:36