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"
}
