# Edycja modelu danych

## Edytor modelu danych

Do edytora modelu danych przechodzimy wybierając "Model danych" na ekranie głównym aplikacji w Eximee Designer

<figure><img src="/files/dTbABT36RhCrCfuQRNNH" alt=""><figcaption><p><em><strong>Ilustracja 1.</strong> Zakładka "Model danych" aplikacji low-code</em></p></figcaption></figure>

Edytor modelu danych podzielony jest na trzy zakładki:

* *Struktura,* gdzie zarządzamy strukturą modelu oraz uzupełniamy parametry węzłów,
* *Źródła danych*, gdzie definiujemy i parametryzujemy źródła danych,
* *Źródło*, gdzie edytujemy JSON będący źródłową reprezentacją modelu - funkcjonalność dla zaawansowanych użytkowników.

{% hint style="info" %}
Jeżeli Twoja aplikacja nie posiada jeszcze modelu danych możesz go utworzyć klikając przycisk "Inicjalizuj model danych".
{% endhint %}

## Struktura

Struktura modelu danych prezentowana jest w formie drzewa na lewym panelu edytora. Gałęzie drzewa można zwijać i rozwijać.

<figure><img src="/files/9JnPmmIMJw6UuDJQruoq" alt=""><figcaption><p><em><strong>Ilustracja 2</strong>. Prezentacja struktury modelu danych</em></p></figcaption></figure>

Zaznaczenie węzła drzewa powoduje automatyczne filtrowanie węzłów na liście po prawej stronie.

<figure><img src="/files/xgilgb4zh12jJyroFDoY" alt=""><figcaption><p><em><strong>Ilustracja 3.</strong> Zaznaczenie węzła w edytorze modelu danych</em></p></figcaption></figure>

Na górze listy węzłów wypisany jest klucz stanowiący aktualny filtr widoku: *"client.surname"* w tym przypadku.

## Parametryzacja elementów modelu

### Węzeł

<figure><img src="/files/EKSDFKzzp5r8EYrfv76P" alt=""><figcaption><p><em><strong>Ilustracja 3.</strong> Edycja węzła modelu</em></p></figcaption></figure>

W sekcji edycji węzła modelu można edytować klucz oraz dokumentację (*"opis"*) obiektu. Można również oznaczyć obiekt jako tablica.

{% hint style="info" %}
Przy kluczu obiektu znajduje się przycisk kopiujący klucz do schowka systemowego.
{% endhint %}

W menu kontekstowym znajduje się opcja usuwania węzła razem z jego potomkami.

Aby dodać pole do węzła należy kliknąć przycisk *"Dodaj pole"*.

### Pole

Sekcja pola w modelu danych posiada dodatkowo możliwość podania domyślnej wartości dla pola.

<figure><img src="/files/Pz3qxOxMXUloRW4HLRJ6" alt=""><figcaption><p><em><strong>Ilustracja 4.</strong> Pole w modelu</em></p></figcaption></figure>

### Źródło danych

Kliknięcie na chips źródła danych lub ikonę ołówka obok otwiera szufladę z listą źródeł danych i możliwością edycji użycia (kolejność źródeł, parametry źródła, mapowanie wartości).

<figure><img src="/files/xbNG112IwXIP2vCQ0GCF" alt=""><figcaption><p><em><strong>Ilustracja 5.</strong> Użycie źródła danych</em></p></figcaption></figure>

Domyślnie, dla każdego **liścia** drzewa modelu danych (czyli pola które nie posiada dalszych pod-pól) platforma automatycznie dodaje specjalne źródło danych typu **ValueMap**. Jest to wbudowane źródło, które przechowuje wartość pola w strukturze pamięci aplikacji (w tzw. mapie wartości wniosku) – można to traktować jako odpowiednik zmiennej sesyjnej przechowującej dane w kontekście całej aplikacji (formularza). Domyślne mapowanie ValueMap wykorzystuje pełną ścieżkę kluczy danego pola jako klucz w tej wewnętrznej mapie (np. dla pola `kraj` znajdującego się wewnątrz obiektu `daneOsobowe` klucz w mapie wartości będzie `daneOsobowe.kraj`). Dzięki temu po związaniu pól formularza z modelem, **nie jest wymagane pisanie dodatkowego kodu do zapisywania wprowadzonych danych** – wartość wprowadzona przez użytkownika zostanie automatycznie umieszczona pod odpowiednim kluczem w pamięci modelu.

#### Źródło danych - defensywna logika i puste wartości

Źródła modelu danych nie mogą zakładać deterministycznej kolejności wywołań ani tego, że wszystkie dane wejściowe są już dostępne. Platforma może wywołać źródło wcześniej (np. przy ustalaniu krotności dynamicznych sekcji formularza lub modelu), nawet jeśli dane pole nie jest jeszcze używane wprost w formularzu czy procesie.

Dlatego źródła danych muszą być projektowane defensywnie: w sytuacji braku danych, danych niekompletnych lub „jeszcze niegotowych” powinny zwracać bezpieczne, puste wartości (null, pustą listę, pusty obiekt) i nie zgłaszać wyjątków. Pusta wartość oznacza: na tym etapie nie potrafię określić wartości i pozwala zadziałać kolejnym źródłom w kaskadzie, w szczególności źródłom domyślnym (np. ValueMap lub domyślne wartości na definicji pola).

Wyjątki należy rezerwować wyłącznie dla rzeczywistych błędów technicznych (np. błędów komunikacji lub niepoprawnej konfiguracji), które powinny przerywać działanie systemu (przerwanie formularza, wycofanie transakcji procesu itp.), a nie dla stanów przejściowych procesu.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.eximee.com/budowanie-aplikacji/model-danych/edycja-modelu-danych.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
