mybpm!
Скачать в формате: PDF pdf DOCX word

Создание или изменение инстанции бизнес-объекта (БО)

Предусловие: У вас должно иметься БО (Что это такое и как создать?)

Запрос (Request):

POST /api/v1/boi/upsert
Content-Type: application/json
API-TOKEN/TOKEN: your_token 

Входные данные:

{
  "boCode": "код бизнес-объекта",
  "boiId": "Идентификатор инстанции бизнес-объекта",
  "fieldValues": {
    "код поля 1": "новое значение 1",
    "код поля 2": "новое значение 2",
    "код поля 3": "новое значение 3"
  },
  "removeAfter": true,
  "fieldRefAdd": [{
    "fieldCode": "код поля 4",
    "boCode": "код БО который содержит в себе поле с кодом поля 4",
    "fieldRefUniqCode": "код уникального поля 1",
    "apiValues": [
      "значение 1 уникального поля 1",
      "значение 2 уникального поля 1"
    ]
  }, ...],
  "fieldRefRemove": [{
    "fieldCode": "код поля 4",
    "boCode": "код БО который содержит в себе поле с кодом поля 4",
    "fieldRefUniqCode": "код уникального поля 1",
    "apiValues": [
      "значение 3 уникального поля 1",
      "значение 4 уникального поля 1"
    ]
  }, ...]
}

ВНИМАНИЕ! Поле boiId можно не указывать, однако если вы укажите, то отработает как UPDATE и если такого boiId не будет, то выйдет ошибка. Поэтому у бизнес-объекта должно быть уникальное поле, тогда введенное значение если будет существовать обновиться, если нет добавиться. Дополнительно, если у вас нет уникального поля в БО, то будет отрабатывать как CREATE.

Атрибут входного JSON Описание
boCode (String): Код бизнес-объекта. Как получить boCode?
boiId (String): Идентификатор инстанции бизнес-объекта. Как получить boiId?
fieldValues.key (String): Код определенного поля внутри БО. Как получить Код Поля?
fieldValues.value (String): Значение определенного поля внутри БО. Какие значения для каких полей надо вводить?
removeAfter (Boolean): Указывает что будет раньше добавление или удаление новых инстанции в поле БО. По умолчанию false значит удаление потом добавление.
fieldRefAdd (Массив объектов): Для добавления ссылок в поле БО по значениям уникальных полей вложенного БО
fieldRefRemove (Массив объектов): Для удаления ссылок из поля БО по значениям уникальных полей вложенного БО
fieldRefAdd.fieldCode (String): Код поля БО. Смотрите выше как получить код поля?
fieldRefAdd.boCode (String): Если поле с fieldCode находится внутри СО, то данное поле обязательное к заполнению, так как она будет показывать к какому БО относится ваше поле.
fieldRefAdd.fieldRefUniqCode (String): Код уникального поля БО на которое ссылается ваше поле. Смотрите выше как получить код поля?
fieldRefAdd.apiValues (Массив String): Значения уникальных полей которы надо добавить. Если в fieldRefRemove, то удалить.

Примечание: Вы можете указывать несколько уникальных полей одного и того же БО.

Пример:

Если указывать boiId, то будет работать как Update (Если указать не существующий boiId выйдет ошибка):

{
  "boCode": "Customer_Orders",
  "boiId": "jJY02CrDmAQw1OMz",
  "fieldValues": {
    "ORDER_ID": "14",
    "CUSTOMER_NAME": "Temirlan",
    "ORDER_TOTAL": "123.0123",
    "ORDER_DATE": "2023-11-23T14:30:45.123Z",
    "ORDER_STATUS": "1wgmhNoiLSDpyXY9" // идентификатор значения из выборки
  }
}

Если не указывать boiId, то в зависимости от значения уникального поля в вашем БО будет либо Update (если значение существует) либо Create (если не существует):

{
  "boCode": "Customer_Orders",
  "fieldValues": {
    "ORDER_ID": "14",
    "CUSTOMER_NAME": "Temirlan",
    "ORDER_TOTAL": "123.0123",
    "ORDER_DATE": "2023-11-23T14:30:45.123Z",
    "ORDER_STATUS": "1wgmhNoiLSDpyXY9"
  }
}

Ответ (Response):

{
  "boiId": "Идентификатор инстанции БО",
  "boCode": "Kод БО",
  "state": "Одно из значений: ALL, REMOVED, ARCHIVED, DEV",
  "isTouched": "Прочитано ли текущим пользователем данная инстанция? (true/false)",
  "fieldValues": {
    "код поля 1": {
      "apiValue": "значение поля 1",
      "displayValue": "значение поля для отабражения 1",
      "type": "Тип поля" // Подробнее о типах поля можете узнать по ссылке ниже
    },
    "код поля 2": {
      "apiValue": "значение поля 2",
      "displayValue": "значение поля для отабражения 2",
      "type": "Тип поля" // Подробнее о типах поля можете узнать по ссылке ниже
    },
    "код поля 3": {
      "apiValue": "значение поля 3",
      "displayValue": "значение поля для отабражения 3",
      "type": "Тип поля" // Подробнее о типах поля можете узнать по ссылке ниже
    }
  }
}

Значения поля state:

1) ALL - Рабочее состояние записи

2) REMOVED - Запись удалена

3) ARCHIVED - Запись в архиве

4) DEV - Запись используется для тестирования процессов

Пример:

{
    "boiId": "jJY02CrDmAQw1OMz",
    "boCode": "Customer_Orders",
    "state": "ALL",
    "isTouched": true,
    "fieldValues": {
        "ORDER_ID": {
            "apiValue": "14",
            "displayValue": "14",
            "type": "INPUT_NUMBER"
        },
        "ORDER_DATE": {
            "apiValue": "2023-11-23T20:30:45.123+06",
            "displayValue": "2023-11-23 20:30",
            "type": "FULL_DATE"
        },
        "CUSTOMER_NAME": {
            "apiValue": "Temirlan",
            "displayValue": "Temirlan",
            "type": "INPUT_TEXT"
        },
        "ORDER_STATUS": {
            "apiValue": "1wgmhNoiLSDpyXY9",
            "displayValue": "Delivered",
            "type": "RADIO_BUTTON_GROUP"
        },
        "ORDER_TOTAL": {
            "apiValue": "123.0123",
            "displayValue": 123.0123",
            "type": "INPUT_NUMBER"
        }
    }
}