<< Click to Display Table of Contents >> Интеграция с внешними системами Структура метаданных OData |
![]() ![]() ![]() |
Метаданные OData – это XML-файл с информацией о функциях и репозиториях типов сущностей платформы и прикладной части Directum RX, которые доступны через сервис интеграции. Файл удобно использовать, чтобы найти название нужной сущности или проверить, что созданные функции и типы сущностей доступны внешней системе. Подробнее описание метаданных см. в документации OData статью Queryable OData Metadata.
Чтобы получить метаданные, в GET-запросе укажите адрес в формате:
{Протокол https или http}://{имя сервера, на котором установлен сервис интеграции}/{имя сервиса интеграции}/odata/$metadata
Пример:
https://DirectumRXServer.com/Integration/odata/$metadata
Запрос вернет XML-файл. Информация в файле сгруппирована с помощью секций <Schema></Schema>:
Каждая секция Schema состоит из атрибутов:
•Namespace – пространство имен;
•Xmlns – ссылка на спецификацию OData CSDL.
Секция Schema с типами сущности модуля
Namespace секции строятся по формату: Sungero.IntegrationService.Models.Generated.<Имя модуля платформы или прикладной части>.
В примере в Namespace указано имя прикладного модуля Contracts:
<Schema Namespace="Sungero.IntegrationService.Models.Generated.Contracts" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityType Name="IIncomingInvoiceDto" BaseType="Sungero.IntegrationService.Models.Generated.Docflow.IAccountingDocumentBaseDto">
<Property Name="PaymentDueDate" Type="Edm.DateTimeOffset" />
<NavigationProperty Name="Contract" Type="Sungero.IntegrationService.Models.Generated.Contracts.IContractualDocumentDto" />
</EntityType>
<EntityType Name="ISupAgreementDto" BaseType="Sungero.IntegrationService.Models.Generated.Contracts.IContractualDocumentDto" />
...
</Schema>
Секция Schema с перекрытым типом сущности
Namespace секции строится по формату: Sungero.IntegrationService.Models.Generated.<Имя решения, в котором перекрыт тип сущности>.
В примере в Namespace указано решение SolutionHR, в котором перекрыт тип документа «Служебная записка» (Memo):
<Schema Namespace="Sungero.IntegrationService.Models.Generated.SolutionHR" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityType Name="IMemoDto" BaseType="Sungero.IntegrationService.Models.Generated.Docflow.IInternalDocumentBaseDto">
<NavigationProperty Name="Addressee" Type="Sungero.IntegrationService.Models.Generated.Company.IEmployeeDto" />
</EntityType>
</Schema>
Секция Schema со структурами типа сущности, модуля или решения
В секции находятся структуры, которые используются в качестве параметров или возвращаемых значений интеграционных функциях.
Namespace секции строится по одному из форматов:
•Sungero.IntegrationService.Models.Generated.<Имя модуля прикладной части или решения>, если структура находится в редакторе модуля или решения;
•Sungero.IntegrationService.Models.Generated.<Имя модуля прикладной части>.<Имя типа сущности>, если структура находится в редакторе типа сущности.
В примере структура находится в редакторе типа документа «Шаблон документа» (DocumentTemplate):
<Schema Namespace="Sungero.IntegrationService.Models.Generated.Docflow.DocumentTemplate" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<ComplexType Name="IDocumentTemplateDto">
<Property Name="DocumentType" Type="Edm.Guid" Nullable="false" />
<Property Name="Name" Type="Edm.String" />
<Property Name="Extension" Type="Edm.String" />
<Property Name="DocumentKinds" Type="Collection(Edm.Guid)" Nullable="false" />
<Property Name="Mapping" Type="Collection(Sungero.IntegrationService.Models.Generated.Docflow.DocumentTemplate.IDocumentTemplateParameterDto)" />
<Property Name="Body" Type="Edm.Binary" />
<Property Name="Preview" Type="Edm.Binary" />
</ComplexType>
...
</Schema>
Секция Schema с интеграционными функциями модуля
Namespace секции состоят из имени модуля, в котором созданы интеграционные функции. В примере функции находятся в модуле Plans:
<Schema Namespace="Plans" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<Action Name="AddValue" IsBound="true">
<Parameter Name="bindingParameter" Type="Collection(Sungero.IntegrationService.Controllers.Generated.Plans)" />
<Parameter Name="Name" Type="Edm.String" />
<Parameter Name="PlannedValue" Type="Edm.Double" Nullable="false" />
<Parameter Name="ActualValue" Type="Edm.Double" Nullable="false" />
</Action>
<Function Name="SumFunction" IsBound="true">
<Parameter Name="bindingParameter" Type="Collection(Sungero.IntegrationService.Controllers.Generated.Plans)" />
<Parameter Name="firstNumber" Type="Edm.Double" Nullable="false" />
<Parameter Name="secondNumber" Type="Edm.Double" Nullable="false" />
<ReturnType Type="Edm.Double" Nullable="false" />
</Function>
</Schema>
Секция со списком типов сущностей
В метаданных такая секция одна. Namespace имеет вид Sungero.IntegrationService. В секции находится список всех типов сущностей, которые используются в интеграции:
<Schema Namespace="Sungero.IntegrationService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="Container">
<EntitySet Name="IElectronicDocuments" EntityType="Sungero.IntegrationService.Models.Generated.Content.IElectronicDocumentDto">
<NavigationPropertyBinding Path="AssociatedApplication" Target="IAssociatedApplications" />
<NavigationPropertyBinding Path="Author" Target="IUsers" />
<NavigationPropertyBinding Path="Sungero.IntegrationService.Models.Generated.Contracts.IContractualDocumentDto/ResponsibleEmployee" Target="IEmployees" />
...
<EntitySet Name="IElectronicDocumentTemplates" EntityType="Sungero.IntegrationService.Models.Generated.Content.IElectronicDocumentTemplateDto">
<NavigationPropertyBinding Path="AssociatedApplication" Target="IAssociatedApplications" />
<NavigationPropertyBinding Path="Author" Target="IUsers" />
</EntitySet>
</Schema>
Секция со списком модулей, в которых есть функции интеграции
В метаданных такая секция одна. Namespace имеет вид Sungero.IntegrationService.Controllers.Generated:
<Schema Namespace="Sungero.IntegrationService.Controllers.Generated" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityType Name="SmartProcessing">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Edm.Int32" Nullable="false" />
</EntityType>
<EntityType Name="Docflow">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Edm.Int32" Nullable="false" />
</EntityType>
<EntityType Name="Plans">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Edm.Int32" Nullable="false" />
</EntityType>
</Schema>
Информация об интеграционной функции модуля, для которой в среде разработки добавлен атрибут [Public(WebApiRequestType = RequestType.Post)].
Имя структуры, которая используется в качестве параметра или возвращаемого значения интеграционной функции.
Точка доступа для выполнения операций с типом сущности (EntityType). Содержит список свойств с типом «Ссылка», которые есть у этого типа и его наследников.
Тип сущности, к которому можно обратиться через сервис интеграции. В среде разработки в редакторе типа установлен флажок Использовать в сервисе интеграции.
Name. Имя типа сущности. Чтобы найти тип сущности в среде разработки, удалите символ в начале имени и
в конце.
BaseType. Базовый тип сущности, от которого создан указанный тип.
В теге Property перечислены уникальные свойства типа сущности. Свойства, которые получены от базового типа сущности, перечислены в метаданных базового типа.
Информация об интеграционной функции модуля, для которой в среде разработки добавлен атрибут [Public(WebApiRequestType = RequestType.Get)].
В секции указано свойство, которое является идентификатором типа сущности, решения или модуля.
Имя свойства типа сущности с типом Ссылка.
Для каждого NavigationProperty в метаданных создан NavigationPropertyBinding. Это связь свойства с типом Ссылка (NavigationProperty) с точкой доступа EntitySet для выполнения операций.
Имя и тип параметра функции.
Имя и тип свойства типа сущности или поля структуры.
Тип возвращаемого значения функции.
© Компания Directum, 2024 |