IN Migration Kafka BoiInputFieldBo Example
Существует два способа IN миграции вложенных бизнес-объектов через Kafka: стандартный и рекурсивный.
Стандартный способ позволяет переносить по одной записи за раз, и для производительности лучше сначала перенести вложенный bo, а затем основной bo.
Рекурсивный способ позволяет эффективно переносить множество записей одновременно, но при этом необходимо создать древовидную структуру.
Ниже вы можете увидеть примеры каждого подхода:
Стандартный способ
1) Добавляем школу
{
"recordId": "random-value",
"externalId": "MVLFsYhLv5eVbkXE",
"boCode": "school",
"fields": [
{
"code": "number",
"apiValue": "133"
},
{
"code": "name",
"apiValue": "среднеобразовательная школа"
}
],
"boFields": [
{
"fieldCode": "class",
"toBoCode": "class",
"toFieldCode": "class_id",
"apiValue": "1"
}
],
"state": "ACTUAL"
}
2) Добавляем класс
{
"recordId": "random-value",
"externalId": "MVLFsYhLv5eVbkXE",
"boCode": "class",
"fields": [
{
"code": "number",
"apiValue": "9G"
},
{
"code": "name",
"apiValue": "Класс №"
},
{
"code": "class_id",
"apiValue": "1"
}
],
"boFields": [
{
"fieldCode": "student",
"toBoCode": "student",
"toFieldCode": "student_id",
"apiValue": "1"
},
{
"fieldCode": "student",
"toBoCode": "student",
"toFieldCode": "student_id",
"apiValue": "2"
}
],
"state": "ACTUAL"
}
3) Добавляем студентов
{
"recordId": "random-value",
"externalId": "7fq@eZ1kpg0iwHVV",
"boCode": "student",
"fields": [
{
"code": "name",
"apiValue": "Армэн"
},
{
"code" : "surname",
"apiValue" : "Турсынбек"
},
{
"code" : "student_id",
"apiValue" : "1"
}
],
"state": "ACTUAL"
}
{
"recordId": "random-value",
"externalId": "Iqn5iMZcg~M1I5o0",
"boCode": "student",
"fields": [
{
"code": "name",
"apiValue": "Азамат"
},
{
"code" : "surname",
"apiValue" : "Утелхан"
},
{
"code" : "student_id",
"apiValue" : "2"
}
],
"state": "ACTUAL"
}
Рекурсивный способ
- Добавляем Школу -> Вкладываем класс -> Вкладываем учеников
{
"recordId": "random-value",
"externalId": "MVLFsYhLv5eVbkXE",
"boCode": "school",
"fields": [
{
"code": "number",
"apiValue": "133"
},
{
"code": "name",
"apiValue": "среднеобразовательная школа"
}
],
"boFields": [
{
"fieldCode": "class",
"boiInput": {
"recordId": "random-value",
"externalId": "MVLFsYhLv5eVbkXE",
"boCode": "class",
"fields": [
{
"code": "number",
"apiValue": "9G"
},
{
"code": "name",
"apiValue": "Класс №"
},
{
"code": "class_id",
"apiValue": "1"
}
],
"boFields": [
{
"fieldCode": "student",
"boiInput": {
"recordId": "random-value",
"externalId": "7fq@eZ1kpg0iwHVV",
"boCode": "student",
"fields": [
{
"code": "name",
"apiValue": "Армэн"
},
{
"code": "surname",
"apiValue": "Турсынбек"
},
{
"code": "student_id",
"apiValue": "1"
}
],
"boFields": [],
"state": "ACTUAL"
}
},
{
"fieldCode": "student",
"boiInput": {
"recordId": "random-value",
"externalId": "Iqn5iMZcg~M1I5o0",
"boCode": "student",
"fields": [
{
"code": "name",
"apiValue": "Азамат"
},
{
"code": "surname",
"apiValue": "Утелхан"
},
{
"code": "student_id",
"apiValue": "2"
}
],
"state": "ACTUAL"
}
}
],
"state": "ACTUAL"
}
}
],
"state": "ACTUAL"
}