Данные прикладной системы всегда существуют во времени. Объект создается, может несколько раз измениться, а в конце может быть, и удален из системы. Этот объект может участвовать в различных бизнес-процессах, его данные могут учитываться при формировании отчетов или могут быть подвергнуты анализу в специализированных системах. В связи с этим может возникнуть потребность в том, чтобы учитывать состояние анализируемого объекта на определенный момент времени. Для обеспечения именно такого свойства бизнес объекта предназначен модуль Версионность данных (или Versioning).

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

Похожая задача решается системами контроля версий, такими как SVN, TFS и пр.

Поддержка версионности для бизнес-объектов реализована с учетом следующих концепций:

Для ссылок на версионные бизнес-объекты необходимо использовать VersionId и вычисляемые поля.

Для работы с версиями объекта предусмотрены несколько операций:

Во время работы с версионными данными активно используется понятие Текущая дата (Current Date). Это глобальная переменная, содержащая временную отсечку, относительно которой производится расчет версии объекта. Это значение используется на визуальных формах, а также используется в реализации вычисляемых свойств в бизнес объектах, которые должны возвращать текущую версию объекта.

Чтобы ознакомиться с примером использования Data Versioning, обратитесь к разделу Version|Version Main Object в демо-приложении Feature Center, установленном вместе с Xafari. На рисунке ниже изображен список объектов, каждый объект содержит две ссылки на объект с версиями.

Windows Forms:

ASP.NET:

Изменить значение текущей даты (Current Date) можно с помощью Action в панели инструментов.

Свойство версионности данных распространяется не только на сам объект, но и на все агрегированные сущности. Другими словами, при создании новой версии объекта, автоматически создаются новые версии для объектов, агрегированных этим объектом.

Чтобы узнать больше о Data Versioning, обратитесь к следующим документам:

References