Data Mapping

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

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

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

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

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

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

Methods

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

Название

Тип

Описание

title

string

Название метода, которое будет отображаться в списке методов при открытии настроек коннектора.

value

string

Значение метода. При выборе метода, данное значение будет установлено в параметр method коннектора в процессе и далее будет доступно через ctx.connector.method

http_methods

array

Если коннектор является вебхуком (type: "webservice"), то в данном массиве необходимо перечислить поддерживаемые HTTP методы вебхука. Например: ["GET", "POST", "PUT", "DELETE"]

DataMapping

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

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

Название

Тип

Описание

input

object

Объект с описанием входящих схем данных.

output

object

Объект с описание исходящих схем данных

Структура 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.

Название

Тип

Описание

component

string

UI компонент, который необходим для работы с описываемым параметром. Поддерживаются следующие компоненты: string, date, boolean, code, select

title

string

Название (label) для UI компонента

desc

string

Краткое описание параметра, предназначено как информативная подсказка для чего предназначен параметр. Отображается при наведении курсора на параметр коннектора.

visible

object

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

{ "other_prop": ["value1"] }

order

integer

Сортировка в компонентов в секции General настроек коннектора.

multi

boolean

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

default

any

Значение по умолчанию для компонента

values

array

Массив значений для компонента select. Каждый элемент массива это объект { title: "", value: "" } который будет отображаться в списке компонента select.

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

Was this helpful?