Начиная с версии системы 3.23
появилась возможность скачивания сразу нескольких документов из Объектов единым архивом.
1. Для запуска сервиса архивации на сервере необходимо:
2. Необходимо установить архиватор 7-Zip для корректной распаковки скачанных архивов с документами. Чтобы скачанные архивы по умолчанию открывались через данную программу, необходимо убедиться, что файлы с расширением .zip ассоциированы с данным архиватором.
client.config
сервиса архивации (см. ниже) и, при желании, выполнить настройки ведения логов в файле log4net.config
.SL.DocumentsArchiving.Service.exe
(содержится в папке DocumentsArchivingService) по команде install
, после чего запустить его по команде run
.
Файл конфигурации client.config
должен быть скопирован в папку публикации сервиса. После редактирования файла конфигурации необходимо перезапустить сервис.
Пример настройки файла конфигурации внешнего сервиса архивации
<?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>
Обязательные настройки отмечены -звездочкой (*)
<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
- количество обработчиков событий сервиса архивации документов, значение по умолчанию 1Bus_DocumentsArchivingCommandsQueue:MaxParallelism
- максимальный параллелизм обработчиков событий сервиса архивации документов, значение по умолчанию 3ProfilerLogEnable
(*) - запущена ли запись событий сервиса архивации документов профайлером (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
:
<?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>
Подробнее о значениях параметров файла настройки см. в официальной документации Log4net - https://logging.apache.org/log4net/manual/configuration/appenders/rollingfileappender.html
Для использования локального сервиса архивации (встроенного в Cистему), устанавливать отдельно его не нужно, но необходимо настраивать параметры сервиса в конфигурационном файле client.config
самой Системы (см. ниже).
Для настройки сервиса для массового скачивания документов единым архивом необходимо:
1. Обязательно предусмотреть возможность выноса сервиса архивации файлов на отдельный сервер.
2. Скорректировать раздел appSettings
в конфигурационном файле client.config
сервера приложения ADVANTA, добавив параметры для настройки взаимодействия с Сервисом массового скачивания документов:
При использовании сервиса архивации на отдельном сервере
<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>
При использовании локального сервиса архивации необходимо настроить дополнительные параметры, кроме указанных выше
<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>
Где:
DocumentsArchivingService
- ключ активации функционала, указывающий на расположение сервиса архивации документов: Remote
- используется удалённый сервис архивации документов Local
- используется встроенный в Систему сервис архивации документовDocumentsArchiveLifeTimeHours
- время жизни архивов документов (в часах), значение по умолчанию 168MaxTotalFileSize
- максимальный суммарный размер файлов (в байтах) для архивирования документов. Если в конфиге нет параметра, используется значение 2097152000MaxFileCount
- максимальное количество файлов для архивирования документов. Если в конфиге нет параметра, используется значение 500MaxDocumentsArchivingActionCount
- максимальное количество одновременно выполняемых задач архивирования документов. Если в конфиге нет параметра, используется значение 3MaxFullPathLength
- максимальная длина полного пути в архиве (символов), значение по умолчанию 200MinFolderNameLength
- минимальная допустимая при сокращении длина названия папок архива (кроме корневой), значение по умолчанию 6MinRootFolderNameLength
- минимальная допустимая при сокращении длина названия корневой папки, значение по умолчанию 30
Параметры, доступные в файле client.config
основного приложения ADVANTA только для варианта, когда DocumentsArchivingService
= Local
:
Bus_DocumentsArchivingCommandsQueue:NumberOfWorkers
- количество обработчиков событий сервиса архивации документов, значение по умолчанию 1Bus_DocumentsArchivingCommandsQueue:MaxParallelism
- максимальный параллелизм обработчиков событий сервиса архивации документов, значение по умолчанию 3ProfilerLogEnable
- запущена ли запись событий сервиса архивации документов профайлером (true
или false
)IsWriteToProfilerLogAllRequests
- следует ли записывать все события сервиса архивации документов профайлером (true
или false
) ProfilerAllLogsSizeLimitMegaBytes
- суммарный лимит (в МБ) журналов профайлераCompressionLevel
- степень сжатия архивов сервисом архивации документов (значение по умолчанию Optimal
):Optimal
- максимальное сжатиеFastest
- максимальная скорость архивацииNoCompression
- без сжатияTemporaryArchiveFlat
- место временного размещения скачанных архивируемых файлов - только для DocumentsArchivingService=Local (значение по умолчанию Memory
):Memory
- оперативная памятьFileSystem
- файловая системаPathToTemporaryArchiveFlat
- путь к папке для временного размещения скачанных архивируемых файлов - только для варианта TemporaryArchiveFlat
= FileSystem
Если какой-то из вышеперечисленных параметров (кроме ключа активации функционала DocumentsArchivingService
) не указан в файле client.config
, то используется его значение по умолчанию.
Подробнее об отслеживании хода процесса скачивания документов единым архивом на странице «Фоновые процессы».