IN Migration Kafka для Системных БО
Миграция через кафку работает для следующих системных БО:
- Пользователи
- Рабочая группа
- Департамент
Примеры использования:
Подготовка
- Создадим следующее БО с полями: Текстовое поле и Вложенное БО (Пользователи, Департамент, Рабочая группа):
- Выберем эти поля с вложенными системными БО в настройках IN Миграции:
- Создадим пользователя c любым email:
1. Создание инстанции БО с вложенным полем БО "Пользователи" с добавлением существующего пользователя по уникальному полю "email"
{
"externalId": "bfsseVCjGC225bM@",
"id": "dgL9~4keReK7Z1qi",
"boCode": "BO",
"boFields": [
{
"fieldCode": "Polzovateli",
"toFieldCode": "email",
"apiValue": "qwe@qwe.qwe"
}
],
"state": "ACTUAL"
}
2. Миграция инстанции БО вложенной инстанцией БО "Пользователи" который привязан рекурсивно
{
"externalId": "cfsseVCjGC225bM@",
"id": "cgL9~4keReK7Z1qi",
"boCode": "BO",
"boFields": [
{
"fieldCode": "Polzovateli",
"boiInput": {
"id": "~7TZ9zwn9P3Tj7Xx",
"externalId": "fgL9~4keReK7Z1qi",
"boCode": "Person",
"fields": [
{
"code": "name",
"apiValue": "Temirlan"
},
{
"code": "surname",
"apiValue": "Zhumagulov"
},
{
"code": "email",
"apiValue": "timaz@gmail.com"
},
{
"code": "status",
"apiValue": "ACTIVE"
},
{
"code": "accessLevel",
"apiValue": "ACCESS_ALLOWED"
}
],
"state": "ACTUAL"
}
}
],
"state": "ACTUAL"
}
Как видно на примере К БО полю "Пользователи" добавился пользователь, который был создан через миграцию:
3. Миграция инстанции рабочей группы
{
"externalId": "zfsseVCjGC225bM@",
"id": "zgL9~4keReK7Z1qi",
"boCode": "PersonGroup",
"fields": [
{
"code": "name",
"apiValue": "Моя группа #1"
}
],
"boFields": [
{
"fieldCode": "header",
"toFieldCode": "email",
"apiValue": "timaz@gmail.com"
},
{
"fieldCode": "users",
"toFieldCode": "email",
"apiValue": "qwe@qwe.qwe"
}
],
"state": "ACTUAL"
}
4. Миграция инстанции Департамента
{
"externalId": "hfsseVCjGC225bM@",
"id": "hgL9~4keReK7Z1qi",
"boCode": "Department",
"fields": [
{
"code": "name",
"apiValue": "Мой департамент"
}
],
"boFields": [
{
"fieldCode": "header",
"toFieldCode": "email",
"apiValue": "timaz@gmail.com"
},
{
"fieldCode": "person",
"toFieldCode": "email",
"apiValue": "qwe@qwe.qwe"
}
],
"state": "ACTUAL"
}
5. Миграция инстанции Департамента с родительским подразделением вложенным рекурсивно
{
"externalId": "kfsseVCjGC225bM@",
"id": "kgL9~4keReK7Z1qi",
"boCode": "Department",
"fields": [
{
"code": "name",
"apiValue": "Вложенный департамент"
}
],
"boFields": [
{
"fieldCode": "header",
"toFieldCode": "email",
"apiValue": "timaz@gmail.com"
},
{
"fieldCode": "person",
"toFieldCode": "email",
"apiValue": "qwe@qwe.qwe"
},
{
"fieldCode": "parent",
"boiInput": {
"externalId": "pfsseVCjGC225bM@",
"id": "pgL9~4keReK7Z1qi",
"boCode": "Department",
"fields": [
{
"code": "name",
"apiValue": "Главный департамент"
}
],
"boFields": [
{
"fieldCode": "header",
"toFieldCode": "email",
"apiValue": "alikhan@gmail.com"
},
{
"fieldCode": "person",
"toFieldCode": "email",
"apiValue": "yerkebulan@gmail.com"
}
],
"state": "ACTUAL"
}
}
],
"state": "ACTUAL"
}
Однако пользователей с email-ами (alikhan@gmail.com, yerkebulan@gmail.com) в системе нет, поэтому мы их добавим через миграцию:
{
"id": "~8TZ9zwn9P3Tj7Xx",
"externalId": "~gL9~4keReK7Z1qi",
"boCode": "Person",
"fields": [
{
"code": "name",
"apiValue": "Alikhan"
},
{
"code": "surname",
"apiValue": "MyBPM"
},
{
"code": "email",
"apiValue": "alikhan@gmail.com"
},
{
"code": "status",
"apiValue": "ACTIVE"
},
{
"code": "accessLevel",
"apiValue": "ACCESS_ALLOWED"
}
],
"state": "ACTUAL"
}
После отправки сообщения, отправляем это сообщение для добавления пользователя (
{
"id": "~9TZ9zwn9P3Tj7Xx",
"externalId": "~mL9~4keReK7Z1qi",
"boCode": "Person",
"fields": [
{
"code": "name",
"apiValue": "Yerkebulan"
},
{
"code": "surname",
"apiValue": "MyBPM"
},
{
"code": "email",
"apiValue": "yerkebulan@gmail.com"
},
{
"code": "status",
"apiValue": "ACTIVE"
},
{
"code": "accessLevel",
"apiValue": "ACCESS_ALLOWED"
}
],
"state": "ACTUAL"
}
Особенности
- В отличии от общих БО, инстанции системных БО не могут быть пустыми, то есть иметь 0 изменении по полям