Аспекты

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

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

../_images/aspects_1.png

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

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

  • редактировать свойства;

  • скачать;

  • удалить.

Создание нового аспекта

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

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

../_images/aspects_2.png

п/п

Наименование

Описание

1

Идентификатор

уникальный идентификатор аспекта

2

Префикс

Предназанчен, чтобы различать атрибуты из разных аспектов.
Префикс добавляется ко всем атрибутам аспекта по шаблону {prefix}:{attribute.id}.
Таким образом атрибуты могут быть доступны в формах, конфигах действий, мутации записей.
Если префикс отдельно не задан, то по умолчанию равен идентификатору.

3

Название

локализованное наименование

4

Форма конфигурации

Функционал позволяет расширять конфигурацию типа, не меняя форму типа.
Форма может быть выбрана из ранее созданных или создана.

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

../_images/aspects_3.png

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

п/п

Наименование

Описание

Пример заполнения

1

Id

идентификатор поля, по которому оно будет доступно на форме, в журнале.

testAttribute (camelCase)

2

Имя

имя поля для отображения пользователю.

Тестовый атрибут

3

Тип

тип поля. Поддерживаемые типы

выбирается из списка предлагаемых. По умолчанию выставляется text.

4

Множественный

множественный ввод разрешен

флаг

5

Обязательный

поле обязательно к заполнению

флаг

6

Вычисляемые атрибуты

функионал, позволяющий установить выражение-зависимость, позволяющий гибко создавать производные атрибуты См. подробно

настройка конфигурации в зависимости от типа и сложности вычисления атрибута

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

../_images/aspects_4.png

Примечание

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

Примеры

Связан с другим документом

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

../_images/associated_1.png

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

../_images/associated_2.png

Имеет штрихкод

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

../_images/barcode_11.png

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

../_images/barcode_21.png

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

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

Учет времени

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

../_images/time_trackable_1.png

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

../_images/time_trackable_2.png

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

../_images/time_trackable_3.png

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

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

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

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

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

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

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

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

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

Конфигурация истории

Аспект «Конфигурация истории» создан для возможности конфигурации записи свойств в историю.


../_images/history-config_08.png

../_images/history-config_07.png

Для настройки необходимо добавить этот аспект в тип данных на вкладке Аспекты:

../_images/history-config_01.png

По кнопке Настроить доступен выбор атрибутов типа данных, информация об изменении которых не будет записываться в историю, и отражаться в виджете «История событий», соответственно.


../_images/history-config_02.png

../_images/history-config_03.png

Например, если в карточке изменить информацию о наименовании, категории и стоимости, то в виджете «История событий» отразится информация только об измененной стоимости:

../_images/history-config_04.png

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


../_images/history-config_05.png

../_images/history-config_06.png

Например, версионирование данных (аспект «Версионные данные» «version:version», «version:comment», «version:versions»), наличие документов (аспект «Имеет документы» docs:documents), где:

  • docs - префикс аспекта,

  • documents - название атрибута.