Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Graf bloków, walidacja i podgląd jako KretS

BASICVALIDATION_ONLYKretFlow

Przepływ `Flow/Restock.kflow` (format `kretflow-ir/2`, JSON) z szablonu SDK: wyzwalacz, pętla, przypisania, akcja wywołująca funkcję KretS, warunek i koniec. `kret check` sprawdza wyrażenia w blokach kompilatorem KretS, `kret flow to-krets` pokazuje równoważny kod KretS (każdy wiersz oznaczony `// @flow id`), `kret flow blocks` wypisuje katalog bloków (`kretflow-blocks/1`, EXPERIMENTAL).

Edycja i zapisane wyniki

Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.

Kanoniczne pliki projektu

{
  "format": "kretflow-ir/2",
  "name": "Restock",
  "variables": [
    { "name": "stock", "type": "Int64", "initial": "2" },
    { "name": "ordered", "type": "Int64", "initial": "0" },
    { "name": "cost", "type": "Int64", "initial": "0" },
    { "name": "note", "type": "String", "initial": "\"\"" }
  ],
  "nodes": [
    { "id": "start", "kind": "trigger", "event": "stock.low", "position": { "x": 40, "y": 40 } },
    { "id": "enough", "kind": "loop", "expression": "stock < 10", "position": { "x": 200, "y": 40 } },
    { "id": "order", "kind": "assign", "variable": "ordered", "expression": "ordered + 4", "position": { "x": 360, "y": 0 } },
    { "id": "deliver", "kind": "assign", "variable": "stock", "expression": "stock + 4", "position": { "x": 520, "y": 0 } },
    { "id": "price", "kind": "action", "variable": "cost", "call": "Orders.price", "arguments": ["ordered"], "position": { "x": 360, "y": 120 } },
    { "id": "large", "kind": "condition", "expression": "cost > 100", "position": { "x": 520, "y": 120 } },
    { "id": "big", "kind": "assign", "variable": "note", "expression": "\"duże zamówienie\"", "position": { "x": 680, "y": 80 } },
    { "id": "small", "kind": "assign", "variable": "note", "expression": "\"zwykłe zamówienie\"", "position": { "x": 680, "y": 160 } },
    { "id": "say", "kind": "action", "call": "log.info", "arguments": ["note + \": \" + toString(ordered) + \" szt.\""], "position": { "x": 840, "y": 120 } },
    { "id": "done", "kind": "end", "expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)", "position": { "x": 1000, "y": 120 } }
  ],
  "edges": [
    { "from": "start", "port": "next", "to": "enough" },
    { "from": "enough", "port": "body", "to": "order" },
    { "from": "order", "port": "next", "to": "deliver" },
    { "from": "deliver", "port": "next", "to": "enough" },
    { "from": "enough", "port": "done", "to": "price" },
    { "from": "price", "port": "next", "to": "large" },
    { "from": "large", "port": "true", "to": "big" },
    { "from": "large", "port": "false", "to": "small" },
    { "from": "big", "port": "next", "to": "say" },
    { "from": "small", "port": "next", "to": "say" },
    { "from": "say", "port": "next", "to": "done" }
  ]
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. "format": "kretflow-ir/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  3. "name": "Restock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  4. "variables": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  5. { "name": "stock", "type": "Int64", "initial": "2" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. { "name": "ordered", "type": "Int64", "initial": "0" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. { "name": "cost", "type": "Int64", "initial": "0" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. { "name": "note", "type": "String", "initial": "\"\"" }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  10. "nodes": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. { "id": "start", "kind": "trigger", "event": "stock.low", "position": { "x": 40, "y": 40 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  12. { "id": "enough", "kind": "loop", "expression": "stock < 10", "position": { "x": 200, "y": 40 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. { "id": "order", "kind": "assign", "variable": "ordered", "expression": "ordered + 4", "position": { "x": 360, "y": 0 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  14. { "id": "deliver", "kind": "assign", "variable": "stock", "expression": "stock + 4", "position": { "x": 520, "y": 0 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  15. { "id": "price", "kind": "action", "variable": "cost", "call": "Orders.price", "arguments": ["ordered"], "position": { "x": 360, "y": 120 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  16. { "id": "large", "kind": "condition", "expression": "cost > 100", "position": { "x": 520, "y": 120 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  17. { "id": "big", "kind": "assign", "variable": "note", "expression": "\"duże zamówienie\"", "position": { "x": 680, "y": 80 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  18. { "id": "small", "kind": "assign", "variable": "note", "expression": "\"zwykłe zamówienie\"", "position": { "x": 680, "y": 160 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  19. { "id": "say", "kind": "action", "call": "log.info", "arguments": ["note + \": \" + toString(ordered) + \" szt.\""], "position": { "x": 840, "y": 120 } },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  20. { "id": "done", "kind": "end", "expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)", "position": { "x": 1000, "y": 120 } }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  22. "edges": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. { "from": "start", "port": "next", "to": "enough" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  24. { "from": "enough", "port": "body", "to": "order" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  25. { "from": "order", "port": "next", "to": "deliver" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  26. { "from": "deliver", "port": "next", "to": "enough" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  27. { "from": "enough", "port": "done", "to": "price" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  28. { "from": "price", "port": "next", "to": "large" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  29. { "from": "large", "port": "true", "to": "big" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  30. { "from": "large", "port": "false", "to": "small" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  31. { "from": "big", "port": "next", "to": "say" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  32. { "from": "small", "port": "next", "to": "say" },Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  33. { "from": "say", "port": "next", "to": "done" }Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  34. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  35. }Zamknięcie struktury otwartej we wcześniejszych liniach.

Wynik i typowy błąd

Projekt jest poprawny; wynik `to-krets` jest identyczny z `Flow/Restock.krs` z szablonu; katalog bloków ma format `kretflow-blocks/1`.

Na co uważać

Szukanie osobnego silnika przepływów: nie istnieje. Przepływ jest obniżany do KretS i wykonywany przez tę samą maszynę.

Wymagania wersji i procedura lokalna

sdk
1.0.0-rc.3+kret.local.3
sdkInfoReports
1.0.0-rc.3
core
1.0.0-test.6.11-draft.1
os
Windows 11 x64
dotnet
.NET 10 runtime

Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.

  1. checkkret check . --jsonKatalog: project · Oczekiwany kod wyjścia: 0
  2. to-kretskret flow to-krets Flow/Restock.kflowKatalog: project · Oczekiwany kod wyjścia: 0
  3. blockskret flow blocksKatalog: project · Oczekiwany kod wyjścia: 0

Wyniki zapisane w pakiecie źródłowym

To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.

# EXPECTED_OUTPUT — KRETFLOW-B01-GraphCheckToKretS
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:28Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. check  (exit 0, PASS)
> kret check . --json
{
  "format": "kret-diagnostics/1",
  "project": "<project>",
  "succeeded": true,
  "plugin": {
    "id": "LOCAL-KPL-FLB2GRPH",
    "name": "GraphCheckToKretS",
    "version": "1.0.0",
    "profile": "standard",
    "database": false
  },
  "permissions": {
    "required": [
      "logs.own.write"
    ],
    "optional": []
  },
  "handlers": {
    "lifecycle": [
      "start",
      "shutdown"
    ],
    "events": [],
    "commands": []
  },
  "diagnostics": []
}

### 2. to-krets  (exit 0, PASS)
> kret flow to-krets Flow/Restock.kflow
module Restock
fn Run() -> String {
    var error: String = ""
    var stock: Int64 = 2
    var ordered: Int64 = 0
    var cost: Int64 = 0
    var note: String = ""
    // @trigger stock.low  // @flow start
    while stock < 10 {  // @flow enough
        ordered = ordered + 4  // @flow order
        stock = stock + 4  // @flow deliver
    }
    cost = Orders.price(ordered)  // @flow price
    if cost > 100 {  // @flow large
        note = "duże zamówienie"  // @flow big
    } else {
        note = "zwykłe zamówienie"  // @flow small
    }
    log.info(note + ": " + toString(ordered) + " szt.")  // @flow say
    return note + ", sztuk: " + toString(ordered) + ", koszt: " + toString(cost)  // @flow done
}

### 3. blocks  (exit 0, PASS)
> kret flow blocks
{
  "format": "kretflow-blocks/1",
  "documentFormat": "kretflow-ir/2",
  "variableTypes": [
    "Bool",
    "Int64",
    "Float64",
    "String"
  ],
  "reservedNames": [
    "flowState",
    "flowData",
    "flowStart",
    "flowResult",
    "error"
  ],
  "maxNodes": 1000,
  "blocks": [
    {
      "kind": "trigger",
      "label": "Wyzwalacz",
      "description": "Początek przepływu: zdarzenie, które go uruchamia (dokładnie jeden w przepływie).",
      "fields": [
        {
          "name": "event",
          "type": "event",
          "required": true,
          "label": "Zdarzenie"
        }
      ],
      "ports": [
        "next"
      ]
    },
    {
      "kind": "assign",
      "label": "Przypisanie",
      "description": "Nadaje zmiennej wartość wyrażenia KretS.",
      "fields": [
        {
          "name": "variable",
          "type": "variable",
          "required": true,
          "label": "Zmienna"
        },
        {
          "name": "expression",
          "type": "expression",
          "required": true,
          "label": "Wyrażenie"
        }
      ],
      "ports": [
        "next"
      ]
    },
    {
      "kind": "action",
      "label": "Akcja",
      "description": "Wywołuje funkcję KretS (funkcja albo Moduł.funkcja); wynik może trafić do zmiennej. Port „error” obsługuje błąd.",
      "fields": [
        {
          "name": "call",
          "type": "call",
          "required": true,
          "label": "Funkcja"
        },
        {
          "name": "arguments",
          "type": "arguments",
          "required": false,
          "label": "Argumenty (wyrażenia)"
        },
        {
          "name": "variable",
          "type": "variable",
          "required": false,
          "label": "Wynik do zmiennej"
        }
      ],
      "ports": [
        "next",
        "error"
      ]
    },
    {
      "kind": "condition",
      "label": "Warunek",
      "description": "Rozgałęzienie według warunku KretS.",
      "fields": [
        {
          "name": "expression",
          "type": "expression",
          "required": true,
          "label": "Warunek"
        }
      ],
      "ports": [
        "true",
        "false"
      ]
    },
    {
      "kind": "loop",
      "label": "Pętla",
      "description": "Powtarza gałąź „body”, dopóki warunek jest prawdziwy; potem „done”.",
      "fields": [
        {
          "name": "expression",
          "type": "expression",
          "required": true,
          "label": "Warunek"
        }
      ],
      "ports": [
        "body",
        "done"
      ]
    },
    {
      "kind": "delay",
      "label": "Opóźnienie",
      "description": "Czeka podany czas (0 ms – 24 h).",
      "fields": [
        {
          "name": "durationMs",
          "type": "durationMs",
          "required": true,
          "label": "Czas [ms]"
        }
      ],
      "ports": [
        "next"
      ]
    },
    {
      "kind": "checkpoint",
      "label": "Punkt kontrolny",
      "description": "Zapisuje stan przepływu pod nazwą.",
      "fields": [
        {
          "name": "name",
          "type": "name",
          "required": true,
          "label": "Nazwa"
        }
      ],
      "ports": [
        "next"
      ]
    },
    {
      "kind": "code",
      "label": "Kod KretS",
      "description": "Instrukcje KretS bez odpowiednika blokowego (zachowane bez zmian).",
      "fields": [
        {
          "name": "source",
          "type": "source",
          "required": true,
          "label": "Kod"
        }
      ],
      "ports": [
        "next"
      ]
    },
    {
      "kind": "end",
      "label": "Koniec",
      "description": "Kończy przepływ; opcjonalne wyrażenie jest jego wynikiem.",
      "fields": [
        {
          "name": "expression",
          "type": "expression",
          "required": false,
          "label": "Wynik"
        }
      ],
      "ports": []
    }
  ]
}


Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. # EXPECTED_OUTPUT — KRETFLOW-B01-GraphCheckToKretSOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:28Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. check (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret check . --jsonOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. "format": "kret-diagnostics/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. "project": "<project>",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  10. "succeeded": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  11. "plugin": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "id": "LOCAL-KPL-FLB2GRPH",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "name": "GraphCheckToKretS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. "version": "1.0.0",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  15. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  16. "database": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  18. "permissions": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. "required": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "logs.own.write"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  22. "optional": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  24. "handlers": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  25. "lifecycle": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  26. "start",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  27. "shutdown"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  28. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  29. "events": [],Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  30. "commands": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. "diagnostics": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  34. Pusta linia oddziela fragmenty źródła.
  35. ### 2. to-krets (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  36. > kret flow to-krets Flow/Restock.kflowOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  37. module RestockDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  38. fn Run() -> String {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  39. var error: String = ""Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  40. var stock: Int64 = 2Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  41. var ordered: Int64 = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  42. var cost: Int64 = 0Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  43. var note: String = ""Wiązanie wartości; typ i możliwość zmiany zależą od użytej deklaracji.
  44. // @trigger stock.low // @flow startKomentarz autora; nie jest wykonywany.
  45. while stock < 10 { // @flow enoughSterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  46. ordered = ordered + 4 // @flow orderOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  47. stock = stock + 4 // @flow deliverOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  48. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  49. cost = Orders.price(ordered) // @flow priceOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  50. if cost > 100 { // @flow largeSterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  51. note = "duże zamówienie" // @flow bigOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  52. } else {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  53. note = "zwykłe zamówienie" // @flow smallOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  54. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  55. log.info(note + ": " + toString(ordered) + " szt.") // @flow sayOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  56. return note + ", sztuk: " + toString(ordered) + ", koszt: " + toString(cost) // @flow doneZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  57. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  58. Pusta linia oddziela fragmenty źródła.
  59. ### 3. blocks (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  60. > kret flow blocksOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  61. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  62. "format": "kretflow-blocks/1",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "documentFormat": "kretflow-ir/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. "variableTypes": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. "Bool",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  66. "Int64",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  67. "Float64",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  68. "String"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  69. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  70. "reservedNames": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "flowState",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  72. "flowData",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  73. "flowStart",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  74. "flowResult",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  75. "error"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  76. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  77. "maxNodes": 1000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  78. "blocks": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  79. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  80. "kind": "trigger",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  81. "label": "Wyzwalacz",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  82. "description": "Początek przepływu: zdarzenie, które go uruchamia (dokładnie jeden w przepływie).",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  83. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  85. "name": "event",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  86. "type": "event",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  87. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. "label": "Zdarzenie"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  90. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  91. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "next"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  93. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  94. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  95. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  96. "kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "label": "Przypisanie",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. "description": "Nadaje zmiennej wartość wyrażenia KretS.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  101. "name": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  102. "type": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  103. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  104. "label": "Zmienna"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  105. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  106. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  107. "name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  108. "type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  109. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "label": "Wyrażenie"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  112. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  113. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  114. "next"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  115. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  116. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  117. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  118. "kind": "action",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. "label": "Akcja",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  120. "description": "Wywołuje funkcję KretS (funkcja albo Moduł.funkcja); wynik może trafić do zmiennej. Port „error” obsługuje błąd.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  121. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  123. "name": "call",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. "type": "call",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "label": "Funkcja"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  128. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  129. "name": "arguments",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  130. "type": "arguments",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  131. "required": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  132. "label": "Argumenty (wyrażenia)"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  133. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  134. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  135. "name": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. "type": "variable",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. "required": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  138. "label": "Wynik do zmiennej"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  139. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  140. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  141. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  142. "next",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  143. "error"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  144. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  145. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  146. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  147. "kind": "condition",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  148. "label": "Warunek",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  149. "description": "Rozgałęzienie według warunku KretS.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  150. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  151. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  152. "name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  153. "type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  154. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  155. "label": "Warunek"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  156. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  157. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  158. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  159. "true",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  160. "false"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  161. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  162. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  163. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  164. "kind": "loop",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  165. "label": "Pętla",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  166. "description": "Powtarza gałąź „body”, dopóki warunek jest prawdziwy; potem „done”.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  167. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  168. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  169. "name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  170. "type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  171. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  172. "label": "Warunek"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  173. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  174. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  175. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  176. "body",Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  177. "done"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  178. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  179. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  180. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  181. "kind": "delay",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  182. "label": "Opóźnienie",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  183. "description": "Czeka podany czas (0 ms – 24 h).",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  184. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  185. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  186. "name": "durationMs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  187. "type": "durationMs",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  188. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  189. "label": "Czas [ms]"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  190. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  191. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  192. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  193. "next"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  194. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  195. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  196. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  197. "kind": "checkpoint",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  198. "label": "Punkt kontrolny",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  199. "description": "Zapisuje stan przepływu pod nazwą.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  200. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  201. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  202. "name": "name",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  203. "type": "name",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  204. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  205. "label": "Nazwa"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  206. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  207. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  208. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  209. "next"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  210. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  211. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  212. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  213. "kind": "code",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  214. "label": "Kod KretS",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  215. "description": "Instrukcje KretS bez odpowiednika blokowego (zachowane bez zmian).",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  216. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  217. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  218. "name": "source",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  219. "type": "source",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  220. "required": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  221. "label": "Kod"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  222. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  223. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  224. "ports": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  225. "next"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  226. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  227. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  228. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  229. "kind": "end",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  230. "label": "Koniec",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  231. "description": "Kończy przepływ; opcjonalne wyrażenie jest jego wynikiem.",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  232. "fields": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  233. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  234. "name": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  235. "type": "expression",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  236. "required": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  237. "label": "Wynik"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  238. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  239. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  240. "ports": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  241. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  242. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  243. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  244. Pusta linia oddziela fragmenty źródła.
  245. Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów

null
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Graf KretFlow — dane źródłowe

{
  "format": "kretflow-ir/2",
  "name": "Restock",
  "variables": [
    {
      "name": "stock",
      "type": "Int64",
      "initial": "2"
    },
    {
      "name": "ordered",
      "type": "Int64",
      "initial": "0"
    },
    {
      "name": "cost",
      "type": "Int64",
      "initial": "0"
    },
    {
      "name": "note",
      "type": "String",
      "initial": "\"\""
    }
  ],
  "nodes": [
    {
      "id": "start",
      "kind": "trigger",
      "event": "stock.low",
      "position": {
        "x": 40,
        "y": 40
      }
    },
    {
      "id": "enough",
      "kind": "loop",
      "expression": "stock < 10",
      "position": {
        "x": 200,
        "y": 40
      }
    },
    {
      "id": "order",
      "kind": "assign",
      "variable": "ordered",
      "expression": "ordered + 4",
      "position": {
        "x": 360,
        "y": 0
      }
    },
    {
      "id": "deliver",
      "kind": "assign",
      "variable": "stock",
      "expression": "stock + 4",
      "position": {
        "x": 520,
        "y": 0
      }
    },
    {
      "id": "price",
      "kind": "action",
      "variable": "cost",
      "call": "Orders.price",
      "arguments": [
        "ordered"
      ],
      "position": {
        "x": 360,
        "y": 120
      }
    },
    {
      "id": "large",
      "kind": "condition",
      "expression": "cost > 100",
      "position": {
        "x": 520,
        "y": 120
      }
    },
    {
      "id": "big",
      "kind": "assign",
      "variable": "note",
      "expression": "\"duże zamówienie\"",
      "position": {
        "x": 680,
        "y": 80
      }
    },
    {
      "id": "small",
      "kind": "assign",
      "variable": "note",
      "expression": "\"zwykłe zamówienie\"",
      "position": {
        "x": 680,
        "y": 160
      }
    },
    {
      "id": "say",
      "kind": "action",
      "call": "log.info",
      "arguments": [
        "note + \": \" + toString(ordered) + \" szt.\""
      ],
      "position": {
        "x": 840,
        "y": 120
      }
    },
    {
      "id": "done",
      "kind": "end",
      "expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)",
      "position": {
        "x": 1000,
        "y": 120
      }
    }
  ],
  "edges": [
    {
      "from": "start",
      "port": "next",
      "to": "enough"
    },
    {
      "from": "enough",
      "port": "body",
      "to": "order"
    },
    {
      "from": "order",
      "port": "next",
      "to": "deliver"
    },
    {
      "from": "deliver",
      "port": "next",
      "to": "enough"
    },
    {
      "from": "enough",
      "port": "done",
      "to": "price"
    },
    {
      "from": "price",
      "port": "next",
      "to": "large"
    },
    {
      "from": "large",
      "port": "true",
      "to": "big"
    },
    {
      "from": "large",
      "port": "false",
      "to": "small"
    },
    {
      "from": "big",
      "port": "next",
      "to": "say"
    },
    {
      "from": "small",
      "port": "next",
      "to": "say"
    },
    {
      "from": "say",
      "port": "next",
      "to": "done"
    }
  ]
}
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. "format": "kretflow-ir/2",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  3. "name": "Restock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  4. "variables": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  5. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. "name": "stock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  7. "type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  8. "initial": "2"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  9. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  10. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. "name": "ordered",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  12. "type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  13. "initial": "0"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  14. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  15. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  16. "name": "cost",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  17. "type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  18. "initial": "0"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  19. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  20. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  21. "name": "note",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  22. "type": "String",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. "initial": "\"\""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  25. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  26. "nodes": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  27. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  28. "id": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "kind": "trigger",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  30. "event": "stock.low",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  32. "x": 40,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  33. "y": 40Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  35. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  36. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  37. "id": "enough",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "kind": "loop",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "expression": "stock < 10",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  41. "x": 200,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  42. "y": 40Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  43. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  44. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  45. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  46. "id": "order",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  47. "kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "variable": "ordered",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "expression": "ordered + 4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "x": 360,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "y": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  54. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  55. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  56. "id": "deliver",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  57. "kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  58. "variable": "stock",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  59. "expression": "stock + 4",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  60. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. "x": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  62. "y": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  64. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  65. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  66. "id": "price",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. "kind": "action",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  68. "variable": "cost",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  69. "call": "Orders.price",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. "arguments": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "ordered"Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  72. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  73. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. "x": 360,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  75. "y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  77. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  78. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  79. "id": "large",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  80. "kind": "condition",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  81. "expression": "cost > 100",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  82. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  83. "x": 520,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. "y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  85. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  86. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  87. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  88. "id": "big",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. "kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  90. "variable": "note",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. "expression": "\"duże zamówienie\"",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "x": 680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. "y": 80Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  95. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  96. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  97. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  98. "id": "small",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "kind": "assign",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. "variable": "note",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  101. "expression": "\"zwykłe zamówienie\"",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  102. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  103. "x": 680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  104. "y": 160Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  105. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  106. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  107. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  108. "id": "say",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  109. "kind": "action",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "call": "log.info",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. "arguments": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  112. "note + \": \" + toString(ordered) + \" szt.\""Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  114. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "x": 840,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  118. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  119. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  120. "id": "done",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  121. "kind": "end",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  122. "expression": "note + \", sztuk: \" + toString(ordered) + \", koszt: \" + toString(cost)",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  123. "position": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. "x": 1000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "y": 120Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  127. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  128. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  129. "edges": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  130. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  131. "from": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  132. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  133. "to": "enough"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  134. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  135. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  136. "from": "enough",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. "port": "body",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  138. "to": "order"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  139. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  140. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  141. "from": "order",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  142. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  143. "to": "deliver"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  144. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  145. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  146. "from": "deliver",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  147. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  148. "to": "enough"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  149. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  150. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  151. "from": "enough",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  152. "port": "done",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  153. "to": "price"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  154. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  155. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  156. "from": "price",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  157. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  158. "to": "large"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  159. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  160. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  161. "from": "large",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  162. "port": "true",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  163. "to": "big"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  164. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  165. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  166. "from": "large",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  167. "port": "false",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  168. "to": "small"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  169. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  170. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  171. "from": "big",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  172. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  173. "to": "say"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  174. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  175. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  176. "from": "small",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  177. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  178. "to": "say"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  179. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  180. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  181. "from": "say",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  182. "port": "next",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  183. "to": "done"Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  184. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  185. ]Zamknięcie struktury otwartej we wcześniejszych liniach.
  186. }Zamknięcie struktury otwartej we wcześniejszych liniach.
Pochodzenie i integralność

KRET_LANGUAGE_KRETFLOW.zip:KretFlow/Examples/BASIC_GraphCheckToKretS/example.json

02_PLAYGROUND/EXAMPLES/KRETFLOW-B01-GraphCheckToKretS.json
SHA-256 A14911C1B4956E6EFE5C0F4427AA583EFA8ABDF2E924E62AF4F0DD89A3A3B64F

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KRETFLOW-B01-GraphCheckToKretS — Graf bloków, walidacja i podgląd jako KretS

KRETFLOW-B01-GraphCheckToKretS — Graf bloków, walidacja i podgląd jako KretS

🇬🇧 English version below.
PoleWartość
TechnologiaKretFlow
PoziomBASIC
KlasyfikacjaVALIDATION_ONLY — Tylko walidacja (bez wykonania)
PlaygroundPUBLIC_STATIC — publicznie: tylko podgląd kodu i gotowe wyniki
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

Przepływ Flow/Restock.kflow (format kretflow-ir/2, JSON) z szablonu SDK: wyzwalacz, pętla, przypisania, akcja wywołująca funkcję KretS, warunek i koniec. kret check sprawdza wyrażenia w blokach kompilatorem KretS, kret flow to-krets pokazuje równoważny kod KretS (każdy wiersz oznaczony // @flow id), kret flow blocks wypisuje katalog bloków (kretflow-blocks/1, EXPERIMENTAL).

Pliki

Plik
Flow/Restock.kflow
Flow/Restock.krs
Script/Main.krs
Script/Orders.krs
host-policy.json
plugin.kretl

Jak uruchomić

Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.

  1. kret check . --json — walidacja przepływu razem z projektem
  2. kret flow to-krets Flow/Restock.kflow — graf → KretS
  3. kret flow blocks — katalog bloków

Oczekiwany wynik

Projekt jest poprawny; wynik to-krets jest identyczny z Flow/Restock.krs z szablonu; katalog bloków ma format kretflow-blocks/1.

Najczęstszy błąd

Szukanie osobnego silnika przepływów: nie istnieje. Przepływ jest obniżany do KretS i wykonywany przez tę samą maszynę.

Otwórz cały rozdział ze źródłem →

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności