Data Mapping
Описание схем данных, передачи параметров между коннекторами.
DataMapping предназначен для того чтобы иметь возможность передать коннекторам входные данные, которые необходимы им для выполнения определенной бизнес логики, а также описать формат данных, которые могут быть переданы следующим коннекторам, после выполнения текущего.
DataMapping описывается с помощью 3 свойств коннектора:
Methods - массив всех доступных методов коннектора
dataMapping - схема входящих и исходящих данных
transformRules - объект описывающий трансформацию данных между коннекторами (формируется автоматически при соединении коннекторов в визуальном редакторе процесса)
Methods
{
"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 - объект который описывает все схемы входящих и исходящих данных для всех методов.
{
"dataMapping": {
"input": {},
"output": {}
}
...other connector properties...
}
Название
Тип
Описание
input
object
Объект с описанием входящих схем данных.
output
object
Объект с описание исходящих схем данных
Поддерживаемые типы данных
При описании схемы данных, Вы можете использовать следующие типы данных:
string
array
object
number
null
boolean
any
Поддерживаемые типы валидации
При описании схемы данных и перечислении свойств, можно задать установить правила валидации для значений передаваемых данных.
required - если установлено true, то параметр должен обязательно передаваться в данных
enum - массив допустимых значений
min - минимальная длина строки для string или минимальное значение для number
max - максимальная длина строки для string или максимальное значение для number
{
"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 будет отображен следующий объект:
{
"username": "John Smith",
"password": "very_secret_password"
}
Пользовательский UI для установки значений
При описании входящей схемы есть возможность указать какие поля могут отображаться в настройках коннектора для предварительной установки значений.
Внимание. Указание Presenter будет работать только для полей описанных в корне схемы, для вложенных объектов данный параметр будет проигнорирован.
Для того чтобы пользователь в настройках коннектора мог ввести значение для любого описанного во входящей схеме параметра, необходимо в схеме для этого параметра описать секцию 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
TransformRules
Свойство описывающее правила преобразование данных между коннекторами. Данные правила автоматически формируются при соединении данных разных коннекторов между собой в визуальном редакторе процесса.
{
"transformRules": {
<next_conector_id>: {
"user.id": "userId"
}
}
... other connector properties....
}
При описании таким правилом, данные параметра user.id от исполняемого коннектора к следующему будут переданы ввиде { userId: "value" }
Last updated
Was this helpful?