Датасеты в NodaLogic

Датасеты в NodaLogic – это механизм хранения справочной информации внешней системы – справочники (например товары, клиенты), документы (заявки, заказы и т.д.). Такого рода информацию объединяет то, что она только на чтение – т.е. она приходит на устройство для того, чтобы ее можно было использовать, но не изменять. Это могут быть большие объемы информации, система оптимизирована на это.

Другое важно отличие датасетов – они интегрированы в платформу. Т.е. уже есть готовые UI-элементы для работы с ними. Не нужно заботится о синхронизации, о организации экранных форм – это все есть из коробки.

По большей части датасеты описаны в этой статье к SimpleUI(откуда они перешли в NodaLogic) https://uitxt.readthedocs.io/ru/latest/datasets.html , а в этой статье покажу отличия.

Для того чтобы работать с датасетом, необходимо в конфигурации, в разделе Датасеты, добавить датасет. В элементе описываются его имя (то, как датасет потом будет указываться в источниках данных) хеш-индексы (индексы точного поиска по значению – создаются автоматическ и), полнотекстовые индексы, а также шаблон записи, где ключи данных датасета – в фигурных скобках, также можно использовать текст и HTML-разметку. Это то, как конкретная запись датасета будет отображаться в поле ввода датасета (DatasetField) И собственно все. Система берет на себя синхронизацию и хранение. О элементах отображения (списки, поля датасетов) написано в разделе UI/UX клиента. Стоит заметить о том как устроена синхронизация:

  1. Когда вы добавляете датасет, для него, также как и для класса, создается REST-API с помощью которого вы отправляете данные из внешней системы на сервер. Т.е. ваши справочники хранятся на сервере, а клиенты-устройства их скачивают.

API в общем виде такое:

Добавление/обновление записей

POST /api/config/<configuration_uid>/dataset/<dataset_name>/items

Получение всех записей

GET /api/config/<configuration_uid>/dataset/<dataset_name>/items

Delete all records

DELETE /api/config/<configuration_uid>/dataset/<dataset_name>/items

Delete one record

DELETE https://nmaker.pw/api/config/<configuration_uid>/dataset/<dataset_name>/items/item_id

  1. В датасете, котрый поступает на устройство, хранится GET-ссылка на api с котрой он должен скачать данные и по ней он при каждом запуске приложения обновляет датасет. Я упомянул этот момент потому, что тут хранится абсолютная ссылка и датасет на устройстве всегда будет обращаться по ней. Если вы перенесете конфигурацию на другой сервер, датасет будет все равно обращаться по той ссылке.