Skip to content

Latest commit

 

History

History
195 lines (141 loc) · 8.61 KB

Aspects.rst

File metadata and controls

195 lines (141 loc) · 8.61 KB

Аспекты

Аспект расширяет функционал типа данных без изменения самого типа.

Для просмотра существующих аспектов и их редактирования создан журнал Аспекты (Раздел администратора - Модель - Аспекты):

_static/aspects/aspects_1.png

В журнале администратору с каждой записью доступен стандартный набор действий:

  • редактировать json-файл;
  • редактировать свойства;
  • скачать;
  • удалить.

Форма создания нового аспекта состоит из 2 вкладок.

Вкладка "Основные":

_static/aspects/aspects_2.png
п/п Наименование Описание
1 Идентификатор уникальный идентификатор аспекта
2 Префикс
Предназанчен, чтобы различать атрибуты из разных аспектов.
Префикс добавляется ко всем атрибутам аспекта по шаблону {prefix}:{attribute.id}.
Таким образом атрибуты могут быть доступны в формах, конфигах действий, мутации записей.
Если префикс отдельно не задан, то по умолчанию равен идентификатору.
3 Название локализованное наименование
4 Форма конфигурации
Функционал позволяет расширять конфигурацию типа, не меняя форму типа.
Форма может быть выбрана из ранее созданных или создана.

Вкладка "Атрибуты":

_static/aspects/aspects_3.png

Атрибуты аспекта и системные атрибуты аспекта, которые будут добавлены к сущностям с данным аспектом.

п/п Наименование Описание Пример заполнения
1 Id идентификатор поля, по которому оно будет доступно на форме, в журнале. testAttribute (camelCase)
2 Имя имя поля для отображения пользователю. Тестовый атрибут
3 Тип тип поля. :ref:`Поддерживаемые типы<ecos-model_types>` выбирается из списка предлагаемых. По умолчанию выставляется text.
4 Множественный множественный ввод разрешен флаг
5 Обязательный поле обязательно к заполнению флаг
6 Вычисляемые атрибуты функионал, позволяющий установить выражение-зависимость, позволяющий гибко создавать производные атрибуты :ref:`См. подробно<attribute_rights>` настройка конфигурации в зависимости от типа и сложности вычисления атрибута

В поле _aspects как и при добавлении любого другого аспекта вносится информация об аспекте.

_static/aspects/aspects_4.png

Note

Каждый аспект может быть добавлен как явно (во вкладке Аспекты), так и автоматически (см. ниже Учет времени)

Аспект "Связан с другим документом" создан для работы виджета "Связи документа" (добавение и отображение связей с сущностью ):

_static/aspects/associated_1.png

В поле assoc:associatedWith вносится информация о связанных сущностях.

_static/aspects/associated_2.png

Аспект "Имеет штрихкод" создан для формирования штрихкода к документу:

_static/aspects/barcode_1.png

В аспекте нет атрибутов, но есть форма настройки:

_static/aspects/barcode_2.png

При выборе аспекта в типе данных можно настроить формат штрих-кода и атрибут, из которого брать данные для формирования штрих-кода (по умолчанию номер документа _docNum).

Для реализацции сложной логики - необходимо создать :ref:`вычисляемый атрибут<count_attributes>`, и на основе него добавить аспект и далее брать настройку штрих-кода из атрибута.

Аспект "Учет времени" создан записи о потраченном времени по задаче:

_static/aspects/time_trackable_1.png

В аспекте есть атрибут timeTracking - запись о потраченном времени:

_static/aspects/time_trackable_2.png

Отражается в виде дочерней ассоциации: time-trackable:timeTracking:

_static/aspects/time_trackable_3.png

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

Следовательно, по сущности timeTracking можно перейти к родителю. В атрибуте timeTracking, соответственно, содержатся ссылки на все дочерние сущности.

Таким образом образуется двухсторонняя связь:

  • от дочернего к родителю по системному атрибуту _parent,
  • от родителя к дочернему по настроенному атрибуту.

Если удаляется родитель, то удаляются дочерние сущности по всем ассоциациям.

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

При создании timeTracking- сущности доступны 2 атрибута, которые позволяют сделать связь с родителем:

_parent?str: "emodel/type@document"  //Заявка, с которой мы связываем родителя.
_parentAtt?str: "time-trackable:timeTracking"  //Атрибут от родителя к дочерней сущности, куда его нужно добавить.