• Nie Znaleziono Wyników

Opis wykorzystanych narzędzi projektowania sieci Petriego

Semantyka języka READ jest zdefiniowana w rozdziale 8 poprzez rozszerzenie diagramów aktywności modelowanych w pracy [165] przy pomocy narzędzia CPN Tools. Elementy READ nie dają się jednak w nim zdefiniować ze względu na przyjęty w tym oprogramowaniu model czasowy. W CPN Tools ist-nieją jedynie przejścia natychmiastowe, odpalane zawsze w pierwszej chwili spełnienia ich warunków. Żetony mogą mieć przypisane zmienne losowe stanowiące podstawę wyznaczenia momentów ich zaistnie-nia względem chwili odpalezaistnie-nia przejścia. Taka koncepcja ma niższą moc ekspresji niż przejścia czasowe wymagane do translacji READ w HLPN. Z tego powodu zdecydowano się na wykorzystanie języka al-ternatywnego oprogramowania Snoopy zawierającego przejścia czasowe. Warto zauważyć, że praca [165] nie podejmuje problemu czasu wykonania czynności i nie wykorzystuje modelu czasowego CPN Tools, a zatem prezentowana w niej transformacja może zostać zaimplementowana w narzędziu Snoopy.

Ponieważ w pracy [165] i w rozdziale 8 zakładają się znajomość wykorzystywanych w nich narzędzi, to w bieżącym dodatku zawarto wprowadzenie do oprogramowania CPN Tools oraz Snoopy w zakresie niezbędnym do definicji semantyki READ.

C.1 CPN Tools

Wprowadzenie do CPN Tools nastąpi poprzez rozpatrzenie sieci Petriego zbudowanej w [165] na podstawie diagramu aktywności omawianego w specyfikacji UML. Analizę modelu z rys. C.1 należy rozpocząć od fragmentu kodu po lewej jego stronie zawierającej definicje typów i zmiennych sieci.

Etykietą ORDER oznacza się zbiór kolorów złożonych będący produktem kartezjańskim pięciu typów prostych. Kolor zamówienia to zatem uporządkowana 5 − ka. Pierwsza składowa koloru to wartość całkowitoliczbowa odpowiadająca identyfikatorowi zamówienia. Kolejne składowe to cztery flagi logiczne o wartościach true lub f alse oznaczające czy zamówienie zostało odpowiednio: wypełnione, podsumowane, zapłacone oraz dostarczone. Każde miejsce modelu oznaczone owalem ma przypisany dokładnie jeden zbiór kolorów. Na przykład zbiorem kolorów iN jest IN T , a p1 - ORDER.

Na łukach łączących przejścia z miejscami znajdują się wyrażenia, których wartości to kolory. Wyra-żeniami mogą być: zmienne, uporządkowane w nawiasach n − ki oraz funkcje.

Począwszy od wersji 3.4 CPN Tools używa się bardziej intuicyjnego literału colorset zamiast color.

170 DODATEK C. NARZĘDZIA CPN TOOLS ORAZ SNOOPY

Wszystkie zmienne występujące w sieci muszą zostać zdefiniowane konstrukcjami var, w których zmiennym przypisuje się zbiór kolorów. W przykładowym modelu istnieją zmienne id, order oraz order2. Funkcja init zwraca nowy kolor, którego pierwsza składowa jest równa 1 a pozostałe f alse. Z kolei funkcja f ill przyjmująca zamówienie jako argument zwraca nowy kolor taki, że składowe o numerach 1, 3, 4, 5 zostają przepisane z argumentu, a druga składowa otrzymuje wartość logiczną true. Wyrażenie

#1 o1 oznacza pierwszą składową koloru o1.

W CPN Tools istnieją jedynie przejścia natychmiastowe graficznie oznaczane prostokątami z nazwami w środku. Przykładowo, przejście receiveorder odpala się, gdy w miejscu iN znajdzie się jakiś żeton.

Jego wartość będzie symbolizowana zmienną id. Z etykiety nad tym przejściem wynika natomiast, jak zmienna id jest wykorzystana do utworzenia nowego koloru ze zbioru ORDER. Taki kolor, o pierwszej składowej równej wartości z miejsca iN , zostanie umieszczony na miejscu p1.

