Объект
Тип метаданных
object
Библиотека компонентов
http://n2oapp.net/framework/config/schema/object-4.0
<object>
Определение объекта.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
name | Строка | Наименование объекта | |
table-name | Строка | Наименование таблицы БД, ассоциированной с объектом | |
service-class | Строка | Класс сервиса, выполняющего действия над объ ектом | |
service-name | Строка | Имя сервиса, выполняющего действия над объектом | |
app-name | Строка | Имя приложения, содержащего объект | |
module-name | Строка | Имя модуля, содержащего объект |
Тело
<fields> - Поля объекта
<operations> - Список операций над объектом
<validations> - Список валидаций операции
Пример
<object xmlns="http://n2oapp.net/framework/config/schema/object-4.0"
name="Мой объект"
table-name="mytable"
entity-class="com.example.MyEntity">
...
</object>
<fields>
Поля объекта.
Тело
<field> - Простое поле объекта
<reference> - Составное поле
<list> - Поле - список объектов
<set> - Поле - множество объектов
<field>
Простое поле объекта.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор поля | ! | |
default-value | Строка | Значение по умолчанию | ||
domain | Тип данных | Тип данных поля | ||
normalize | Строка | SpEL выражение, применяемое к значению перед маппингом | ||
mapping | Строка | Маппинг значения в сущность или провайдер данных | ||
required | true false | Обязательность поля | false | |
enabled | Строка | Условие, при котором должен быть выполнен маппинг |
Тело
<switch> - Конструкция switch
Пример
<fields>
<field id="birthday" domain="date" mapping="['birthDate']">
<switch>...</switch>
</field>
</fields>
<switch>
Конструкция switch
Тело
<case> - Вариант переключения
<default> - Вариант по умолчанию
Пример
<switch>
<case value="1">Мужской</case>
<case value="2">Женский</case>
<default>Неопределенный</default>
</switch>
<case>
Вариант переключения.
Атрибуты
Наименование | Тип | Описание | Обязательность |
---|---|---|---|
value | Строка | Значение, с которым сравнивается значение поля | ! |
Тело
Значение, возвращаемое в случае совпадения value со значением поля.
<default>
Вариант по умолчанию.
Тело
Значение, которое будет выбрано при несовпадении ни одного из value со значением поля.
<reference>
Составное поле.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор ссылки | ! | |
object-id | Ссылка | Объект, в котором представлено описание поля | ||
entity-class | Строка | Класс сущности, на который ссылается поле | Определяется по атрибуту entity-class у объекта ссылки | |
normalize | Строка | SpEL выражение, применяемое к значению перед маппингом | ||
mapping | Строка | Маппинг составного поля в параметр провайдера | ||
required | true false | Обязательность поля | false | |
enabled | Строка | Условие, при котором должен быть выполнен маппинг |
Тело
<field> - Просто е поле
<reference> - Составное поле
<list> - Поле - список
<set> - Поле - множество
Если тело пустое, то маппинг и преобразование дочерних полей не будет производиться. Если не пустое, то только для тех, что перечислены.
Пример
<fields>
<reference id="person" mapping="['person']">
<field id="id" mapping="['id']"/>
<field id="name" mapping="['name']"/>
<set id="phones" mapping="['phones']" object-id="phone"/>
<list id="addresses" mapping="['addresses']" object-id="address"/>
</reference>
</fields>
<list>
Поле - список объектов.
Атрибуты и Тело
Аналогичны <reference>.
Пример
<fields>
<list id="statuses" mapping="['statusList']">
<field id="id" mapping="['id]'"/>
<field id="name" mapping="['name']"/>
<list id="codes" mapping="['codes']" object-id="code"/>
</list>
</fields>
<set>
Поле - множество объектов.
Атрибуты и Тело
Аналогичны <reference>.
Пример
<fields>
<set id="statuses" mapping="['statusSet']">
<field id="id" mapping="['id]'"/>
<field id="name" mapping="['name']"/>
<list id="codes" mapping="['codes']" object-id="code"/>
</set>
</fields>
<operations>
Список операций над объектом.
Тело
<operation> - Операция над объектом
<operation>
Операция над объектом.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор операции | ! | |
name | Строка | Наименование операции | ||
description | Текст | Описание операции | ||
success-text | Параметризованный текст | Текст сообщения в случае успеха | Данные сохранены | |
success-title | Параметризованный текст | Заголовок сообщения в случае успеха | ||
fail-text | Параметризованный текст | Текст сообщения в случае непредвиденной ошибки | Не удалось выполнить действие | |
fail-title | Параметризованный текст | Заголовок сообщения в случае непредвиденной ошибки |
Тело
<invocation> - Провайдер данных операции
<in> - Входящие параметры операции
<out> - Исходящие параметры операции
<fail-out> - Исходящие параметры в случае ошибки операции
<validations> - Список валидаций операции
Пример
<operations>
<operation
id="update"
name="Изменение"
success-text="Запись успешно изменена"
fail-text="Не удалось изменить запись">
<invocation>
<sql>UPDATE mytable SET name = :name WHERE id = :id</sql>
</invocation>
<in>
<field id="id" mapping="id" required="true"/>
<field id="name" mapping="name"/>
</in>
<fail-out>
<field id="message" mapping="#this.getMessage()"/>
</fail-out>
<validations white-list="checkUniqueName"/>
</operation>
</operations>
<invocation>
Провайдер данных операции.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
result-mapping | Строка | Маппинг результата выполнения операции | |
result-normalize | Строка | Нормализация результата выполнения операции |
Тело
Провайдер данных
Пример
<invocation result-mapping="['data']">
<graphql>...</graphql>
</invocation>
<fail-out>
Исходящие параметры в случае ошибки операции.
Тело
<field> - Исходящий параметр операции
Пример
<fail-out>
<field id="message" mapping="#this.getMessage()"/>
</fail-out>
<validations>
Список валидаций операции.
Атрибуты
Наименование | Ти п | Описание | Значение по умолчанию |
---|---|---|---|
white-list | Список идентификаторов через запятую | Список валидаций, которые будут вызваны перед или после выполнения операции | Все валидации объекта |
black-list | Список идентификаторов через запятую | Список валидаций, которые не будут вызваны перед или после выполнения операции |
Тело
Валидации
<validations>
Список валидаций объекта.
Тело
Валидации
Параметры операций
<in>
Входящие параметры операции.
Тело
<field> - Входящий простой параметр операции
<reference> - Входящий составной параметр операции
<list> - Входящий составной параметр операции
<set> - Входящий составной параметр операции
<field>
Входящий простой параметр операции.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор поля | ! | |
default-value | Строка | Значение по умолчанию | ||
domain | Тип данных | Тип данных поля | ||
normalize | Строка | SpEL выражение, применяемое к значению перед маппингом | ||
mapping | Строка | Маппинг значения в сущность или провайдер данных | ||
required | true false | Обязательность поля | false | |
enabled | Строка | Условие, при котором должен быть выполнен маппинг | ||
param | Строка | Параметр содержащий url | ||
validation-fail-key | Строка | Код ошибки валидации с сервера | ||
entity-class | Строка | Класс, которому соответствует параметр |
<reference>
<list>
<set>
Входящий составной параметр операции.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
enabled | Строка | Условие, при котором должен быть выполнен маппинг |
Тело
<field> - Простое поле объекта
<reference> - Составное поле
<list> - Поле - список объектов
<set> - Поле - множество объектов
Пример
<in>
<field id="gender*.id" domain="integer[]" mapping="genders" param="param"/>
<list id="ratings" mapping="ratings">
<field id="code" mapping="code"/>
<field id="name" mapping="name"/>
</list>
<reference id="address">
<field id="city"/>
<field id="street"/>
<field id="home"/>
</reference>
</in>
<out>
Исходящие параметры операции.
Тело
<field> - Исходящий простой параметр операции
<reference> - Исходящий составной параметр операции
<list> - Исходящий составной параметр операции
<field>
Исходящий простой параметр операции.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор поля | ! | |
default-value | Строка | Значение по умолчанию | ||
domain | Тип данных | Тип данных поля | ||
normalize | Строка | SpEL выражение, применяемое к значению перед маппингом | ||
mapping | Строка | Маппинг значения в сущность или провайдер данных |
<reference>
<list>
Исходящий составной параметр операции.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор поля | ! | |
normalize | Строка | SpEL выражение, применяемое к значению перед маппингом | ||
mapping | Строка | Маппинг значения в сущность или провайдер данных | ||
object-id | Объект, в котором представлено описание поля | |||
entity-class | Строка | Класс сущности, на который ссылается поле |
Тело
<field> - Исходящий простой параметр операции
<reference> - Исходящий составной параметр операции
<list> - Исходящий составной параметр операции
Пример
<out>
<field id="gender*.id" domain="integer[]" mapping="genders" param="param"/>
<reference id="address">
<field id="city" mapping="city"/>
<field id="street" mapping="street"/>
<field id="home" mapping="home"/>
</reference>
<list id="ratings" mapping="ratings">
<field id="code" mapping="code"/>
<field id="name" mapping="name"/>
</list>
</out>
Валидации
<validations>
Базовые свойства
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Идентификатор валидации | ! | |
severity | success info warning danger | Уровень важности валидации | ||
server-moment | before-operation before-query after-success-query after-fail-query after-success-operation after-fail-operation | Момент срабатывания валидации на сервере | before-operation при severity равном danger или warning, иначе - after-success-operation | |
message | Строка | Сообщение, в случае нарушения валидации. Может содержать параметры | ||
title | Строка | Заголовок сообщения, в случае нарушения валидации. Может содержать параметры | ||
field-id | Ссылка на поле | Поле, под которым отобразится сообщение | ||
enabled | true false | Включение валидации. Поддерживаются плейсхолдеры условия. | true | |
side | client server client,server | Выполнение на клиенте и/или сервере | client,server |
Тело
<condition> - Валидация условия значений полей
<mandatory> - Валидация обязательности заполнения поля
<constraint> - Валидация ограничений полей
<dialog> - Валидация с диалогом выбора
<condition>
Валидация условия значений полей.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
on | Список полей | Список полей (через запятую), от которых зависит условие валидации | |
src | Строка | Путь к js файлу, который содержит условие валидации. Если не задан, необходимо задать условие в теле |
Тело
java Script выражение
Пример
<validations>
<condition
id="checkAdult"
field-id="birthday"
message="Запрещено для детей. Ваш возраст {age} меньше 18."
on="age">
age >= 18
</condition>
</validations>
<mandatory>
Валидация обязательности заполнения поля.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
field-id | Ссылка | Поле, которое должно быть заполнено | ! |
Тело
JavaScript выражение.
Вводить javaScript выражение не обязательно. Будут сделаны стандартные проверки на undefined, null, пустую строку, наличие id, пустой список
Пример
<validations>
<mandatory
id="requiredName"
field-id="name"
message="Наименование должно быть заполнено"/>
</validations>
<constraint>
Валидация ограничений полей.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию |
---|---|---|---|
result | SpEL выражение | Результат валидации |
Тело
<invocation> - Провайдер данных операции
<in> - Входящие параметры операции
<out> - Исходящие параметры операции
Пример
<validations>
<constraint
id="checkUniqueName"
field-id="name"
message="Имя {name} уже существует"
result="[0].cnt == 0">
<invocation>
<sql>
SELECT count(1) as cnt
FROM mytable
WHERE name = :name
AND (:id is null OR id != :id)
</sql>
</invocation>
<in>
<field id="name" mapping="name"/>
<field id="id" mapping="id"/>
</in>
</constraint>
</validations>
<dialog>
Валидация с диалогом выбора.
Атрибуты
Наименование | Тип | Описание | Значение по умолчанию | Обязательность |
---|---|---|---|---|
id | Строка | Ид ентификатор валидации | ! | |
server-moment | before-operation before-query after-success-query after-fail-query after-success-operation after-fail-operation | Момент срабатывания валидации на сервере | before-operation при severity равном danger или warning, иначе - after-success-operation | |
title | Строка | Заголовок окна с диалогом. Может содержать параметры | ||
message | Строка | Сообщение, в случае нарушения валидации. Может содержать параметры | ||
result | SpEL выражение | Результат валидации | ||
size | sm lg | Размер окна диалога | lg |
Тело
<invocation> - Провайдер данных операции
<in> - Входящие параметры операции
<out> - Исходящие параметры операции
<toolbar> - Меню управляющих кнопок виджета
Пример
<validations>
<dialog
id="checkName" size="sm"
message="Имя не Иван. Вы уверены, что хотите продолжить?"
result="name == 'Ivan'">
<invocation>...</invocation>
<in>
<field id="name"/>
<field id="validated"/>
<list id="statuses"/>
</in>
<out>
<field id="name"/>
</out>
<toolbar>
...
</toolbar>
</dialog>
</validations>