Показать страницуИстория страницыСсылки сюдаЭкспорт в PDFНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Настройка сервиса для массового скачивания документов единым архивом ====== ''Начиная с версии системы 3.23'' появилась возможность [[product:documents:downloading_doc|скачивания сразу нескольких документов]] из Объектов единым архивом. ===== Инструкция по развертыванию сервиса архивации ===== ==== Требования к программному обеспечению ==== 1. Для запуска сервиса архивации на сервере необходимо: * установить [[https://dotnet.microsoft.com/ru-ru/download/dotnet/6.0|.Net 6.0]]; * для учетной записи, из-под которой запускается сервис архивации, необходимо настроить соответствующие права на папку, в которой будут писаться/удаляться файлы. 2. Необходимо установить архиватор [[https://www.7-zip.org/download.html|7-Zip]] для корректной распаковки скачанных архивов с документами. Чтобы скачанные архивы по умолчанию открывались через данную программу, необходимо убедиться, что файлы с расширением .zip ассоциированы с данным архиватором. \\ \\ ==== Развертывание в качестве внешнего (удаленного) сервиса ==== - Распаковать дистрибутив системы ADVANTA на отдельном сервере - Перейти внутри каталога с распакованным дистрибутивом в папку **DocumentsArchivingService**. - В подпапке **Config** настроить конфигурационный файл ''client.config'' сервиса архивации (см. ниже) и, при желании, выполнить настройки ведения логов в файле '' log4net.config''. - Из командной строки установить ''SL.DocumentsArchiving.Service.exe'' (содержится в папке **DocumentsArchivingService**) по команде ''install'', после чего запустить его по команде ''run''. \\ === Настройка конфигурации внешнего сервиса === Файл конфигурации ''client.config'' должен быть скопирован в папку публикации сервиса. После редактирования файла конфигурации необходимо перезапустить сервис. Пример настройки файла конфигурации внешнего сервиса архивации <code xml> <?xml version="1.0"?> <configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> </configSections> <connectionStrings> <add name="db" providerName="System.Data.SqlClient" connectionString="Server={server};Database={database};User Id={user};Password={password}; Max Pool Size = 4000"/> <add name="busDb" providerName="System.Data.SqlClient" connectionString="Server={server};Database={database};User Id={user};Password={password}; Max Pool Size = 4000"/> </connectionStrings> <appSettings> <add key="BusTransportType" value="SqlServer"/> <add key="Bus_DocumentsArchivingCommandsQueue:NumberOfWorkers" value="1"/> <add key="Bus_DocumentsArchivingCommandsQueue:MaxParallelism" value="3"/> <add key="ProfilerLogEnable" value="true"/> <add key="IsWriteToProfilerLogAllRequests" value="true"/> <add key="ProfilerAllLogsSizeLimitMegaBytes" value="10"/> <add key="CompressionLevel" value="Optimal"/> <add key="TemporaryArchiveFlat" value="FileSystem"/> <add key="PathToTemporaryArchiveFlat" value="C:\Temp"/> </appSettings> <unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> <container> <register type="Advanta.Files.IFileStorageProvider, Advanta.Infrastructure" mapTo="SL.Storage.SqlFileStorageProvider, SL.DocumentsArchiving.Service"> <constructor> <param name="connectionStringName" value="db" type="string"></param> </constructor> </register> <!-- <register type="Advanta.Files.IFileStorageProvider, Advanta.Infrastructure" mapTo="SL.Storage.LocalFileStorageProvider, SL.DocumentsArchiving.Service"> <constructor> <param name="documentsFolder" type="string" value="C:\LocalFileStorage" /> </constructor> </register> --> </container> </unity> </configuration> </code> **Обязательные настройки отмечены -звездочкой (*)** - ''<configSections>'' (*) - не изменяется - ''<connectionStrings>'' (*) - настройка параметров подключения сервиса к базе данных системы ADVANTA * ''<add name="db" providerName="System.Data.SqlClient" connectionString="{DbConnectionString}" />'' (*) * ''name'' - тип подключения, возможные значения: ''db'' * ''providerName'' - указание провайдера для подключения, возможные значения: ''System.Data.SqlClient'' * ''connectionString'' - заменить значение ''{DbConnectionString}'' на корректную строку подключения к базе данных * ''<add name="busDb" providerName="System.Data.SqlClient" connectionString="{DbConnectionString}" />'' * ''name'' - тип подключения, возможные значения: ''busDb'' - имя строки подключения для шины данных * ''providerName'' - указание провайдера для подключения, возможные значения: ''System.Data.SqlClient'' * ''connectiongString'' - заменить значение ''{DbConnectionString}'' на корректную строку подключения к базе данных - ''<appSettings>'' (*) - основные настройки приложения типа ключ-значение ''<add key="{Key}" value="{Value}" />'' - один параметр определяет одну настройку. Описание значений ключей: * ''BusTransportType'' - тип транспорта для шины данных, возможные значения (если в конфиге нет параметра, используется значение ''SqlServer''): * ''SqlServer'' - шина данных работает через SQL Server (требует указания в разделе ''<connectionStrings>'' выше строки подключения с именем ''busDb'') * ''InMemory'' - шина данных работает через память * ''Bus_DocumentsArchivingCommandsQueue:NumberOfWorkers'' - количество обработчиков событий сервиса архивации документов, значение по умолчанию 1 * ''Bus_DocumentsArchivingCommandsQueue:MaxParallelism'' - максимальный параллелизм обработчиков событий сервиса архивации документов, значение по умолчанию 3 * ''ProfilerLogEnable'' (*) - запущена ли запись событий сервиса архивации документов профайлером (''true'' или ''false'') * ''IsWriteToProfilerLogAllRequests'' (*) - следует ли записывать все события сервиса архивации документов профайлером (''true'' или ''false'') * ''ProfilerAllLogsSizeLimitMegaBytes'' (*) - суммарный лимит (в МБ) журналов профайлера * ''CompressionLevel'' - степень сжатия архивов сервисом архивации документов (значение по умолчанию ''Optimal''): * ''Optimal'' - максимальное сжатие * ''Fastest'' - максимальная скорость архивации * ''NoCompression'' - без сжатия * ''TemporaryArchiveFlat'' - место временного размещения скачанных архивируемых файлов - только для DocumentsArchivingService=Local (значение по умолчанию ''Memory''): * ''Memory'' - оперативная память * ''FileSystem'' - файловая система * ''PathToTemporaryArchiveFlat'' - путь к папке для временного размещения скачанных архивируемых файлов - работает и обязателен только для варианта ''TemporaryArchiveFlat'' = ''FileSystem'' - ''<unity>'' - настройки DI-контейнера. Надо выбрать только 1 из вариантов, а второй закомментировать (как в примере выше): * ''<register>...первый блок ...</register>'' - при разрешении зависимости в SL.Storage.SqlFileStorageProvider (файлы хранятся в БД) * ''<register>...второй блок ...</register>'' - при разрешении зависимости в SL.Storage.LocalFileStorageProvider (файлы хранятся на диске, значение ''value'' параметра ''documentsFolder'' должно содержать имя папки с файлами) \\ \\ === Настройка логирования работы внешнего сервиса архивации === Файл конфигурации ведения логов приложения ''log4net.config'' должен быть скопирован в папку публикации сервиса. Если данный файл отсутствует, то в этом случае логи работы сервиса вестись не будут. После редактирования файла конфигурации логов необходимо перезапустить сервис. Пример содержания файла ''log4net.config'': <code xml> <?xml version="1.0" encoding="utf-8" ?> <log4net> <root> <level value="ALL"/> <appender-ref ref="appender"/> </root> <appender name="appender" type="log4net.Appender.RollingFileAppender"> <file value="archsvc.log"/> <appendToFile value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="3"/> <maximumFileSize value="3MB"/> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d %-5p %m%n"/> </layout> </appender> </log4net> </code> Подробнее о значениях параметров файла настройки см. в официальной документации Log4net - https://logging.apache.org/log4net/manual/configuration/appenders/rollingfileappender.html \\ \\ ==== Развертывание в качестве локального сервиса ==== Для использования локального сервиса архивации (встроенного в Cистему), устанавливать отдельно его не нужно, но необходимо настраивать параметры сервиса в конфигурационном файле ''client.config'' самой Системы (см. ниже). <callout type="info" icon="true">Рекомендуется разворачивать сервис архивации файлов только удаленно, т.е. на отдельном сервере, отличном от сервера, где установлена Система ADVANTA.</callout> \\ \\ ===== Принципы настройки сервиса архивирования файлов ===== Для настройки сервиса для массового скачивания документов единым архивом необходимо: 1. Обязательно предусмотреть возможность выноса сервиса архивации файлов на отдельный сервер. 2. Скорректировать раздел ''appSettings'' в конфигурационном файле ''client.config'' сервера приложения ADVANTA, добавив параметры для настройки взаимодействия с Сервисом массового скачивания документов: **При использовании сервиса архивации на отдельном сервере** <code xml> <appSettings> <!-- текущие настройки Системы --> <!-- Пример настройки Системы для архивации файлов на отдельном сервере --> <add key="DocumentsArchivingService" value="Remote" /> <add key="DocumentsArchiveLifeTimeHours" value="168" /> <add key="MaxTotalFileSize" value="2097152000" /> <add key="MaxFileCount" value="500" /> <add key="MaxDocumentsArchivingActionCount" value="3" /> <add key="MaxFullPathLength" value="150" /> <add key="MinFolderNameLength" value="3" /> <add key="MinRootFolderNameLength" value="30" /> </appSettings> </code> **При использовании локального сервиса архивации необходимо настроить дополнительные параметры, кроме указанных выше** <code xml> <appSettings> <!-- текущие настройки Системы --> <!-- Пример настройки Системы для архивации файлов на одном сервере с приложением ADVANTA --> <add key="DocumentsArchivingService" value="Local" /> <!-- Параметры, по аналогии с примером выше для использования удаленного сервиса архивации --> <!-- Дополнительные параметры при выборе локального сервиса архивации файлов --> <add key="Bus_DocumentsArchivingCommandsQueue:NumberOfWorkers" value="1"/> <add key="Bus_DocumentsArchivingCommandsQueue:MaxParallelism" value="3"/> <add key="ProfilerLogEnable" value="true"/> <add key="IsWriteToProfilerLogAllRequests" value="true"/> <add key="ProfilerAllLogsSizeLimitMegaBytes" value="10"/> <add key="CompressionLevel" value="Optimal"/> <add key="TemporaryArchiveFlat" value="Memory"/> <add key="PathToTemporaryArchiveFlat" value="C:\Temp"/> </appSettings> </code> Где: * ''DocumentsArchivingService'' - ключ активации функционала, указывающий на расположение сервиса архивации документов: * ''Remote'' - используется удалённый сервис архивации документов * ''Local'' - используется встроенный в Систему сервис архивации документов * Если этот ключ отсутствует в конфиге, то сервис архивации документов недоступен, в интерфейсе просмотра документов по проектам не будет чекбоксов для выбора файлов для массового скачивания. * ''DocumentsArchiveLifeTimeHours'' - время жизни архивов документов (в часах), значение по умолчанию 168 * ''MaxTotalFileSize'' - максимальный суммарный размер файлов (в байтах) для архивирования документов. Если в конфиге нет параметра, используется значение 2097152000 * ''MaxFileCount'' - максимальное количество файлов для архивирования документов. Если в конфиге нет параметра, используется значение 500 * ''MaxDocumentsArchivingActionCount'' - максимальное количество одновременно выполняемых задач архивирования документов. Если в конфиге нет параметра, используется значение 3 * ''MaxFullPathLength'' - максимальная длина полного пути в архиве (символов), значение по умолчанию 200 * ''MinFolderNameLength'' - минимальная допустимая при сокращении длина названия папок архива (кроме корневой), значение по умолчанию 6 * ''MinRootFolderNameLength'' - минимальная допустимая при сокращении длина названия корневой папки, значение по умолчанию 30 Параметры, доступные в файле ''client.config'' основного приложения ADVANTA **только для варианта**, когда ''DocumentsArchivingService'' = ''Local'': * ''Bus_DocumentsArchivingCommandsQueue:NumberOfWorkers'' - количество обработчиков событий сервиса архивации документов, значение по умолчанию 1 * ''Bus_DocumentsArchivingCommandsQueue:MaxParallelism'' - максимальный параллелизм обработчиков событий сервиса архивации документов, значение по умолчанию 3 * ''ProfilerLogEnable'' - запущена ли запись событий сервиса архивации документов профайлером (''true'' или ''false'') * ''IsWriteToProfilerLogAllRequests'' - следует ли записывать все события сервиса архивации документов профайлером (''true'' или ''false'') * ''ProfilerAllLogsSizeLimitMegaBytes'' - суммарный лимит (в МБ) журналов профайлера * ''CompressionLevel'' - степень сжатия архивов сервисом архивации документов (значение по умолчанию ''Optimal''): * ''Optimal'' - максимальное сжатие * ''Fastest'' - максимальная скорость архивации * ''NoCompression'' - без сжатия * ''TemporaryArchiveFlat'' - место временного размещения скачанных архивируемых файлов - только для DocumentsArchivingService=Local (значение по умолчанию ''Memory''): * ''Memory'' - оперативная память * ''FileSystem'' - файловая система * ''PathToTemporaryArchiveFlat'' - путь к папке для временного размещения скачанных архивируемых файлов - только для варианта ''TemporaryArchiveFlat'' = ''FileSystem'' \\ \\ \\ Если какой-то из вышеперечисленных параметров (кроме ключа активации функционала ''DocumentsArchivingService'') не указан в файле ''client.config'', то используется его значение по умолчанию. <callout type="warning" icon="true">Если ключ активации функционала не указан, то возможности массового скачивания нет, даже если [[product:access:list|право]] [[product:documents:downloading_doc|«Скачивание нескольких документов»]] явно разрешено.</callout> Подробнее об отслеживании хода процесса скачивания документов единым архивом на странице [[product:settings:logs:procs_in_background#архивация_файлов|«Фоновые процессы»]].