Сервер Отчетов позволяет генерировать отчеты удаленно. Он реализован в модулях Xafari.Reports.MQ и Xafari.Reports.Server на базе Сервера Xafari.

Модуль Xafari.Reports.MQ реализует интерфейсы модуля Xafari.MQ и обеспечивает обработку Сообщений и генерацию отчетов на стороне сервера, т.е. результатом обработки Сообщения является Отчет.

Обработчик Сообщений ReportMessageHandler является наследником IMessageHandler, он блокирует Сообщение в базе данных, изменяет статус сообщения на "Processing". Далее происходит генерация отчета и сохранение его в базу данных, для чего, собственно говоря, и была реализована персистентность отчетов.

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

Многопоточное взаимодействие с базой данных реализовано через пул подключений, количество которых ограничено.

Сервер Отчетов используется в демо-приложении Northwind.DC.Win. Для подключения Сервера Отчетов необходимо выполнить следующие действия:

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

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

В режиме выделенного сервера, отчеты формируются на выделенном сервере, освобождая ресурсы компьютера.

Чтобы указать режим работы сервера, добавьте следующий флаг в config-файл приложения:

 

<appSettings>

    <add key="UseDedicatedXafariServer" value="False" />

 

При запуске отчета на сервере появится диалоговое окно:

Фреймворк предлагает либо дожидаться построения отчета либо перевести построение в фоновый режим. Если выбрать ожидание, то готовый отчет откроется автоматически. Если выбрать фоновый режим, то можно продолжить работу с приложением. Результатом успешной обработки Сообщения является сформированный отчет, просмотреть который можно в Журнале Отчетов, или в панели навигации.

Журнал Отчетов показывает сохраненный отчет, при просмотре из Журнала отчет заново не формируется.

Замечание:

Если отчет не персистентен, то его нельзя сохранить в базе данных. Такие отчеты будут генерироваться в приложении, а не на сервере.