Oznaczenie 1‘1 przy miejscu iN stanowi znakowanie początkowe, które w tym przypadku stanowi jeden żeton całkowitoliczbowy o wartości 1. Gdyby miejsce miało przyporządkowany kolor złożony, to ciąg znaków po apostrofie byłby n-ką uporządkowaną.

Rysunek C.1: Sieć Petriego reprezentująca proces realizacji zamówienia zaczerpnięta z [165]

Oprogramowanie CPN Tools umożliwia również przypisanie żetonom chwili ich zaistnienia. Wyrażenie 1‘1@100 oznacza, że w chwili 100 do miejsca dodany zostanie jeden kolor o wartości 1. Jak wspomniano,

C.2. SNOOPY 171

transformacja zaproponowana w [165] nie podejmuje problemu opisu czasu wykonania czynności, a zatem konstrukcja o tej składni nie jest widoczna na rys. C.1.

C.2 Snoopy

W narzędziu Snoopy zbiory kolorów należy zdefiniować również dla typów prostych takich jak liczby rzeczywiste czy wartości dyskretne, których w przeciwieństwie do CPN Tools nie można używać bez-pośrednio. Jak wynika z tab. C.1 w modelu bramy CAND używanych jest 7 zbiorów kolorów, z czego pierwsze 4 to zbiory proste, a ostatnie 3 to zbiory złożone będące iloczynami kartezjańskimi wymienionych w ostatniej kolumnie typów prostych.

Każdy kolor o typie tramId jest liczbą całkowitą między 0 i 10000 identyfikującą tramwaj, a

tramFa-ilureState przyjmuje wartość Occuring, Scheduled lub AwaitingDelivery. Z kolei T ramF ailure to typ

złożony będący produktem tramF ailureState oraz tramId.

Tabela C.1: Zbiory kolorów wykorzystywane w sieci Petriego dla bramy CAND

Nazwa zbioru Typ Definicja

tramId int 0-10000

timeResourceState enum Passed

tramFailureState enum Occuring, Scheduled, AwaitingDelivery

hazardState enum Ongoing

Hazard product hazardState, tramId

TimeResource product timeResourceState, tramId

TramFailure product tramFailureState, tramId

Miejsce reprezentowane jest przez okrąg z dwiema etykietami. Pierwsza to nazwa przyporządkowanego zbioru kolorów, a druga to nazwa miejsca zgodna z formatem pi, gdzie i jest numerem miejsca.

W narzędziu Snoopy istnieją dwa typy przejść: natychmiastowe oznaczone cienką linią oraz czasowe oznaczone niewypełnionym prostokątem (rys. C.2). Przejścia czasowe mają przypisaną zmienną losową oznaczającą czas odpalenia, ale ta zmienna nie jest graficznie pokazana na rysunku.

Wyrażenia na łukach są kolorami definiowanymi m. in. przy pomocy zmiennych, literałów oraz ope-ratora dostępu do składowej koloru. Symbole tId, t, f odpowiadają na rysunku zmiennym o typach odpowiednio tramId, Hazard, T imeResource oraz T ramF ailure.

Aby odpaliło się przejście t2 na p4 musi istnieć żeton. Jego wartość jest reprezentowana przez zmienną

tId. Przy jej pomocy przejście tworzy nowy żeton o kolorze (Ongoing, tId) dodany do miejsca p5.

Odwołanie do określonej składowej złożonego koloru odbywa się po dwukropku, czego przykładem jest f : 1 w wyrażeniu strzegącym odpalenie przejścia t1. W ten sposób można sprawdzić, czy żeton skojarzony z miejscem p1 ma pierwszą składową koloru równą Occuring.

Łuki zakończone pustym okręgiem hamują odpalenie przejścia, tzn. jeśli na miejscu wejściowym ist-nieje żeton o kolorze specyfikowanym przez taki łuk, to przejście nie zostanie odpalone. Łuki zakończone czarnym kołem służą do odczytywania koloru żetonu bez jego usuwania z miejsca wejściowego.

172 DODATEK C. NARZĘDZIA CPN TOOLS ORAZ SNOOPY