JX / Junexis MentorMentor w platformie →
Menu Mentora

Poznaj Mentora

WprowadzeniePierwszy systemMożliwościDostępność i ograniczenia

Mentor / zrozumienie systemu

Pierwszy system,
wyjaśniony.

Jedno źródło wiadomości, jeden przekaźnik i jedna część raportowa. Zobacz, jak Mentor odczytuje ich role z projektu.

ŹródłoembeddedWiadomośćMeasurementPrzekaźnikserverRaportreport

W kodzie poniżej źródło tworzy wiadomość z polem celsius: 21.0. Pokazujemy deklarowaną drogę danych, bez uruchamiania aplikacji docelowej.

Rzeczywista odpowiedź Mentora

Lokalna analiza CLI · 24 października 2026 · pełny tekst odpowiedzi, bez skracania

Zadania połączone w FirstSystem tworzą jedną drogę danych: TemperatureSource → MeasurementRelay → TemperatureReport.

Źródło danych: TemperatureSource. W projekcie przypisano je do środowiska embedded (część przeznaczona dla urządzenia).

Kod TemperatureSource deklaruje powtarzanie operacji co 2 s — taką rolę ma zapis every.

Wiadomość: TemperatureSource tworzy wiadomość typu Measurement i wysyła ją dalej. Wiadomość to zestaw nazwanych pól z danymi.

Pole device_id zawiera tekst "room-1".

W tej wiadomości pole celsius otrzymuje wpisaną w kodzie wartość 21.0.

Dane wysyłane przez TemperatureSource są w projekcie skierowane do MeasurementRelay.

Takie połączenie do przesyłania danych między zadaniami Junexis nazywa kanałem (chan).

Przekaźnik: MeasurementRelay. W projekcie przypisano je do środowiska server (część serwerowa).

MeasurementRelay odbiera dane oznaczone w kodzie jako readings. Pobrany element ma w kodzie nazwę reading. Program wysyła go dalej.

Dane wysyłane przez MeasurementRelay są w projekcie skierowane do TemperatureReport.

Raport: TemperatureReport. W projekcie przypisano je do środowiska report (część raportowa).

Granice tego wyjaśnienia:

To opis kodu, nie potwierdzenie działania urządzenia ani widoku w przeglądarce.

Nie sprawdzono czasu dotarcia danych, zmian wiadomości po drodze ani jednostki temperatury.

Nie ustalono wartości pól observed_at, sequence w wiadomości Measurement.

Otwórz odpowiedź jako tekst

Porównaj opis z kodem

Nazwy zadań i pól w odpowiedzi odnoszą się bezpośrednio do tego przykładu.

Kod pierwszego systemu — main.jnx
// Mój pierwszy system: jedno źródło, jeden serwer, jeden raport.
struct Measurement {
    device_id: Text
    sequence: Int
    celsius: Float
    observed_at: Time
}

task TemperatureSource() @embedded(esp32c3) -> chan<Measurement> {
    state sequence: Int = 0
    every 2s {
        sequence = sequence + 1
        send Measurement {
            device_id: "room-1",
            sequence: sequence,
            celsius: 21.0,
            observed_at: now()
        }
    }
}

task MeasurementRelay(readings: chan<Measurement>) @server -> chan<Measurement> {
    state last_sequence: Int = 0
    state last_celsius: Float = 0.0
    for reading in readings {
        last_sequence = reading.sequence
        last_celsius = reading.celsius
        send reading
    }
}

task TemperatureReport(readings: chan<Measurement>) @report {}

pipeline FirstSystem {
    use TemperatureSource -> MeasurementRelay
    use MeasurementRelay -> TemperatureReport
}

deployment FirstSystemLocations {
    target embedded { TemperatureSource @embedded(esp32c3) {} }
    target server { MeasurementRelay @server {} }
    target report { TemperatureReport @report {} }
}

Pobierz main.jnx

Skąd pochodzi ten wynik?

Kompilator wygenerował snapshot analizy 1.2. Mentor odczytał go i zwrócił odpowiedź CLI 1.3; pokazany tekst pochodzi z pola systemExplanation. Osobno sprawdzono zmianę wartości z 21.0 na 24.0 oraz zgodność ze starszym wejściem.

Ta próba nie obejmowała uruchomienia urządzenia ani prezentacji raportu w przeglądarce.

Metadane i sumy plików

Co możesz z tego odczytać?

Rozróżniasz zadania, miejsce ich działania i treść wiadomości. Potrafisz prześledzić drogę od źródła do raportu, a następnie wskazać, które informacje pochodzą z kodu i które wymagają obserwacji działającego systemu.

Zobacz, co jeszcze analizuje Mentor →