Разработка объектной модели карточки
Поскольку ранее было решено поддержать возможность настройки карточки при помощи конструкторов, необходимо сохранить в её объектной модели секции System
, Numbers
, Processes
. Для этого достаточно унаследовать свой класс объекта карточки от базового класса DocsVision.BackOffice.ObjectModel.BaseCard
.
-
Создаем класс объекта карточки:
public class NetstatSolutionCard : BaseCard
-
Для каждой секции добавляем статическое поле класса:
public static readonly ObjectProperty MainInfoProperty; public static readonly ObjectProperty JournalProperty;
-
Добавляем в класс свойства для доступа к данным секции:
public NetstatSolutionCardMainInfo MainInfo { get { if (((ObjectCollection<NetstatSolutionCardMainInfo>)base.GetValue(NetstatSolutionCard.MainInfoProperty)).Count = 0) (1) { ((ObjectCollection<NetstatSolutionCardMainInfo>)base.GetValue(NetstatSolutionCard.MainInfoProperty)).Add(new NetstatSolutionCardMainInfo()); } return ((ObjectCollection<NetstatSolutionCardMainInfo>)base.GetValue(NetstatSolutionCard.MainInfoProperty)).First<NetstatSolutionCardMainInfo>(); } } public ObjectCollection<NetstatSolutionCardJournal> Journal { get { return (ObjectCollection<NetstatSolutionCardJournal>)base.GetValue(NetstatSolutionCard.JournalProperty); } }
1 Считаем, что данная секция должна быть, а если её нет, то создаем пустую. -
Регистрируем связи между секциями карточки и их объектной моделью в статическом конструкторе класса:
static NetstatSolutionCard() { NetstatSolutionCard.MainInfoProperty = ObjectProperty.Register("MainInfo", typeof(ObjectCollection<NetstatSolutionCardMainInfo>), typeof(NetstatSolutionCard)); NetstatSolutionCard.JournalProperty = ObjectProperty.Register("Journal", typeof(ObjectCollection<NetstatSolutionCardJournal>), typeof(NetstatSolutionCard)); }
В платформе Docsvision принято выносить бизнес-логику карточки из её объектной модели в сервисы. Последуем данному правилу и вынесем основные функции карточки в отдельный сервис (будет разработан позднее).