Создание нового Провайдера
Расширение провайдера представляет собой серверное расширение, содержащее класс, наследуемый от DocsVision.Platform.StorageServer.Extensibility.StorageServerExtension.
Класс провайдера должен реализовать метод GenerateReport интерфейса ReportLib.Interfaces.IReportProvider. Данный метод вызывается основным сервисом генерации отчётов, и потому должен быть помечен атрибутом ExtensionMethod.
Метод GenerateReport получает объект ReportParametersCollection в формате .json — набор параметров в виде словаря ключ-значение, где ключ — название параметра, а значение — список его допустимых значений.
-
reportRowId— идентификатор строки шаблона отчёта в справочнике отчётов; -
format— формат файла отчёта, соответствует значению параметра Расширение файла отчёта в справочнике параметров. -
Метод возвращает объект
ReportLib.Models.ReportResponseв формате.json, содержащий следующие поля: -
Report— строка отчёта в форматеbase64; -
Format— расширение файла отчёта; -
Error— текст ошибки.
Пример реализации нового провайдера
using ReportLib.Interfaces;
using ReportLib.Models;
namespace ProviderSampleServerExtension
{
public class ServerExtension : StorageServerExtension, IReportProvider
{
[ExtensionMethod]
public string GenerateReport(string jsonParameters)
{
ReportResponse response = null;
try
{
ReportParametersCollection parameters = JsonCon-vert.DeserializeObject<ReportParametersCollection>(jsonParameters);
...
BaseUniversalItem reportRow = objectCon-text.GetObject<BaseUniversalItem>(new Guid(parameters["reportRowId"][0]));
...
response = new ReportResponse() { Report = base64String, Format = parame-ters["format"][0], Error = null };
}
catch (Exception ex)
{
response = new ReportResponse() { Report = null, Format = null, Error = ex.Message };
}
string jsonResponse = JsonConvert.SerializeObject(response);
return jsonResponse;
}
}
}
Итоговую сборку зарегистрируйте на сервере приложений Docsvision под именем <имя_провайдера_в_карточке_провайдера> + ServerExtension. Пример регистрации сборки расширения нового провайдера на примере FastReport:
"FastReportServerExtension"="FastReportServerExtension.ServerExtension, FastReportServ-erExtension, Version=1.0.0.0, Culture=neutral, PublicKeyToken=064560e3f02203a1"