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

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

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

Запрос (Request):

POST /api/v1/boi/upsert-with-id
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 Описание
boId (String): Идентификатор бизнес-объекта. Как получить идентификаторы БО?
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 выйдет ошибка):

{
  "boId": "gWmNg9ec3yI0wv4V",
  "boiId": "jJY02CrDmAQw1OMz",
  "fieldValues": {
    "UweuNeV8aG3~Tuvf": "14",
    "CV~4boDWzp2SpQ@U": "ASd",
    "84uP6Ml@gq87Fs2u": "123.0123",
    "eK3Owd6xaY7YCODc": "2023-12-23T14:30:45.123Z",
    "DybDzyYFS9csQLoJ": "cOtDX2KPeLv3nrjS" // идентификатор значения из выборки
  }
}

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

{
  "boId": "gWmNg9ec3yI0wv4V",
  "fieldValues": {
    "UweuNeV8aG3~Tuvf": "222",
    "CV~4boDWzp2SpQ@U": "AsdqQwe",
    "84uP6Ml@gq87Fs2u": "123.0123",
    "eK3Owd6xaY7YCODc": "2023-12-23T14:30:45.123Z",
    "DybDzyYFS9csQLoJ": "cOtDX2KPeLv3nrjS" // идентификатор значения из выборки
  }
}

Ответ (Response):

{
  "boiId": "Идентификатор инстанции БО",
  "boId": "Идентификатор БО",
  "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": "qgFMuNL8tRYyIX1W",
    "boId": "gWmNg9ec3yI0wv4V",
    "state": "ALL",
    "isTouched": false,
    "fieldValues": {
        "UweuNeV8aG3~Tuvf": {
            "apiValue": "222",
            "displayValue": "222",
            "type": "INPUT_NUMBER"
        },
        "DybDzyYFS9csQLoJ": {
            "apiValue": "cOtDX2KPeLv3nrjS",
            "displayValue": "New",
            "type": "RADIO_BUTTON_GROUP"
        },
        "eK3Owd6xaY7YCODc": {
            "apiValue": "2023-12-23T20:30:45.123+06",
            "displayValue": "2023-12-23 20:30",
            "type": "FULL_DATE"
        },
        "84uP6Ml@gq87Fs2u": {
            "apiValue": "123.0123",
            "displayValue": "123.0123",
            "type": "INPUT_NUMBER"
        },
        "CV~4boDWzp2SpQ@U": {
            "apiValue": "AsdqQwe",
            "displayValue": "AsdqQwe",
            "type": "INPUT_TEXT"
        }
    }
}