Формулировка проблемы: при выполнении сохранения данных по форме необходимо выполнять дополнительные действия для актуализации данных формы, которые не требуют изменения.
Решение: необходимо реализовать методы API, позволяющие выполнять частичное сохранение данных по форме.
Метод выполняет слияние данных по форме, хранящихся на сервере, с теми, которые переданы в параметрах метода. При этом создается новая версия данных формы, а значения компонентов, не указанных в параметрах метода, не изменяются.
URL: rest/api/asforms/data/merge
Тип: POST
В теле запроса передается json-объект вида:
{ "uuid": "<UUID данных по форме>", "eventProperties": { "paramA": "A", "paramB": "B" }, "data": [ { "id":"field1Code", //идентификатор компонента "value": "field1_value", //значение "type":"widgetType1" //тип компонента }, ..., { "id":"fieldNCode", "value": "fieldN_value", "type":"widgetTypeN" } ] }
Здесь:
uuid
- UUID данных по форме (параметр
запроса)
data
- массив json
с
данными по форме (параметр формы)
eventProperties
- json
с
параметрами для отправки в событие изменения данных по форме
(необязательный параметр)
Параметр
eventProperties
должен иметь формат "ключ - значение", ключ должен соответствовать регулярному выражению[a-zA-Z_][a-zA-Z_0-9]*
. КлючиformID
,dataUUID
зарезервированы, при передаче подобных ключей значения будут перезаписаны параметрами события.
Если в параметре data
передан id динамической
таблицы, то она будет перезаписана полностью. Для добавления
нового блока в динамическую таблицу используется метод
rest/api/asforms/data/append_table
.
В случае успешного выполнения возвращает код 200 с сообщением:
{ "errorCode": 0, "uuid": "<uuid данных по форме>" }
Альтернативный поток 1. Передан невалидный json. Сервер возвращает ошибку 400 с сообщением:
{ "errorCode": 3, "errorMessage": "Передан некорректный объект JSON" }
Альтернативный поток 2. Не передан или передан некорректный UUID данных по форме. Сервер возвращает ошибку 400 с сообщением:
{ "errorCode": 3, "errorMessage": "Передан некорректный параметр uuid" }
Альтернативный поток 3. При сохранении произошла ошибка на стороне сервера. Сервер возвращает ошибку 500 с сообщением:
{ "errorCode": 13, "errorMessage": "При сохранении призошла ошибка на стороне сервера" }
Метод добавляет новые блоки в конец динамической таблицы, при этом создается новая версия данных формы. С помощью метода нельзя изменить заголовок динамической таблицы.
URL: rest/api/asforms/data/append_table
Тип метода: POST
В теле запроса передается json-объект вида:
{ "uuid": "<UUID данных по форме>", "tableId": "<идентификатор таблицы>", "eventProperties": { "paramA": "A", "paramB": "B" }, "data": [ { "id":"field1-b1", //идентификатор компонента "value": "field1_value", //значение "type":"widgetType1" //тип компонента }, ..., { "id":"field1-bN", "value": "fieldN_value", "type":"widgetType1" } ] }
Здесь:
uuid
- UUID данных по форме (параметр
запроса)
tableId
- идентификатор таблицы
(обязательный параметр)
data
- массив json
с
добавляемыми данными.
eventProperties
- json
с
параметрами для отправки в событие изменения данных по форме
(необязательный параметр)
При выполнении метода номера -bN
в переданных
идентификаторах компонентов перезаписываются таким образом, чтобы
они соответствовали итоговым номерам добавленных строк таблицы.
В случае успешного выполнения возвращает код 200 с сообщением:
{ "errorCode": 0, "uuid": "<uuid данных по форме>" }
Альтернативный поток 1. Передан невалидный json. Сервер возвращает ошибку 400 с сообщением:
{ "errorCode": 3, "errorMessage": "Передан некорректный объект JSON" }
Альтернативный поток 2. Не передан или передан некорректный UUID данных по форме. Сервер возвращает ошибку 400 с сообщением:
{ "errorCode": 3, "errorMessage": "Передан некорректный параметр uuid" }
Альтернативный поток 3. Не передан или передан некорректный идентификатор таблицы. Сервер возвращает ошибку 400 с сообщением:
{ "errorCode": 3, "errorMessage": "Передан некорректный параметр tableId" }
Альтернативный поток 4. При сохранении произошла ошибка на стороне сервера. Сервер возвращает ошибку 500 с сообщением:
{ "errorCode": 13, "errorMessage": "При сохранении призошла ошибка на стороне сервера" }