Создание частного списка бинарных связей
Для каждого объекта класса-потомка Предметные объекты в Окне свойств, доступен список всех его бинарных связей. Однако часто удобно работать с подмножеством связей определенного класса.
Программа позволяет определить частные списки бинарных связей заданного класса и вывести их в Окне свойств или использовать в отчетах. В качестве класса можно использовать не только конечные классы иерархии классов. Тогда в список войдут связи всех его подклассов.
Частные списки могут формироваться следующими способами:
- Создание списка для класса Предметный объект по классу связи через опции этого класса связи.
- Создание списка через параметр класса. Это более трудоемкий способ, но из-за гибкости он рекомендуется в большинстве случаев.
Решение о способе создания списка принимается на основе следующих критериев.
| Критерий | Создание списка через опции | Создание списка через параметр |
|---|---|---|
| Трудоемкость создания списка | Низкая В общем случае достаточно заполнить опцию у класса связи Relationships.CreateList (см. Редактирование метаданных). | Высокая Необходимо создать параметр типа список, задать класс связи и направление создания списка. |
| Трудоемкость настройки видимости списка | Высокая Настраивается опциями: OutgoingRelationshipsVisible, OutgoingRelationshipsOnTab для исходящего списка и IncomingRelationshipsVisible, IncomingRelationshipsOnTab для входящего списка. | Низкая Настраивается флажками на вкладке Параметры класса (см. Управление параметрами класса). |
Варианты использования:
- Необходимо создать частный список для класса «Предметные объекты». При этом в целях ускорения создания такого списка пользователь согласен, что список для некоторых классов объектов будет лишним. В таком случае рекомендуется создавать список через опции класса связи.
- Необходимо создать частный список для некоторых классов объектов. При этом нужна тонкая и быстрая настройка видимости такого списка. Также предполагается, что впоследствии список классов, где этот список виден по умолчанию, будет расширен. В таком случае рекомендуется создавать список через параметр.
Последовательность шагов в MetaEdit для создания частного списка бинарных связей:
- Выбрать класс связей, по которому должен создаваться частный список. При необходимости создать класс для дополнительной классификации (см. Дополнительная классификация объектов), в который включить интересующие классы связей. Дополнительная классификация нужна в случаях, когда в один список требуется объединить связи нескольких классов. Например, во вспомогательный класс Состав объекта объединены классы Композиция и Агрегация.
- Определиться со способом создания списка (см. таблицу 1).
- Указать опции класса (если создается список через опции класса) или создать параметр типа список (при создании списка через параметр).
- Если список создается через параметр, то указать класс связи, по которому будет создан список и направление этой связи.
- Настроить видимость параметра для классов (см. Управление параметрами класса)
- Применить метаданные.
- Если был создан новый класс связи, то необходимо добавить соответствующий ему элемент матрицы связей классов.
- Перезапустить Business Studio.
Для выбора удачного названия списка можно воспользоваться подсказкой в виде названий Ролей объектов на концах связи.
Пример создания списка по классу связи через опции этого класса связи
На примере списка Ответственность за риск, который содержит ответственных за риск, разберем последовательность таких действий. Данный список формируется по классам связей Владение риском (Бинарная связь → Прочая связь → Владение → Владение риском) и Контроль (Бинарная связь → Прочая связь → Ответственность → Контроль), которые были объединены в класс Ответственность за риск (Бинарная связь → Вспомогательная связь → Ответственность за риск).
- Создать класс для дополнительной классификации под классом Вспомогательная связь (Бинарная связь → Вспомогательная связь). Пункт не является обязательным, так как список может создаваться по одному классу связи, который уже существует.
В данном случае список создается по классу Ответственность за риск (находится в классе Бинарная связь → Вспомогательная связь). Если на данном этапе создается новый класс связи, то п.4 обязателен. - Заполнить опции класса связи:
- Relationships.CreateList: BothClasses – означает, что список будет создан как у Объекта Из, так и у Объекта В (допустимые значения опции см. Редактор метаданных).
- IncomingRelationshipsHeader: Persons in charge, IncomingRelationshipsHeader.ru: Ответственные лица – указывается название входящего списка (оно будет отображаться на вкладке).
- OutgoingRelationshipsHeader: Risks, OutgoingRelationshipsHeader.ru: Риски – указывается название исходящего списка (оно будет отображаться на вкладке)
- Опции, управляющие видимостью списка у объектов:
- IncomingRelationshipsOnTab – видимость входящего списка по умолчанию в Окне свойств объекта
- IncomingRelationshipsVisible – доступность входящего списка для объектов
- OutgoingRelationshipsOnTab – видимость исходящего списка по умолчанию в Окне свойств объекта
- OutgoingRelationshipsVisible – доступность исходящего списка для объектов.
Подробнее про данные опции см. Редактирование метаданных
- Метаданные применяются к базе.
- Если в Матрице связей классов отсутствуют элементы с вновь созданным классом связи, то необходимо создать такой элемент, указать Класс связи, Класс Из и Класс В.
- Проверить наличие данного списка в свойствах объекта, у которого ожидалось его появление.
Пример создания списка через параметр
На примере списка Состав (Бинарная связь → Вспомогательная связь → Состав), который отражает из каких частей состоит объект, разберем последовательность таких действий. Данный список формируется по классам связей Композиция и Агрегация (Бинарная связь → Структурная связь → Композиция и … → Агрегация), которые были объединены в класс Состав объекта.
- В классе Основной объект создать нехранимый параметр Composition типа список, ссылающийся на класс Бинарная связь (AppPlatform.BinaryRelationship).
- Заполнить стандартные опции, а также опции, отвечающие за то, по какому классу связи и на каком конце связи создавать список.
| Опция | Описание |
|---|---|
| PropertyView.Header | Composition |
| PropertyView.Header.ru | Состав |
| AdditionalProperties.RelationshipDirection | Указывается, на каком конце связи создается список. ClassFrom – у Объекта Из ClassTo – у Объекта В |
| AdditionalProperties.RelationshipRepository | Указывается GUID класса связи или его системное название, по которому будет формироваться список. (в данном случае – GUID класса связи Состав) |
- Настроить видимость параметра Composition у целевых классов

- Если в матрице связей классов присутствуют элементы с классами связей Композиция и Агрегация, то такой список появится у подходящих объектов.
Например, у группы оргединиц:

Если подходящего элемента матрицы нет (например, если был создан новый класс связи), то после создания подходящего элемента матрицы необходимо перезагрузить Business Studio.
