<< Click to Display Table of Contents >> Разработка > Процесс разработки Что использовать: наследование или перекрытие |
Наследование – это механизм, который позволяет в модуле решения создавать свои типы сущностей на основе базовых типов. Новые типы сущностей наследуют от базовых структуру данных, свойства, действия, формы, логику работы и отображение. Если в базовый тип внести изменения, то они появятся и в наследниках. Таким образом, сокращается время на разработку, так как новый тип сущности не нужно разрабатывать с нуля. Кроме того, уменьшается дублирование кода между схожими типами сущностей.
Перекрытие – это механизм, который позволяет безопасно изменять модули и типы сущностей базового решения. При необходимости изменения в перекрытых модулях и типах сущностей можно отменить или удалить. В этом случае система продолжит работу с модулями и типами сущностей базового решения.
Наследование и перекрытие выполняются на рабочем слое разработки.
Также можно перекрывать базовые типы документов и справочников. Удобно использовать такое перекрытие, когда нужно внести идентичные изменения в существующие документы или справочники, созданные на основе одних и тех же родительских типов. Например, когда необходимо добавить одно и то же свойство в карточку или действие на ленту. Чтобы изменить наследников, нужно найти ближайший общий базовый тип сущности, перекрыть его и один раз добавить нужные свойства или действия. Изменения появятся у всех наследников на вашем и базовом слое.
Перекрытия подменяют элементы разработки стандартного решения Directum RX. В результате конечные пользователи могут работать в системе только с измененными модулями и типами сущностей. Наследование оставляет стандартные элементы разработки неизменными и добавляет новые. Таким образом, конечные пользователи могут работать в системе и с новыми типами сущностями, и со стандартными.
Чтобы детальнее разобраться, когда использовать перекрытие, а когда наследование, рассмотрим примеры.
Пример наследования
В стандартном решении Directum RX есть тип документа «Договор» (Sungero.Contracts.Contract). Он создан на основании базового типа документа «Базовый договор» (Sungero.Contracts.ContractBase) и наследует от него структуру данных, свойства, действия, формы, логику работы и т.д. В своем решении разработчик на основе базового типа «Базовый договор» создал наследника «Договор закупки». Добавил в карточку созданного документа логическое свойство Особый контроль. В результате в клиентском приложении теперь можно создать обычный договор и договор закупки с новым свойством.
Пример перекрытия
В своем решении разработчик перекрыл тип документа «Договор» (Sungero.Contracts.Contract) и добавил в карточку договора логическое свойство Особый контроль. В результате в клиентском приложении карточка договора стала отображаться с новым свойством (перекрытый документ подменил документ базового решения).
Пример перекрытия базового типа сущности
В своем решении разработчик перекрыл базовый тип документа «Договорной документ» (ContractualDocument) и добавил в его карточку логическое свойство Особый контроль. В результате в системе у наследников договорного документа – договора (Contract) и дополнительного соглашения (SupAgreement) – в карточках появилось новое свойство.
Как видно на схеме, перекрытый базовый тип сущности находится на рабочем слое, а у конечных типов сущностей изменяется цепочка наследования.
© Компания Directum, 2024 |