EntityFactory

Под EntityFactory понимается некоторая модель проектирования и разработки сложных приложений. Она включает правила, соглашения и рекомендации по проектированию, а также библиотеку базовых классов и методов расширения компонентов XAF.

Базовыми являются понятия Сущность (Entity) и расширение сущности (Entity Extension). Главной идеей EntityFactory является способ добавления новых полей в сущности приложений. Если ООП предлагает решать эту задачу через наследование расширений от сущности, то EntityFactory решает эту задачу через добавление в сущность ассоциаций на расширения.

А использование Domain Components позволяет включать расширение целиком в объект сущности без каких-либо дополнительных конструкций.

Использование EntityFactory позволяет избавиться от такого «неприятного» следствия от использования наследование, как появление новых типов бизнес-объектов в приложении.

В случае ООП первоначальная цель «расширение» решается через создание «новой сущности». В этом смысле новый класс является следствием применения выбранной технологии, поэтому его можно назвать «технологическим».

EntityFactory четко различает бизнес-сущности и их расширения. Расширение является только расширением и не является сущностью, которую расширило. Поэтому и «технологические» бизнес-объекты отсутствуют в приложении.

EntityFactory позволяет создать любую комбинацию расширений из имеющегося набора, которая может потребоваться клиенту. При этом максимально исключены конфликты совместного использования «параллельных» расширений, которые появляются при использовании наследования.

Консольное приложение

При эксплуатации прикладных систем существует ряд задач/функций как, например, импорт/экспорт данных, пакетное формирование отчетов, выполнение других бизнес-функций, которые необходимо выполнять в автоматическом, пакетном режиме, возможно, по расписанию. Взаимодействие с пользователем в таких случаях минимально, или отсутствует вовсе.

Для решения подобного класса задач разработано легковесное консольное приложение - RunCmd.exe, к которому может подключаться только требуемый для решения данной задачи набор модулей. Необходимые для решения конкретной задачи команды и их параметры передаются в командной строке.

Разработчики реализуют команды, заключая их в состав модуля XAF. Необходимые для разработки новых команд классы и интерфейсы находятся в сборке Xafari.dll (в пространстве имен Xafari.Commands).

В составе платформы Xafari реализованы команды запуска произвольной бизнес-операции, команда очистки БД от удаленных объектов.

Шаблоны VisualStudio

Шаблоны Xafari для Visual Studio предназначены для быстрой и более удобной разработки пользовательских приложений.

Аудит

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

Поддерживается протоколирование:

  • Удаление, создание и модификация объектов включая их поля и коллекции
  • Выполнение контекстных и независимых бизнес-операций (БО), включая их откат
  • Выполнение пользовательских действий (Actions) контекстных и независимых
  • Формирования отчетов
  • Вход и выход пользователей

В первой версии модуля протоколирование реализовано на уровне СУБД с использованием триггеров. Это обеспечивает высокую производительность на больших объемах данных и транзакций.

Филиальность

Модуль «Филиальность» предназначен для частичной изоляции данных различных организационных структур. Использование данного модуля позволяет прозрачно автоматизировать компании холдингового типа. При этом обеспечивается возможность получения консолидированной отчетности по корпорации в целом с группировкой и фильтрацией данных в разрезе филиалов. Функционал модуля позволяет эффективно управлять правами доступа к информации: в единой базе собственные данные для филиала полностью открыты, доступ к данным остальных филиалов регламентируется в соответствии с установленными правами. Несанкционированный доступ к информации филиалов исключается.

Очередь сообщений

Очереди сообщений необходимы для связывания независимых приложений и сервисов, и их совместной работы. Приложения могут генерировать различные виды сообщений для различных сервисов, которые обрабатывают сообщения и возвращают некий результат приложению. Такая схема позволяет перенести бизнес логику с приложения на ответственность сервисов, уменьшая потребляемые приложением ресурсы и время.

Все сообщения хранятся в той же базе данных, с которой работает приложение и должны различаться по типу. Сообщения обрабатываются асинхронно на стороне сервера.

Xafari Сервер

Этот компонент служит для мониторинга очереди и распределения сообщений соответствующим обработчикам. Работает сервер асинхронно, как Xaf приложение. Во время работы, выбирает необходимые для обработки сообщения, блокирует и отправляет соответствующим по типу обработчикам. Работает сервер со своим провайдером безопасности, который обеспечивает окружение для обработки сообщения и асинхронное взаимодействие с базой данных, используя пул подключений.

Может работать вместе с приложением, работая в новом потоке и используя локальную очередь для хранения сообщений или на выделенном сервере. При использовании локальной очереди, после завершении работы приложения все сообщения удаляются. В режиме выделенного сервера сообщения хранятся в базе данных приложения.

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

Xafari Отчеты

Новая система отчетности для XAF приложений, расширяющая стандартный функционал системы отчетности. Позволяет строить отчеты на базе нескольких бизнес-объектов со сложной структурой данных и алгоритмов наполнения этой структуры. Возможность сохранять наборы параметров отчетов для последующего использования. Предоставляет разработчику возможность для создания произвольного алгоритма для формирования отчетности.

Позволяет для сложных отчетов (структур данных с параметрами и алгоритмом наполнения) необходимо поддерживать возможность определять несколько визуальных представлений (печатный отчет, график, сводная таблица, выгрузка в файл и пр.). Решение, в какой именно визуальной форме представить отчет принимает сам пользователь.

AppModule

В случае разработки приложения для различных платформ (Web, Win, Console и пр.), техногология XAF создает некоторые неудобства при проектировании модулей. Обычно основу приложения составляет определенный набор платформенно-независимых модулей. Этот набор модулей будет одинаковым для всех платформ и будет дополняться в каждом модуле определенными платформенно-зависимыми библиотеками и настройками. В случае стандартного XAF приложения, все основные модули и настройки нужно добавлять и инициализировать в каждом платформенно-зависимом модуле.

AppModule выделяет платформенно-независимые библиотеки и настройки в отдельный модуль. При проектировании платформенно-зависимого модуля теперь достаточно будет добавить настроенный AppModule, а не дублировать весь набор основных билиотек и настроек.

ASP.NET MVC

XAF поддерживает создание приложений на платформах Win и Web. В дополнение к ним в Xafari реализована возможность создавать XAF приложения на платформе ASP.NET MVC. В версии x06 включена Code Preview версия с ограничениями по возможностям в сравнении с Web-платформой.

В целом концепция построения приложения сохранена и построена на подобии Web-платформы. Принципы реализация XAF приложения не изменились. При этом разработан абсолютно новый механизм генерации html-кода, основанный на принципах ASP.NET MVC.

Первые сравнительные тесты производительности MVC-приложения показали на 30% лучший результат в сравнении с аналогичным Web-приложением.

Познакомится с примерами приложений можно на странице Demos

Task List

Данный модуль предоставляет возможности для формирования списка задач для исполнителя, и их исполнения. Главным требованием при создании модуля было удобная и прозрачная работа со списком задач для конечного пользователя, для этого были созданы интуитивно понятные и легковесные формы, адаптируемые для различных целей.

Модуль создан с учетом потребностей прикладных проектов, т.е. является достаточно универсальным и гибким для решения большинства прикладных задач, для использования модуля также имеется специальный API. Начиная с версии x06, модуль документооборота работает с использованием данного модуля.