DevBookmark_WebServices_ Для интеграции с внешними приложениями система Ultima Businessware® предлагает использование web сервисов по протоколам SOAP или с использованием REST API. Приложение рассчитано на обработку высокой нагрузки и поэтому средства разработки специально оптимизированы для создания web сервисов с message-based дизайном. Для удобства внешних разработчиков поддерживается сериализация в XML и JSON. Инструменты создания web сервисов позволяют в графическом интерфейсе описать DTO (Data Transfer Object) для запроса и возвращаемого значения. Таким образом, каждый web сервис состоит из:

класса запроса;

класса ответа;

скрипта, который принимает запрос и генерирует ответ.

Задачи маршрутизации, сериализации и десериализации система скрывает от прикладного разработчика.

Список всех web сервисов можно найти в справочнике "Web services":

WebService_ListForm

Окно справочника разделено на две части: слева отображается дерево групп web сервисов, справа – список сервисов выбранной слева группы.

Записи справочника можно фильтровать по Названию класса web сервиса (Name), его тексту (Script text) и Тегам (Tag).

Открыть скрипт выбранного сервиса в форме редактирования можно прямо из списковой формы справочника, выбрав пункт Edit script в контекстном меню.

Web сервис обладает следующими свойствами:

WebService_EditForm

Name – название класса web сервиса;

Script – ссылка на скрипт web сервиса. При создании нового сервиса скрипт создается автоматически при его сохранении;

Folder – группа, которой принадлежит web сервис. Нажатие на ссылку Click here to edit the script... при создании нового web сервиса приведет к сохранению сервиса и его перезагрузке, затем откроется форма редактирования скрипта;

Metadata tags – теги, используемые для описания функционала web сервиса;

Developer's comments – комментарии прикладного разработчика;

Request parameters – параметры (DTO) запроса reguest:

Name – название параметра;

Type – тип параметра, в качестве значения могут быть использованы типы POCO (Plain Old CLR Object) – примитивные типы CLR, даты, строки. Тип может быть выбран из существующих или веден вручную;

Is array – параметр может быть массивом указанного типа, если установлен данный флаг;

WebService_EditForm3

Developer's comments – комментарии прикладного разработчика;

Response parameters – параметры (DTO) ответа response. Их свойства аналогичны параметрам запроса.

И параметры запроса и параметры ответа могут иметь сложную вложенную структуру. Если у параметра есть дочерние параметры – для него будет сгенерирован отдельный вложенный класс. Для создания дочернего параметра необходимо выбрать родительский параметр и нажать кнопку WebService_EditForm2 в панели инструментов параметров.

При удалении родительского параметра, все его дочерние параметры станут параметрами первого уровня (с сохранением их вложенной структуры), даже если родительский параметр сам был дочерним для другого.

Параметры в списках можно перетаскивать за заголовок строки, удерживая нажатой левую кнопку мыши. Таким образом, выбранный параметр можно сделать дочерним для любого другого. Стрелка WebService_EditForm6 указывает, какой параметр будет выбран в качестве родительского:

WebService_EditForm4

Если перетащить параметр второго уровня на его же родительский параметр первого уровня, он сам переместится на первый уровень:

WebService_EditForm5

Web service returns list of response class instances – флаг, указывающий, что веб-сервис возвращает список значений.

Закладка Permissions позволяет быстро настроить список веб-ролей, которым предоставлен доступ к этому веб-сервису. Список ролей позволяет легко проконтролировать, доступен ли веб-сервис как минимум одной веб-роли:

WebService_EditForm1

По нажатию кнопки "Documents2_EditForm_bttn2 Class code" в панели инструментов формы редактирования открывается сгенерированный класс, описывающий web-сервис:

WebService_ClassCode

Пример веб-сервиса MyOrders, возвращающего список документов в заданном интервале дат:

class MyOrders : IReturn<List<MyOrdersResponse>>

{

 DateTime DateFrom

 DateTime DateTo

}

 

class MyOrdersResponse

{

 int ID

 string Comments

 DateTime Date

 Article[] Articles

 

 class Article

 {

         int ID

         string Name

         decimal Price

 }

}

DevBookmark_Scripts Интерфейс IWebService (из пространства имен Ultima.WebServices) реализует следующие методы:

Get(TRequest request) – выполняет указанный GET-запрос request;

Put(TRequest request) – выполняет указанный PUT-запрос request;

Post(TRequest request) – выполняет указанный POST-запрос request;

Delete(TRequest request) – выполняет указанный DELETE-запрос request;

Options(TRequest request) – выполняет указанный OPTIONS-запрос request;

Any(TRequest request) – используется для выполнения запроса request, метод которого отличен от перечисленных выше.

Помимо общедоступного web сервиса, развернутого администратором по конкретному адресу, он может быть запущен локально. Для этого необходимо указать в качестве его адреса Localhost в конфигурации сервера приложений:

WebService_AppServerConfig

Web разработчик может получить список доступных web сервисов по его адресу:

WebService_Host

WebService_Host2

Также поддерживается Swagger (спецификация, описание и документация REST сервиса):

WebService_Host3

Выбрав сервис и тип операции Get/Post (и, при необходимости, задав значения параметров), можно проверить работу сервиса нажатием кнопки "Try it on!":

WebService_Host4

35_important

Запросы к web сервису всегда выполняются от имени пользователя WebService и с его правами в защищенном режиме.

35_important

После любых изменений, внесенных в web-сервисы, необходимо перезагрузить их командой Reload web services, чтобы эти изменения вступили в силу.

Versions1_Ribbon3