<< Click to Display Table of Contents >> Интеллектуальные возможности > Служба ввода документов > Настройка службы ввода > Настройка модуля отправки Модуль отправки IntegrationServiceSender |
С помощью модуля отправки IntegrationServiceSender служба DCS передает сервису интеграции пакет, состоящий из файлов ввода и метаданных. Для этого метаданные конвертируются в формат JSON, а затем отправляются в сервис интеграции по протоколу OData. Для отправки файлов ввода можно выбрать один из способов: в теле запроса или через папку. В зависимости от выбранного способа передачи меняются аппаратные требования к серверу со службой ввода документов.
Чтобы настроить модуль отправки IntegrationServiceSender:
1.В среде разработки Directum RX (Development Studio) подключите библиотеку Directum.Dcs.Sending.IntegrationServiceSender.Models.dll к решению или модулю, в котором планируется добавить функцию интеграции. Библиотека входит в комплект поставки службы ввода документов. Она используется для преобразования передаваемого пакета из набора байт в объект со свойствами. Благодаря этому обеспечивается удобный доступ к метаданным пакета и файлам ввода.
2.Создайте функцию интеграции. Используйте в ней:
•атрибут [Public(WebApiRequestType = RequestType.Post)];
•параметр packageJSON с типом «Массив байтов» (byte[]). В packageJSON передается пакет сериализованном виде.
Примечание. Также можно объявить дополнительные параметры, которые нужно передавать вместе с пакетом. Имя параметра должно совпадать с именем, указанным в конфигурационном файле appsettings.json.
•приведение типов для объектов из свойства-коллекции InstanceInfos пакета – для работы с экземплярами ввода конкретного типа: «FileSystemCaptureInstanceInfo» (захват из файловой системы) или «MailCaptureInstanceInfo» (захват с почты);
•метод Deserialize(), который принимает на вход значение параметра packageJson, и возвращает объект со свойствами;
•метод GetStream() класса InputFileMetaInfo, который возвращает готовый MemoryStream или FileStream в зависимости от способа передачи файлов ввода. После использования поток нужно сразу освободить, например через using, чтобы файл ввода в сетевой папке не блокировался, и служба захвата могла его удалить после завершения запроса к сервису интеграции.
Пример интеграционной функции с получением файла и информации о письме:
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Directum.Dcs.Sending.IntegrationServiceSender.Models;
namespace Sungero.SmartProcessing.Server
{
public class ModuleFunctions
{
[Public(WebApiRequestType = RequestType.Post)]
public void ProccessDCSPackage(byte[] packageJson)
{
var package = Directum.Dcs.Sending.IntegrationServiceSender.Models.Package.Deserialize(packageJson);
var instanceInfo = package.InstanceInfos.FirstOrDefault();
var mailInfo = instanceInfo as Directum.Dcs.Sending.IntegrationServiceSender.Models.MailCaptureInstanceInfo;
var firstFile = package.InputFiles[0];
using (var stream = firstFile.GetStream())
{
var document = Sungero.Docflow.SimpleDocuments.Create();
document.Note = "Документ создан из письма {mailInfo.Subject} от {mailInfo.SendDate.Value.FromUtcTime()}";
document.Name = firstFile.FileName;
document.CreateVersionFrom(stream, System.IO.Path.GetExtension(firstFile.FileDescription));
document.Save();
}
return;
}
}
}
3.Настройте модуль отправки в конфигурационном файле appsettings.json в секции IntegrationServiceSender.
ВАЖНО. В примерах указаны пути до папок по умолчанию. В appsettings.json пути указываются только из docker-контейнера службы ввода документов.
Пример:
"Instances": [
{
"Name": "DirectumRxSender",
"WorkingFolder": "Senders/DirectumRxSenderTemp",
"Url": "https://directumrx.example.com/Integration/odata",
"ModuleName": "SmartProcessing",
"FunctionName": "ProccessDCSPackage",
"Params": {
"Param1": "Value1",
"Param2": "Value2"
},
"FileTransferMode": "RequestBody",
"SharedFolderPath": "//server/DirectumRxSender/",
"UserName": "Service User",
"Password": "11111",
"TimeOutInSeconds": 60,
"TryCount": 1,
"WorkersCount": 2
}
]
Name. Уникальное имя модуля отправки, используемое для настройки линии. Указывается в параметре Sender экземпляра линии из секции Lines. Может содержать до 20 символов.
WorkingFolder. Полный или относительный путь к папке, в которой модуль отправки размещает свои временные файлы. Во втором случае путь задается относительно папки, указанной в параметре RootWorkingFolder.
Url. Адрес сервиса интеграции Directum RX. Обычно имеет вид: https://<имя сервера>/Integration/odata.
ModuleName. Имя модуля или решения, в котором создана функция интеграции для обработки отправленных пакетов.
FunctionName. Имя функции интеграции для обработки отправленных пакетов.
Params. Параметры, которые используются для передачи дополнительной информации в функцию интеграции. Можно указать несколько параметров.
FileTransferMode. Метод передачи файлов ввода. Возможные значения:
•RequestBody – в теле запроса. Значение по умолчанию. При выборе этого метода убедитесь, что на сервере достаточно оперативной памяти. Нужный объем рассчитывается по формуле:
<Размер пакета>*10*<WorkersCount>
•SharedFolder – через общую папку. Тела файлов копируются в папку, указанную в параметре SharedFolderPath, а после завершения запроса удаляются оттуда. Удаление происходит независимо от результата выполнения запроса.
SharedFolderPath. Путь до общей папки для передачи файлов ввода. Заполняется, если выбран метод передачи SharedFolder.
UserName, Password. Имя пользователя и пароль для аутентификации на сервисе интеграции, если используется парольная аутентификация. Используемый пароль можно зашифровать. Подробнее см. разделы «Шифрование параметров» и «Команды скриптов развертывания».
Если нужно использовать Windows-аутентификацию, оставьте параметры UserName и Password пустыми.
TimeOutInSeconds. Временной интервал, в течение которого модуль отправки будет ожидать выполнения функции. Если время ожидания истекает, то служба ввода может попытаться снова отправить пакет в зависимости от значения параметра TryCount. Задается в секундах, значение по умолчанию 60.
TryCount. Количество попыток, которое будет предпринято для отправки документа произвольную программу. Если за указанное количество попыток не удастся отправить документ, то пакет с документом сохранится в папке для неотправленных пакетов. Значение по умолчанию 1.
WorkersCount. Количество потоков отправки. Рекомендуется указывать значение, которое не превышает число ядер процессора. Значение по умолчанию 2.
© Компания Directum, 2024 |