Пример расширения Службы фоновых операций
Демонстрационный вариант расширения Службы фоновых операций, расположенный в репозитории Docsvision на GitHub. Расширение получает ID карточки документа и конвертирует приложенные файлы в формат PDF/A.
-
Visual Studio 2017/2019
Сборка
-
Откройте
/Samples.sln
. -
Соберите проект
Samples\Others\SampleWorkerExtension\SampleWorkerExtension.WebClientExtension\SampleWorkerExtension.WebExtension
. -
Выполните
npm i
,npm run build
. -
Соберите пример взаимодействия с сервисом конвертации.
Установка
-
Отправьте в GAC сборки, полученные в пункте 2 выше.
gacutil.exe -if DocsVision.SampleWorkerExtension.Manager.dll gacutil.exe -if DocsVision.SampleWorkerExtension.ObjectModel.dll gacutil.exe -if DocsVision.SampleWorkerExtension.WorkerService.dll gacutil.exe -if ru\DocsVision.SampleWorkerExtension.WorkerService.resources.dll
-
Добавьте сборки
DocsVision.SampleWorkerExtension.Role.dll
вместе с ресурсамиru\DocsVision.SampleWorkerExtension.Role.resources.dll
и конфигурационный файлSampleWorkerExtension.json
(находится в проектеSampleWorkerExtension.Role
) в папку Консоли управления Docsvision.
Если папка с расширениями отсутствует, создайте вручную. Например,C:\Program Files (x86)\Docsvision\ManagementConsole\SampleExtensions
. -
Добавьте сборку
DocsVision.SampleWorkerExtension.WorkerExtension.dll
в папкуWorkerService
. Например,C:\Program Files (x86)\Docsvision\WorkerService\5.5\Extensions
.В сборке
DocsVision.SampleWorkerExtension.WorkerExtension.dll
реализован класс наследникIRoleTemplateProvider
. Если вы будете редактировать файл и переносить этот класс в другую сборку, не забудьте положить уже новую сборку в папку в папкуWorkerService
, иначе ваше расширение не будет доступно для Службы фоновых операций. -
Установите серверное и клиентское расширения для Web-клиента, которые находятся в
Others\SampleWorkerExtension\SampleWorkerExtension.WebClientExtension
(инструкция внутри проекта). -
Установите пример взаимодействия с сервисом конвертации.
-
Отредактируйте конфигурационный файл Сервиса внешнего API Консоли управления Docsvision по адресу
C:\Program Files (x86)\Docsvision\ManagementConsoleExternalAPI\DocsVision.ManagementConsole.ExternalAPI.WindowsService.exe.config
. -
В секцию
Libraries
конфигурационного файла добавьте строку, содержащуюSampleWorkerExtension.WorkerService
следующим образом:<Libraries> <add Path="DocsVision.BackOffice.ObjectModel, Version=5.5.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519" /> <add Path="DocsVision.SampleWorkerExtension.WorkerService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4a2caa47aa5b6b29" /> </Libraries>
Проверка
-
Откройте Консоль управления Docsvision и создайте новый процесс Службы фоновых операций с типом конфигурации Расширение для WorkerService.
-
В разметке документа Web-клиента (например, просмотр) создайте кнопку и добавьте для события
При щелчке
обработчикsendConversionTask
. -
В Web-клиенте создайте документ и приложите к нему файлы. Сохраните документ и в открывшейся разметке нажмите созданную кнопку. Через некоторое время в секции файлов появятся файлы, конвертированные в формат PDF/A.
Проект "SampleWorkerExtension"
Проект содержит создание сообщения для Службы фоновых операций в серверном расширении SampleWorkerExtension.ServerExtension
и расширении Web-клиента SampleWorkerExtension.WebExtension
.
Проект-расширение для Web-клиента SampleWorkerExtension.ServerExtension
содержит скрипт для создания сообщения для Службы фоновых операций. Проект демонстрирует расширение функционала с помощью добавления новых сервисов, контроллеров. Реализован контроллер SampleWorkerController
с методом SendToWorker
, который вызывает сервис ISampleWorkerService
. В сервисе осуществляется создание сообщения для Службы фоновых операций с переданным идентификатором карточки, откуда был вызван скрипт.
Проект "SampleWorkerExtension.WebClientServerExtension"
Проект содержит клиентские скрипты, в которых при нажатии на кнопку с помощью сервиса requestManager
отправляется запрос на сервер. После конвертации файла в .pdf
, он отображается в карточке.
Разработка
При разработке собственного расширения необходимо дорабатывать или переписывать класс:
public class SampleEventHandlerService : EventHandlerService, ISampleEventHandlerService
При создании собственных событий будет реализовываться управление обработкой событий:
public static readonly EventDescription ConvertCardFiles = new EventDescription { Id = new Guid("B2C6F070-C7F1-4F07-914F-94652804DD1C"), AutoSendToSelf = true, Concurrent = false };
private readonly Dictionary<Guid, EventHandlerInfo> handlersInfo = new Dictionary<Guid, EventHandlerInfo>
{
{
ConvertCardFiles.Id,
new EventHandlerInfo
{ EventId = ConvertCardFiles.Id, EventArgsType = typeof(SampleEventArgs), EventHandlerName = nameof(ProcessCardFiles) }
}
};
Также при доработке компонента логики будет реализована своя логика обработки этих событий:
private const string SampleComponentTypeName = "SampleWorkerExtension.Manager.SampleApiManager, SampleWorkerExtension.Manager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4a2caa47aa5b6b29";