B Komunikaty narzędzia tok
Każdy komunikat ma kod, poziom (błąd, ostrzeżenie, uwaga) i numer wiersza. tok check --lang pl wypisuje je po polsku, a --json w postaci dla programów. W treści komunikatów w nawiasach klamrowych są miejsca, w które narzędzie wstawia identyfikatory i wartości z modelu.
Znaki i wiersze (T)
| Kod | Poziom | Komunikat |
|---|---|---|
| T001 | błąd | niepoprawny znak lub tekst: {detail} |
| T002 | błąd | tabulator we wcięciu; używaj spacji |
| T003 | błąd | wcięcie nie pasuje do żadnego otwartego bloku |
Instrukcje (P)
| Kod | Poziom | Komunikat |
|---|---|---|
| P001 | błąd | nieznane słowo kluczowe „{word}” |
| P002 | błąd | „{keyword}” wymaga identyfikatora |
| P003 | błąd | „{keyword}” nie może mieć wciętego bloku |
| P004 | błąd | „{keyword}” nie może wystąpić w bloku {context} |
| P005 | błąd | dokument musi zaczynać się nagłówkiem, na przykład „tok 1.0” |
| P006 | ostrzeżenie | nieznana wersja języka {version}; to narzędzie czyta wersje 0.1, 0.3, 0.5, 0.6, 0.7 i 1.0 |
| P007 | błąd | niepoprawny atrybut w pobliżu „{near}” |
| P008 | błąd | niepoprawny wiersz {keyword}: {detail} |
| P009 | błąd | niepoprawny wiersz tabeli decyzyjnej: {detail} |
| P010 | błąd | drugi nagłówek dokumentu |
Odwołania i struktura (R)
| Kod | Poziom | Komunikat |
|---|---|---|
| R001 | błąd | identyfikator „{id}” jest już użyty w wierszu {other} |
| R002 | błąd | nieznany element ({rodzaj}): „{id}” |
| R003 | błąd | „{id}” to {actual}, a tu wymagany jest element: {rodzaj} |
| R004 | błąd | identyfikator „{id}” może zawierać tylko litery ASCII, cyfry, „_” i „-” |
| R010 | ostrzeżenie | nieznany atrybut „{key}” w elemencie {kind} |
| R011 | błąd | nieznana flaga „{flag}” w elemencie {kind} |
| R012 | błąd | zdarzenie może mieć tylko jeden wyzwalacz ({triggers}) |
| R013 | błąd | „{key}” wymaga: {requirement} |
| R020 | błąd | wiersz flow z etykietą lub atrybutami musi mieć dokładnie jedną strzałkę |
| R021 | błąd | przepływ sekwencji {source} -> {target} przekracza granicę procesu lub podprocesu |
| R022 | błąd | przepływ komunikatów {source} -> {target} musi łączyć dwa różne baseny |
| R030 | błąd | „{id}” leży w basenie z liniami, ale poza liniami |
| R031 | błąd | „{id}” zadeklarowano poza basenem, a dokument ma baseny; przenieś go do basenu |
| R032 | błąd | zdarzenie graniczne „{id}” wymaga on=CZYNNOŚĆ |
| R040 | błąd | „{keyword}” nie jest dostępne na poziomie {level} |
Tabele decyzyjne (D)
| Kod | Poziom | Komunikat |
|---|---|---|
| D001 | błąd | decyzja „{id}” nie ma wiersza nagłówka |
| D002 | błąd | reguła ma {got} komórek, a nagłówek {expected} |
| D003 | błąd | nieznana polityka trafień „{hit}” |
| D004 | błąd | komórka nagłówka „{cell}” musi mieć postać „nazwa: typ” (string, number, boolean, date) |
| D005 | ostrzeżenie | decyzja „{id}” nie ma reguł |
| D010 | ostrzeżenie | reguły {a} i {b} mogą pasować jednocześnie, np. {example} (polityka unique) |
Formularze (M)
| Kod | Poziom | Komunikat |
|---|---|---|
| M001 | błąd | nieznany typ pola „{type}” |
| M002 | błąd | pole „{id}” typu {type} wymaga options=“wartość:Etykieta, …” |
Wyrażenia FEEL (F)
| Kod | Poziom | Komunikat |
|---|---|---|
| F001 | ostrzeżenie | wyrażenie FEEL spoza obsługiwanego podzbioru: {detail_pl} |
| F002 | błąd | błąd składni FEEL: {detail_pl} |
Symulacja (S)
| Kod | Poziom | Komunikat |
|---|---|---|
| S001 | błąd | niepoprawny rozkład „{text}”: {detail} |
| S002 | ostrzeżenie | prawdopodobieństwa przepływów z „{id}” sumują się do {total}, a nie do 1 |
| S003 | ostrzeżenie | bramka „{id}” nie ma ani warunków, ani prawdopodobieństw; symulator wybierze pierwszy przepływ |
Model wykonywalny (C)
Sprawdzane, gdy nagłówek albo basen ma flagę executable. Kody są takie same jak w trybie --camunda skryptu bpmn.py z kursu „Modelowanie procesów informacyjnych”.
| Kod | Poziom | Znaczenie |
|---|---|---|
| C011 | uwaga | zadanie użytkownika bez formularza (form=) |
| C020 | błąd | zadanie usługowe albo wysyłania bez type= (typ zadania dla workera) |
| C030 | błąd | zadanie reguły biznesowej bez decision= |
| C040 | błąd | zadanie skryptowe bez expr= |
| C052 | błąd | oczekiwanie na wiadomość bez correlation= |
| C070 | błąd | wyjście z bramki xor/or bez when= i bez flagi default |
Elementy BPMN 2.0.2 spoza Camunda 8 (język 0.5)
Dotyczą dokumentów z nagłówkiem tok 0.5: transakcji, bramki złożonej, pętli standardowej, zdarzeń wielokrotnych, instancjonowania, danych procesu, zadań globalnych, interfejsów i kluczy korelacji. Poziomy basic i analytic odrzucają te elementy (R040).
| Kod | Poziom | Znaczenie |
|---|---|---|
| R060 | błąd | zdarzenie anulowania poza transakcją albo nieprzerywające zdarzenie graniczne anulowania |
| R061 | błąd | while=, test-before albo loop-max= bez flagi loop; loop-max nie jest liczbą całkowitą |
| R062 | błąd | niedozwolone połączenie wyzwalaczy; flaga parallel na zdarzeniu, które nie przechwytuje, albo z jednym wyzwalaczem |
| R063 | błąd | element instantiate z wejściem, w podprocesie albo na elemencie innym niż zadanie odbioru i bramka oparta na zdarzeniach |
| R064 | ostrzeżenie | czynność odczytuje i zapisuje obiekt danych w tym samym stanie |
| R065 | błąd | czynność wywołania ma jednocześnie process= i task=; niedozwolony kind= zadania globalnego |
| R066 | błąd | nieznany element w type=, task= albo operation=; trzeba go zadeklarować (item, global, operation) |
| C100–C108 | błąd | w modelu wykonywalnym element, którego Camunda 8.10 nie wykonuje: transakcja, zdarzenie anulowania, bramka złożona, pętla standardowa, zdarzenie wielokrotne, start od zadania odbioru albo bramki, wywołanie zadania globalnego |
| C109, C110 | ostrzeżenie | operacja i klucz korelacji, które Camunda 8.10 pomija (workery pobierają zadania według type=, wiadomości koreluje correlation=) |
Konwersacje, choreografie, krotność uczestników i klasy zgodności (język 0.6)
Dotyczą dokumentów z nagłówkiem tok 0.6. Poziomy basic i analytic odrzucają te instrukcje (R040).
| Kod | Poziom | Znaczenie |
|---|---|---|
| R070 | błąd | konwersacja łączy mniej niż dwa różne baseny; basen spoza podkonwersacji; błędne map= |
| R071 | błąd | przepływ komunikatów wskazany w messages= nie łączy dwóch basenów tej konwersacji |
| R072 | błąd | zadanie choreografii bez from= i to= (dwóch różnych basenów); podchoreografia bez pools= albo from=; wywołanie bez choreography=; błędne map= |
| R073 | błąd | w choreografii element inny niż zdarzenie, bramka albo czynność choreografii; niedozwolony wyzwalacz; choreografia bez elementów |
| R074 | błąd | krotność uczestnika (min=, max=) nie spełnia warunku 0 <= min <= max i max >= 1 |
| R075 | błąd | element wykracza poza klasę zgodności BPMN wybraną w tok check --class |
| C120, C121, C123 | ostrzeżenie | konwersacja, wywołanie konwersacji albo krotność uczestnika w modelu wykonywalnym: Camunda 8.10 je pomija |
| C122 | błąd | choreografia w modelu wykonywalnym: Camunda 8.10 jej nie wykonuje |
Diagramy wymagań decyzyjnych i wyrażenia ramkowe (język 0.7)
Dotyczą dokumentów z nagłówkiem tok 0.7: danych wejściowych (inputdata), źródeł wiedzy (source), modeli wiedzy biznesowej (bkm), decyzji wymagających innych elementów (requires=) i wyrażeń ramkowych.
| Kod | Poziom | Znaczenie |
|---|---|---|
| R076 | błąd | wymagania tworzą cykl: element wymaga samego siebie |
| R077 | błąd | element ma więcej niż jedną postać logiki (expr=, invoke=, tabela, wpisy, elementy listy) albo atrybut nie pasuje do jego logiki |
| R078 | błąd | niepoprawny element listy w params= albo with=; with= wskazuje nieistniejący parametr |
| R079 | ostrzeżenie | wyrażenie używa nazwy elementu, którego decyzja nie wymaga; dodaj go do requires= |
| R080 | błąd | ta sama nazwa użyta dwa razy w diagramie, w jednym kontekście albo wśród parametrów funkcji |
| R081 | błąd | nieznany typ albo item będący jednocześnie typem BPMN i typem DMN |
| D006 | błąd | polityka priority albo output-order bez wartości wyników w nagłówku tabeli |
| D007 | błąd | aggregation= bez hit=collect, nieznana agregacja albo tabela z kilkoma wynikami |
| D008 | błąd | wiersz relacji ma inną liczbę komórek niż relacja kolumn |
| D009 | błąd | komórka nagłówka nie ma postaci nazwa: typ albo nazwa: typ = wartości |
| C130–C132 | błąd | w modelu wykonywalnym: model wiedzy biznesowej z wywołaniem, funkcja o treści innej niż wyrażenie literalne, decyzja bez logiki — Camunda 8.10 ich nie wykona |
W modelach wykonywalnych (executable) eksport do DMN zapisuje nazwy ze spacjami i znakami specjalnymi w odwrotnych apostrofach (`Zaległe opłaty`), tak jak wymaga tego silnik FEEL Camundy.
Język 1.0 i granice zagnieżdżenia
Nagłówek tok 1.0 oznacza język stabilny: tę samą treść co tok 0.7, z obietnicą, że każdy poprawny dokument w wersji 1.0 pozostanie poprawny i będzie zapisywany tak samo we wszystkich wydaniach 1.x. Dokumenty z wcześniejszymi nagłówkami (tok 0.1–tok 0.7) zachowują znaczenie i wyniki.
| Kod | Poziom | Znaczenie |
|---|---|---|
| P005 | błąd | wersja w nagłówku nie jest liczbą, np. tok v1.0 |
| P006 | ostrzeżenie | nieznana wersja języka, np. tok 1 albo tok 1.1 (wersja musi mieć część po kropce) |
| P008 | błąd | bloki zagnieżdżone głębiej niż 64 poziomy |
| P010 | błąd | drugi nagłówek dokumentu |
| R090 | ostrzeżenie | ten sam atrybut albo znacznik podany w wierszu więcej niż raz; liczy się tylko ostatnia wartość (tylko w dokumentach tok 1.0) |
| F002 | błąd | wyrażenie FEEL zagnieżdżone głębiej niż 160 poziomów: „wyrażenie jest zbyt głęboko zagnieżdżone” |
Reguły BPMN 2.0 (E, W, L)
Gdy model przejdzie powyższe kontrole, tok eksportuje go do BPMN 2.0 i sprawdza tym samym walidatorem, którego używa skrypt bpmn.py. Kody i komunikaty są identyczne.
| Kod | Poziom | Problem |
|---|---|---|
| E005 | błąd | przepływ sekwencji bez końców albo łączący dane, basen lub adnotację |
| E006 | błąd | przepływ sekwencji między basenami albo do wnętrza podprocesu |
| E008 | błąd | przepływ komunikatów w obrębie jednego basenu (między liniami ma być flow) |
| E009 | błąd | przepływ komunikatów do bramki, danych lub zdarzenia innego niż wiadomość |
| E010 | błąd | wyzwalacz niedozwolony w tym miejscu |
| E011 | błąd | wejście do zdarzenia początkowego lub wyjście ze zdarzenia końcowego |
| E012 | błąd | błędne zdarzenie graniczne (na bramce, z wejściem, błąd nieprzerywający) |
| E013 | błąd | podproces zdarzeniowy z przepływami albo bez startu z wyzwalaczem |
| E015 | błąd | przepływ domyślny z warunkiem |
| E016 | błąd | po bramce opartej na zdarzeniach stoi coś innego niż zdarzenie przechwytujące lub zadanie odbioru |
| E017 | błąd | warunek lub przepływ domyślny na bramce równoległej |
| E030 | błąd | element w dwóch liniach |
| L020 | uwaga | nazwa bramki rozgałęziającej nie jest pytaniem |
| L021 | uwaga | bramka jednocześnie scala i rozgałęzia |
| L030 | uwaga | zadanie bez nazwy |
| W010 | ostrzeżenie | zdarzenie czasowe bez określenia czasu |
| W020 | ostrzeżenie | zbędna bramka (jedno wejście, jedno wyjście) |
| W021 | ostrzeżenie | gałąź rozgałęzienia XOR/OR bez etykiety, warunku i statusu domyślnego |
| W022 | ostrzeżenie | gałąź bez warunku przy elemencie, który rozgałęzia się warunkowo (ma przepływ domyślny albo inne gałęzie mają warunki) |
| W023 | ostrzeżenie | przepływ powtarza inny przepływ (to samo źródło, cel i warunek) |
| W031 | ostrzeżenie | element bez linii |
| W040 | ostrzeżenie | proces bez zdarzenia początkowego lub końcowego |
| W041 | ostrzeżenie | element nieosiągalny ze startu |
| W042 | ostrzeżenie | ścieżka bez zdarzenia końcowego |
| W043 | ostrzeżenie | przepływ z elementu z powrotem do niego samego |
| W044 | ostrzeżenie | czynność lub zdarzenie z kilkoma przepływami wychodzącymi bez warunku (niejawne rozgałęzienie: wykonają się wszystkie) |
| W045 | ostrzeżenie | podproces bez zdarzenia początkowego |
| W046 | ostrzeżenie | podproces bez zdarzenia końcowego |
| W047 | ostrzeżenie | zdarzenie z kilkoma wyzwalaczami (zdarzenie wielokrotne), które lintery bpmn.io zgłaszają jako błąd |
| W050 | ostrzeżenie | rozgałęzienie OR bez przepływu domyślnego |
| W051 | ostrzeżenie | złączenie innego typu niż rozwidlenie |
| W052 | ostrzeżenie | zdarzenie graniczne eskalacji/błędu na podprocesie, którego nic wewnątrz nie rzuca |
| W053 | ostrzeżenie | rzucona eskalacja, której nic nie łapie |
| W054 | ostrzeżenie | zadanie lub zdarzenie wiadomości bez przepływu komunikatów w modelu z kilkoma basenami |