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

IN Migration Kafka концепт

Каким образом производиться миграций через кафку?

Миграция через кафку производиться таким способом, что в кафке создаётся топик с каким-то названием которого не встречается в кафке на данный момент, далее в этот топик скидываются данные различных Бизнес Объектов(БО) в виде строк, которые содержит в себе JSON определенного ниже описанного формата, дальше этот топик регистрируется в системе и после регистраций в системе, система обращается в данный топик и начинает загружать данные в себе базу данных.

Здесь описано это детальней.

Структура JSON, каким оно должно быть.

Структура JSON должен соответствовать ниже приведённому примеру.

{
"recordId": "12345",
"externalId": "bfsseVCjGC225bM@",
"id": "dgL9~4keReK7Z1qi",
"boCode": "BO",
"fields": [
    {
    "code": "textField",
    "apiValue": "someValue"
    },
    {
    "code": "textField2",
    "apiValue": "someValue2"
    }
],
"boFields": [
    {
        "fieldCode": "boTextField",
        "toBoCode": "BO2",
        "toFieldCode": "textFieldOfBO2",
        "apiValue": "015252634519"
    },
    {
        "fieldCode": "boTextField",
        "boiInput": {
            "recordId": "12345",
            "externalId": "bfsseVCjGC225bM@",
            "id": "dgL9~4keReK7Z1qi",
            "boCode": "BO",
            "fields": [
            {
                "code": "textField",
                "apiValue": "someValue"
            },
            {
                "code": "textField2",
                "apiValue": "someValue2"
            }
            ],
            "boFields": {...}
        }
    }
],
"state": "ACTUAL"
}

Подробнее о полях

recordId:Строка   - Идентификатор данной записи, он должен быть уникальным в рамках всего топика 
                    он используется для того чтобы запись обрабатывалась всего одни раз его затем,
                    система его запоминает и при повторной записи система его игнорирует.  

id:Строка         - Идентификатор инстанции бизнес-объекта внутренний для платформы MyBPM. Если он указан, то
                    ищется запись по этому идентификатору. Если находиться, то происходит обновление данных.
                    Иначе генерируется ошибка. Если этот идентификатор не указан, то используется идентификатор
                    externalId

externalId:Строка - Идентификатор инстанции БО, который используется во внешней системе (которая поставляет данные).
                    Если внутренний идентификатор не используется, то используется данный идентификатор для поиска
                    инстанции. В таком случае если инстанция находиться, то происходит обновление данных. Если не
                    находиться, то создаётся новая инстанция.

boCode:Строка     - Код бизнес объекта в которой, должны записаться данные.

fields:Массив     - Поля со значениями для мигрированния .
    code:Строка        - Код поля в бизнес объекте .
    apiValue:Строка    - Значение из REST API.

boFields:Массив   - Бизнес-поля для миграции вложенных бизнес-объектов 
    Стандартный подход:{
        fieldCode:Строка   - Код поля, который принадлежит с кодом boCode.
        toBoCode:Строка    - Код бизнес объекта на которое указывает данное поле.
        toFieldCode:Строка - Код поля у бизнес объекта toBoCode. Это поле должно быть уникальное 
        apiValue:Строка    - Значение поле toFieldCode у бизнес объекта с кодом toBoCode.
    }
    Рекурсивный подход:{
        fieldCode:Строка   - Код поля, который принадлежит с кодом boCode.
        boiInput:Строка    - вложенный JSON другого BoiInput. 
    }

state - Состояние записи могут быть (ACTUAL, REMOVED, ARCHIVED, TEST), может отсутствовать, 
        если записи нету то state станет ACTUAL, а если запись есть то ничего не измениться 
    ACTUAL:Строка      - Это актуальная запись которая доступна для работы.
    REMOVED:Строка     - Удалённая запись.
    ARCHIVED:Строка    - Архивированная запись.
    TEST:Строка        - Запись предназначена для режима тестирования