Задача [API97]: Частичное сохранение данных по форме

Формулировка проблемы: при выполнении сохранения данных по форме необходимо выполнять дополнительные действия для актуализации данных формы, которые не требуют изменения.

Решение: необходимо реализовать методы 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": "При сохранении призошла ошибка на стороне сервера"
    }