Skip to main content

Объект

Тип метаданных

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СтрокаМаппинг значения в сущность или провайдер данных
requiredtrue falseОбязательность поляfalse
enabledСтрокаУсловие, при котором должен быть выполнен маппинг

Тело

<switch> - Переключатель

Пример

<fields>
<field id="birthday" domain="date" mapping="['birthDate']">
<switch>...</switch>
</field>
</fields>

<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СтрокаМаппинг составного поля в параметр провайдера
requiredtrue falseОбязательность поляfalse
enabledСтрокаУсловие, при котором должен быть выполнен маппинг

Тело
<field> - Простое поле
<reference> - Составное поле
<list> - Поле - список
<set> - Поле - множество

note

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

Пример

<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СтрокаМаппинг значения в сущность или провайдер данных
requiredtrue 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СтрокаИдентификатор валидации!
severitysuccess info warning dangerУровень важности валидации
server-momentbefore-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Ссылка на полеПоле, под которым отобразится сообщение
enabledtrue falseВключение валидации. Поддерживаются плейсхолдеры условия.true
sideclient 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 выражение.

tip

Вводить javaScript выражение не обязательно. Будут сделаны стандартные проверки на undefined, null, пустую строку, наличие id, пустой список

Пример

<validations>
<mandatory
id="requiredName"
field-id="name"
message="Наименование должно быть заполнено"/>
</validations>

<constraint>

Валидация ограничений полей.

Атрибуты

НаименованиеТипОписаниеЗначение по умолчанию
resultSpEL выражениеРезультат валидации

Тело
<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-momentbefore-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СтрокаСообщение, в случае нарушения валидации. Может содержать параметры
resultSpEL выражениеРезультат валидации
sizesm 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>