Создание и публикация веб-сервисов

Публикация и работа созданных в Loginom веб-сервисов доступна при наличии установленного компонента Loginom Integrator.

Реализация методов сервиса

Взаимодействие с веб-сервисом осуществляется при помощи его методов. Каждый метод веб-сервиса имеет определенный идентификатор и выполняет сопоставленное этому идентификатору действие. Как правило, (но не обязательно) метод принимает входные данные и возвращает ответ. Действие, выполняемое методом, в Loginom реализуется публикуемым узлом Сценария, а структура входных данных и ответа определяется входными и выходными портами этого узла. В качестве идентификатора метода используется строка, состоящая из имени узла и имени пакета, в котором узел содержится.

Чаще всего в качестве такого узла выступает Подмодель, поскольку в ней пользователь имеет возможность реализовать произвольную логику и задать структуру входных и выходных данных, создавая и настраивая ее порты. Но в общем случае таким узлом может быть любой узел Сценария, имеющий настройки, описанные в разделе Настройка публикуемых узлов. В случае, если таких узлов в пакете несколько и публикуется несколько пакетов, то для каждого из таких узлов создается соответствующий ему метод SOAP-сервиса и операция REST-сервиса. В случае с REST-сервисом для каждого из публикуемых пакетов создается конечная точка REST-сервиса.

Настройка публикуемых узлов

Публикуемый в качестве метода веб-сервиса узел должен иметь следующие настройки:

  • задан модификатор доступа Опубликованный;
  • в окне выбора модификатора доступа задано уникальное в пределах пакета имя узла;
  • узел должен быть видимым из корня сценария, т.е. в случае, если узел является вложенным (в подмодель или иерархию подмоделей), то у всех подмоделей, в которых он содержится, должен быть установлен модификатор доступа Открытый;
  • во входных и выходных портах заданы поля/переменные, определяющие структуру запроса и ответа метода веб-сервиса.

Важно: при использовании автосинхронизации полей возможны ситуации, когда поля/переменные в портах определены механизмом автосинхронизации из структуры данных, подаваемых в порт. Если при включенной автосинхронизации удалить связь порта с источником данных, то ранее созданные из данных поля/переменные будут удалены из порта механизмом автосинхронизации как временные, актуальные только для конкретных данных. При публикации такого узла поля/переменные в портах не будут заданы, соответственно структуры запроса/ответа сервиса не будут определены.

В связи с этим порты публикуемых узлов необходимо настроить одним из способов:

  • Отключить автосинхронизацию полей и при необходимости задать нужные поля/переменные (рекомендуется).
  • Если механизмом автосинхронизации уже созданы необходимые поля/переменные из подаваемых в порт данных, то необходимо отредактировать любой из параметров (Имя, Метку, Назначение и т.д.) всех необходимых полей/переменных. Измененные поля выделяются в мастере настройки порта жирным шрифтом и фиксируются как постоянные, ожидаемые портом.
  • Очистить список и создать все необходимые поля/переменные вручную.

Параметр Назначение входного поля влияет на свойство его обязательности в запросе к сервису. Поля с Назначением Не задано или Непригодное публикуются как необязательные (в WSDL SOAP-сервиса имеют атрибут minOccurs="0", а в схеме запроса REST-сервиса не входят в состав required-узлов). Поля с другими значениями параметра являются обязательными в запросе. В ответе сервиса все поля публикуются как обязательные.

Публикация

После того, как необходимые для публикации узлы сценария настроены, необходимо произвести публикацию пакета.

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

Для публикации пакета требуется перейти в редактирование веб-сервиса. После открытия навигации существует два способа:

  • Перейти во вкладку Веб-сервисы и нажать на кнопку Добавить;
  • Правой кнопкой мыши нажать на публикуемый пакет и выбрать Опубликовать.

Обращение к созданному сервису

WSDL опубликованного SOAP-сервиса можно получить по ссылке:

http://<Server>/<App>/soap?wsdl, где <Server> — хост Loginom Integrator, <App> — имя приложения Loginom Integrator (задается при инсталляции Loginom Integrator, при установке по умолчанию <App> = lgi).

Пример: http://localhost/lgi/soap?wsdl

Информацию о конечных точках, операциях, URL, структуре REST-запросов и ответов можно получить по ссылке:

http://<Server>/<App>/rest/help, где <Server> — хост Loginom Integrator, <App> — имя приложения Loginom Integrator (задается при инсталляции Loginom Integrator, при установке по умолчанию <App> = lgi).

Пример: http://localhost/lgi/rest/help

Для обращения к опубликованным сервисам из сценария Loginom используются компоненты SOAP-запрос и REST-запрос.

Loginom Integrator поддерживает OpenAPI и опционально включает Swagger UI. Для тестирования API можно выполнять запросы на странице http://<Server>/<App>/openapi/index.html.

Пример: http://localhost/lgi/openapi/index.html

Совместимость веб-сервисов Loginom с Deductor

В продуктах прошлого поколения (Deductor) публикация веб-сервисов осуществлялась DIS (Deductor Integration Server), а обращение к веб-сервисам DIS из сценариев Deductor осуществлялось при помощи узла WEB-сервис. Чтобы использовать этот узел для обращения к веб-сервисам Loginom, при публикации пакетов должна применятся настройка Использовать пространство имен Loginom Integrator. Кроме того, в конфигурации Loginom Integrator должно быть указано непустое значение атрибута urlPathPrefix.

Примечание: применение настройки Использовать пространство имен Loginom Integrator при публикации нескольких пакетов накладывает ограничение на именование публикуемых узлов. Имена, задаваемые при выборе модификатора доступа, должны быть уникальны в рамках всего набора публикуемых пакетов.

Веб-сервисы Loginom имеют следующую особенность: XML ответов и запросов веб-сервисов в своей структуре могут иметь элемент <PortName> (элемент содержит имя порта), отсутствующий в веб-сервисах DIS. Для устранения этого различия в публикуемых подмоделях Loginom в имени порта должно указываться <Не задано>.

Примечание: опция <Не задано> при именовании порта доступна в случае, если этот порт единственный входной или выходной. В этом случае для формирования произвольной структуры запроса/ответа в качестве портов Подмодели удобно использовать порты типа Дерево данных с возможностью задать структуру данных XSD-схемой, т.е. использовать тот же механизм, что и в Deductor Integration Server.