Синхронизация узлов

Передача узлов на сервер через API

Класс, объявленный в конфигурации, автоматически имеет API, описание которого можно взять в конструкторе (оно там сгенерировано с учетом идентификаторов), а в общем виде оно такое:

Добавление/обновление узлов на сервере

POST /api/config/<config_uid> /node/<class_name>

[{
   "_id": "node_id",
   "field1": "value1",
   "field2": "value2"
}]

Вернуть все узлы класса

GET /api/config/<config_uid>/node/<class_name>

Зарегистрировать все узлы в комнате

POST /api/config/<config_uid>/node/<class_name>/register/<room_uid>

Зарегистрировать определенные узлы в комнате

POST /api/config/<config_uid>/node/<class_name>/register/<room_uid>

["node_id_1","node_id_2"]

Working with specific node

Get specific node : GET    /api/config/<config_uid>/node/<class_name>/<node_id>

Update _data in specific node : PUT /api/config/<config_uid>/ /node/<class_name>/<node_id>

Delete specific node : DELETE /api/config/<config_uid>/node/<class_name>/<node_id>

Как видно, при передаче через API, класс и конфигурация определены в запросе, т.е. предполагается, что на момент обращения на API конфигурация с классами уже есть на сервере. Тоже самое на устройстве – register зарегистрирует узлы к передаче на устройства, но на устройстве должен быть класс этих узлов, иначе узлы не будут приняты. Т.е. конфигурация с соответствующими классами должна стоять на устройстве. Форматы передачи данных через файлы включают сами данные узла и ссылку на класс, который можно откуда то скачать. Как вариант, если совсем нет интернета, то можно сначала поставить конфигурацию в репо, а потом принять файлы с узлами.

Передача данных между сервером и устройствами через Rooms

Для того, чтобы оперативно получать данные с сервера, мобильные клиенты группами объединяются в так называемые «комнаты» -постоянно поддерживаемое WebSocket-соединение. Для этого на сервере надо создать обычную комнату и присоединить к ней устройства путем сканирования QR-кода комнаты

Через этот механизм работает:

  • передача узлов на сервер

  • выполнение методов

API описано в предыдущем разделе. Для того, чтобы устройства получили объекты, эти объекты должны быть «зарегистрированы»

Передача узлов на устройство через файлы

Если нет интернета либо не хочется использовать rooms, можно передать файлы на устройство люым способом и либо «Открыть» либо «Поделиться» с NodaLogic.

Это должен быть *.nl файл особого формата, в обязательном порядке содержащий ссылку на класс в формате <uid конфигурации>$<имя класса> и _data.

Пример такого формата:

[{
"_id":"1010",
"_class":"885a12de-2bb5-4222-a671-9a7286902938$MyOrder",
"_data":{
"order_number":"00-5000",
"_cover":[["@order_number"]]
}
}
]