Действия¶
Действия - это доступные команды, которые можно выполнять над объектом класса.
JSON¶
{
"id": "SAVE",
"caption": "Сохранить",
"visibilityCondition": null,
"enableCondition": null,
"needSelectedItem": false,
"signBefore": false,
"signAfter": false,
"isBulk": false
}
Описание полей¶
Поле | Наименование | Допустимые значения | Описание |
---|---|---|---|
"id" |
Код | «CREATE» - создать объект/объект ссылочного поля | Внутренний код действия с объектом. |
«EDIT» - изменить объект/привязанный объект ссылочного поля | |||
«DELETE» - удалить объект | |||
«CREATE-INLINE» - создать объект (не переходя на форму создания) | Создание объекта без открытия формы создания, для ускорения заведения объектов. | ||
«SAVEANDCLOSE» - сохранить изменения и закрыть фрейм | |||
«SAVE» - сохранить изменения | |||
«REMOVE» - удалить привязку к объекту по ссылке | |||
«ADD» - добавить привязку к объекту по ссылке | |||
"caption" |
Имя | Строка | Видимое наименование - подпись на кнопке действия (при наличии). |
"visibilityCondition" |
Условие видимости | Строка или null | Условие, при котором кнопка действия будет отображена. |
"enableCondition" |
Условие активности | Строка или null | Условие, при котором кнопка действия будет активна. |
"needSelectedItem" |
Условие видимости - наличие выбранного элемента | Логическое значение | Поле выставляется в true для действий, которым необходимо наличие выбранного элемента для активации. |
"signBefore" |
ЭП входящих данных | Логическое значение | |
"signAfter" |
ЭП исходящих данных | Логическое значение | |
"isBulk" |
Групповая | Логическое значение | Признак пакетной операции, для действий ссылочных полей. Выставляется в true для действий, которые выполняются со всеми привязанными объектами одновременно. |
Логика действий над ссылочными объектами¶
Операция "Выбрать"
- это установление связи между объектами, вне зависимости от типа связи должна быть возможность ее установить (и разорвать) на уровне бизнес логики.
- Если это связь по ссылке один ко многим, т. е. ссылка на ключ - то приняв сторону «один» за A, сторону «многие» за B, реализуем:
- на стороне объекта B (ссылка на A): Операция
"Выбрать"
(SELECT) - находим объект (A), устанавливаем значение ссылочного атрибута объекта B равным ключу объекта A (обнуляем атрибут для разрыва связи); - на стороне объекта A (коллекция или т.н. обратная ссылка): операция
"Добавить"
(ADD) - находим объект (B), устанавливаем значение ссылочного атрибута этого объекта (B) равное ключу объекта A, операция"Извлечь"
(REMOVE) - выбираем в коллекции объект (B), обнуляем ссылку на A.
- на стороне объекта B (ссылка на A): Операция
- Если это связь по ссылке многие ко многим, т. е. ссылка на не ключевой атрибут, то для обоих концов коллекции реализуем связи:
- Операция «Добавить» (ADD) - находим объект, устанавливаем значение его ссылки равным соответствующему атрибуту контейнера. При этом объект окажется в коллекциях всех контейнеров с таким же значением атрибута, это специфика данного типа связей)
- Операция
"Извлечь"
(REMOVE) - выбираем объект в коллекции, обнуляем ссылку, при этом объект также удаляется из коллекций всех контейнеров с соответствующим значением атрибута.
- Если это связь многие-ко-многим без ссылки (связь через системную промежуточную сущность, сюда относятся и «прямые» коллекции и «обратные», как разные концы связи), то для обоих коллекций реализуем:
- Операция
"Добавить"
(ADD) - находим объект, создаем сущность-связь с контейнером - объект появляется только в коллекции данного контейнера - Операция
"Извлечь"
(REMOVE) - выбираем объект в коллекции, удаляем сущность-связь с контейнером - объект пропадает только из коллекции данного контейнера
- Операция
С точки зрения UI различий между типами связей вообще нет никаких - везде имеем дело с коллекциями, везде потенциально доступны операции добавления и извлечения. А настраивать наличие тех или иных кнопок у поля колекции можно и нужно на уровне модели представления. В бизнес логике должны быть реализованы стандартные обработчики для кнопок ADD
и REMOVE
в соответствии с описанной выше логикой.
Логика действий над объектами класса¶
Поле "commands"
, заданное в общей части меты представлений класса, задает список действий, допустимых над объектами данного класса.
В общей части меты представлений класса могут быть указаны команды следующих кодов "id"
:
"CREATE"
- создать объект"EDIT"
- изменить объект"DELETE"
- удалить объект"SAVEANDCLOSE"
- сохранить изменения и закрыть"SAVE"
- сохранить изменения
Для представления атрибутов со свойством "type":2
применяются следующие действия:¶
"SELECT"
- добавить"EDIT"
- править"REMOVE"
- удалить
Структура в mongoDB (registry)¶
{
"id" : "SAVE",
"caption" : "Сохранить",
"visibilityCondition" : null,
"enableCondition" : null,
"needSelectedItem" : false,
"signBefore" : false,
"signAfter" : false,
"isBulk" : false
}