Data Mapping

Описание схем данных, передачи параметров между коннекторами.

DataMapping предназначен для того чтобы иметь возможность передать коннекторам входные данные, которые необходимы им для выполнения определенной бизнес логики, а также описать формат данных, которые могут быть переданы следующим коннекторам, после выполнения текущего.

DataMapping описывается с помощью 3 свойств коннектора:

  • Methods - массив всех доступных методов коннектора

  • dataMapping - схема входящих и исходящих данных

  • transformRules - объект описывающий трансформацию данных между коннекторами (формируется автоматически при соединении коннекторов в визуальном редакторе процесса)

Methods

Connector
{
    "methods": [
        {
            "title": "Название метода",
            "value": "default",
            "http_methods": []
        }
    ]
    ...other connector properties...
}

DataMapping

dataMapping - объект который описывает все схемы входящих и исходящих данных для всех методов.

Connector
{
    "dataMapping": {
        "input": {},
        "output": {}
    }
    ...other connector properties...
}

Структура dataMapping.input и dataMapping.output идентична.

Поддерживаемые типы данных

При описании схемы данных, Вы можете использовать следующие типы данных:

  • string

  • array

  • object

  • number

  • null

  • boolean

  • any

Поддерживаемые типы валидации

При описании схемы данных и перечислении свойств, можно задать установить правила валидации для значений передаваемых данных.

  • required - если установлено true, то параметр должен обязательно передаваться в данных

  • enum - массив допустимых значений

  • min - минимальная длина строки для string или минимальное значение для number

  • max - максимальная длина строки для string или максимальное значение для number

Example
{
    "username": {
        "type": "string",
        "required": true,
        "min": 6,
        "max": 20
    },
    "role": {
        "type": "string",
        "required": true,
        "enum": ["user", "admin"]
    },
    "age": {
        "type": "number",
        "required": true,
        "min": 18,
        "max": 100
    }
}

Как описать схему для объекта

При необходимости описания схемы объекта необходимо использовать свойство properties

{
    "some_object": {
        "type": "object",
        "properties": {
            "prop1": {
                "type": "string"
            }
        }
    }
}

Данная схема позволяет описать объект some_object, который будет иметь необходимый формат:

{
    "some_object": {
        "prop1": "some value"
    }
}

Как описать схему данных для элементов массива

{
    "users": {
        "type": "array",
        "items": {
            "user_id": {
                "type": "number"
            },
            "username": {
                "type": "string"
            }
        }   
    }
}

Данная схема позволяет описать элементы массива user, которые будут иметь необходимый формат:

{
    users: [
        {
            "user_id": 1,
            "username": "John Smith"
        },
        {
            "user_id": 2,
            "username": "Teareza Mayer"
        } 
    ]
}

Входящие схемы данных (dataMapping.input)

{
    "signin": {
        "type": "object",
        "properties": {
            "username": {
                "type": "string",
                "min": 6,
                "max": 20
            },
            "password": {
                "type": "string",
                "min": 8,
                "max": 32
            }
        }
    }
}

Объект dataMapping.input - описывает входящие схемы данных в зависимости от выбранного метода коннектора. В описанной схеме приведен пример, когда входными данными являются username и password для метода со значением signin

При выполнении коннектора процессом, если вывести в консоль объект ctx.data будет отображен следующий объект:

console.log(ctx.data);
{
    "username": "John Smith",
    "password": "very_secret_password"
}

Пользовательский UI для установки значений

При описании входящей схемы есть возможность указать какие поля могут отображаться в настройках коннектора для предварительной установки значений.

Внимание. Указание Presenter будет работать только для полей описанных в корне схемы, для вложенных объектов данный параметр будет проигнорирован.

Для того чтобы пользователь в настройках коннектора мог ввести значение для любого описанного во входящей схеме параметра, необходимо в схеме для этого параметра описать секцию presenter.

{
    "title" : "",
    "desc" : "",
    "component" : "date",
    "visible" : {},
    "tags" : [],
    "order" : 0,
    "multi" : false,
    "default" : null,
    "values" : []
}

Исходящие схемы данных (dataMapping.output)

{
    "signin": {
        "type": "object",
        "properties": {
            "user_id": {
                "type": "string",
                "required": true
            }
        }
    }
}

Объект dataMapping.output - описывает исходящие схемы данных в зависимости от выбранного метода коннектора. В описанной схеме приведен пример, когда выходными данными являются user_id для метода со значением signin

После того как вы описали исходящую схему в коде коннектора необходимо вызвать метод ctx.setData и установить контекст данных для следующих коннекторов, для того чтобы эти данные были доступны следующим коннекторам. Более подробную информацию по работе с контекстом процесса смотрите по ссылке.

TransformRules

Свойство описывающее правила преобразование данных между коннекторами. Данные правила автоматически формируются при соединении данных разных коннекторов между собой в визуальном редакторе процесса.

Connector
{
    "transformRules": {
        <next_conector_id>: {
            "user.id": "userId"
        }
    }
    ... other connector properties....
}

При описании таким правилом, данные параметра user.id от исполняемого коннектора к следующему будут переданы ввиде { userId: "value" }

Last updated