Работа с бизнес-объектами
Система Finist-WebPlatform оперируя данными подразумевает использование бизнес-объектов. Бизнес-объекты являются базовыми сущностями системы. Именно они используются для хранения данных, для их логического связывания. Действия над объектами - это бизнес-процессы. Бизнес-процессы выполняются только над бизнес-объектами, а не произвольными экземплярами языковых сущностей, например классами языка C#. Аналогичным образом управление доступами настраивается исключительно на бизнес-процессы, бизнес-объекты и реквизиты бизнес-объектов.
Basis – это базовый абстрактный класс для объявления типов бизнес-объектов.
Использование бизнес-объектов.
Запрещено создавать экземпляры бизнес-объектов с помощью конструктора. Нельзя использовать ключевое слово new:
var formType = new FormType();
Все экземпляры бизнес-объектов должны создаваться с помощью фабрики классов бизнес-объектов Factory.
Для создания экземпляров бизнес-объектов должны использоваться методы CreateInitialized и Create:
FormType formType = Factory.CreateInitialized<FormType>();
или:
FormType formType = Factory.Create<FormType>();
При этом, если используется функция Factory.Create<T>(), то создается экземпляр объекта, который следует либо инициализировать, либо загрузить из источника данных, например из базы данных:
-
загрузка:
formType.Load();
-
инициализация:
formType.Initialize();
в случае вызова Factory.CreateInitialized<T>(), мы сразу получаем инициализированный экземпляр объекта, и не следует его повторно инициализировать функцией Initialize().:
Важно понимать, что если объект еще не инициализирован или не загружен (создан функцией Factory.Create<T>(),) то нежелательно выполнять какие-либо другие действия с этим экземпляром, например получать доступ к его реквизитам, свойствам, методам: formType.Name; или formType.GetProperty("Name"); и т.д. Смысл в том, что оперируя экземпляром объекта в дальнейшем, непременно возникнет необходимость его сохранить, а это невозможно сделать с неинициализированным объектом. Однако, в случае инициализации, будут утеряны все данные, которые были внесены в него до этого момента.