<< Click to Display Table of Contents >> Архитектура системы > Основные сервисы Сервисы предпросмотра |
В веб-клиенте Directum RX можно быстро ознакомиться с документами через окно предпросмотра, не скачивая их из системы. За построение и отображение окна предпросмотра отвечают:
•Сервис предпросмотра (PreviewService) – обслуживает запросы веб-сервера на предпросмотр выбранной версии документа и формирует содержимое для предпросмотра. Сервис конвертирует исходный документ в формат HTML, а изображения – в PNG, GIF, JPEG:
Группа |
Исходный формат документов |
Результат |
---|---|---|
Текст |
DOC, DOCX, RTF, ODT, TXT |
HTML |
Таблицы |
XLS, XLSX, XLSB, XLSM, ODS |
HTML |
Презентации |
PPT, PPTX, ODP |
PNG |
Изображения |
JPG, JPEG, BMP, PNG, GIF, TIF, TIFF |
GIF, JPEG, PNG |
PDF-файлы |
При формировании предпросмотра для документов форматов PPT и PPTX конвертация выполняется постранично: по мере прокрутки документа в окне предпросмотра. Документы в форматах PDF и TIFF конвертируются сразу полностью, не дожидаясь прокрутки.
•Сервис хранения файлов предпросмотра (PreviewStorage) – отвечает за хранение файлов предпросмотра, которые подготовлены сервисом PreviewService. Также отвечает за хранение описаний предпросмотра (description), в которые записывается состояние конвертации документа «В работе», «Завершено» или «Ошибка», информация о страницах и другие данные. Описания предпросмотра хранятся в базе данных MongoDB.
По запросу клиентского приложения сервис PreviewStorage запрашивает description из MongoDB. Если в описании предпросмотра указано состояние документа «Завершено», то сервис предоставляет сами файлы предпросмотра. Затем клиентское приложение отображает содержимое документа пользователю.
Сервисы предпросмотра могут находиться на любом узле в сети, поэтому нужно ограничивать доступ к ним. Контроль доступа к сервисам выполняется с помощью JWT-токенов.
Схема взаимодействия клиентского приложения с сервисами (когда описание предпросмотра description уже сформировано):
1.Сотрудник открывает документ для предпросмотра. Клиентское приложение отправляет веб-серверу запрос на предпросмотр выбранной версии документа.
2.Веб-сервер проверяет, есть ли у сотрудника права доступа на документ. Если права есть, генерирует readToken, который отправляется на клиентское приложение для формирования запросов к PreviewStorage.
3.Клиентское приложение с полученным readToken обращается к PreviewStorage. Запрашивает у сервиса описание предпросмотра (description).
4.PreviewStorage проверяет readToken, затем запрашивает, есть ли в MongoDB описание предпросмотра и передает его клиентскому приложению.
5.Клиентское приложение на основе информации из description (состояние документа «Завершено») отправляет запрос PreviewStorage на получение файла предпросмотра.
6.PreviewStorage снова проверяет readToken, выгружает файл предпросмотра из хранилища и передает клиентскому приложению. Процесс формирования окна предпросмотра завершается.
Для оптимизации клиентское приложение всегда сначала запрашивает описание предпросмотра в PreviewStorage и только в случае отсутствия отправляет запрос на его формирование. Таким образом, если документ не менялся после последнего предпросмотра, то при очередном открытии содержимое документа отобразится быстрее. Также часть страниц документа может быть уже сконвертирована, поэтому данные сразу загрузятся в окно предпросмотра.
Если описание предпросмотра (description) еще не сформировано (см. выше пункт 4), то PreviewStorage возвращает пустой объект null. Взаимодействие сервисов продолжается по следующей схеме:
1.Клиентское приложение отправляет веб-серверу запрос на формирование предпросмотра выбранной версии документа. Веб-сервер генерирует writeToken, который используется для формирования его запросов к PreviewService.
2.Веб-сервер через очередь сообщений RabbitMQ отправляет запрос на PreviewService для подготовки предпросмотра. Используется ранее выданный writeToken.
3.PreviewService инициирует создание файла предпросмотра (см. на схеме оранжевые стрелки):
•запрашивает описание предпросмотра у PreviewStorage. Если запрошенные страницы еще не сконвертированы, в description устанавливается состояние «В работе»;
•обращается к сервису StorageService, чтобы получить содержимое документа;
•конвертирует документ для предпросмотра;
•сохраняет полученный файл предпросмотра и описание в сервисе PreviewStorage. Состояние в description меняется на «Завершено» либо «Ошибка», если конвертация завершилась с ошибкой.
4.Периодически клиентское приложение запрашивает у PreviewStorage информацию о состоянии готовности документа к предпросмотру. В ответ получает description.
5.Как только все готово, клиентское приложение скачивает файл предпросмотра из PreviewStorage, и документ отображается сотруднику.
Установка и настройка сервисов
Для работы сервисов предпросмотра должен быть настроен доступ к системе Directum RX по защищенному каналу HTTPS.
По умолчанию сервисы устанавливаются на компьютер вместе с веб-сервером. Если ресурсов основного сервера недостаточно, то сервисы предпросмотра можно установить отдельно. Подробнее см. в разделе «Установка сервисов на выделенном сервере».
Настройки сервисов задает администратор. Например, в настройках можно задать новые пути до файлов предпросмотра, изменить допустимый размер файлов для предпросмотра и пр.
© Компания Directum, 2024 |