Документация

Документация по разработке bpm’online
PDF
Как создать анонимный веб-сервис

Glossary Item Box

Общие положения

Сервисная модель bpm'online реализует базовый набор веб-сервисов, с помощью которых может быть организована интеграция bpm'online с внешними приложениями и системами. Примерами системных сервисов являются EntityDataService.svc, который предоставляет возможности обмена данными с bpm'online по протоколу OData, а также ProcessEngineService.svc, с помощью которого можно осуществлять запуск бизнес-процессов bpm'online из внешних приложений. Эти сервисы реализованы на основе технологии WCF и управляются на уровне IIS.

Также в bpm'online существуют конфигурационные веб-сервисы, предназначенные для вызова из клиентской части приложения. С помощью конфигурационных веб-сервисов можно реализовывать специфические интеграционные задачи. Создание пользовательского конфигурационного сервиса описано в статье "Как создать свой конфигурационный сервис".

Большинство WCF-сервисов для своего использования требуют предварительной аутентификации пользователя. Однако некоторые из сервисов, такие как, например, AuthService.svc, позволяют анонимное использование.

ВАЖНО

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

Чтобы создать WCF-сервис, доступный без аутентификации пользователей:

  1. Создайте конфигурационный веб-сервис (при необходимости).
  2. Зарегистрируйте WCF-сервис.
  3. Сконфигурируйте WCF-сервис для протоколов http и https.
  4. Настройте доступ к WCF-сервиса для всех пользователей.

ВАЖНО

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

Описание примера

Создать анонимный веб-сервис, возвращающий идентификатор контакта по предоставленному имени. Если найденных контактов несколько, то необходимо возвратить идентификатор только первого найденного контакта. Если контакт не найден, сервис должен вернуть пустую строку.

К сведению

В качестве конфигурационного веб-сервиса можно использовать сервис, созданный на основе примера, описанного в статье "Как создать свой конфигурационный сервис".

Алгоритм реализации примера

1. Создать конфигурационный сервис

Создание конфигурационного сервиса, полностью удовлетворяющего условиям примера, описано в статье "Как создать свой конфигурационный сервис".

2. Зарегистрировать WCF-сервис

Для этого в каталоге ..\Terasoft.WebApp\ServiceModel создайте файл UsrCustomConfigurationService.svc и добавьте в него следующую запись:

<%@ ServiceHost Language="C#" Debug="true" Service="Terrasoft.Configuration.UsrCustomConfigurationService.UsrCustomConfigurationService" %>

Здесь в атрибуте Service указывается полное имя класса конфигурационного сервиса. Подробнее о WCF-директиве @ServiceHost читайте в документации Microsoft.

3. Сконфигурировать WCF-сервис для протоколов http и https

Для этого необходимо в файлах services.config, расположенных в каталогах ..\Terasoft.WebApp\ServiceModel\http и ..\Terasoft.WebApp\ServiceModel\https добавить следующую запись

<services>
    ...
    <service name="Terrasoft.Configuration.UsrCustomConfigurationService.UsrCustomConfigurationService">
        <endpoint name="UsrCustomConfigurationServiceEndPoint"
            address=""
            binding="webHttpBinding"
            behaviorConfiguration="RestServiceBehavior"
            bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
            contract="Terrasoft.Configuration.UsrCustomConfigurationService.UsrCustomConfigurationService" />
    </service>
</services>

Здесь выполняется конфигурирование сервиса. Элемент <services> содержит перечень конфигураций всех сервисов приложения (вложенные элементы <service>). Атрибут name содержит название типа (класса или интерфейса), реализующего контракт сервиса. Вложенный элемент <endpoint> требует адрес, привязку и интерфейс, определяющий контракт сервиса, указанный в атрибуте name элемента <service>.

Подробное описание элементов конфигурирования сервиса дано в документации.

4. Настройте доступ к WCF-сервису для всех пользователей

Для этого в файл ..\Terasoft.WebApp\Web.config внесите следующие изменения:

  • Добавьте элемент <location>, определяющий относительный путь и права доступа к сервису.
  • В элементе <appSettings> измените значение value для ключа "AllowedLocations", добавив в него относительный путь к сервису.

Пример изменений в файле ..\Terasoft.WebApp\Web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  ...
  <location path="ServiceModel/UsrCustomConfigurationService.svc">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  ... 
  <appSettings>
    ...
    <add key="AllowedLocations" value="[Предыдущие значения];ServiceModel/UsrCustomConfigurationService.svc"  />
    ...
  </appSettings>
  ...
</configuration>

После перезагрузки пула приложения в IIS сервис станет доступен по адресу:

[Адрес приложения]/0/ServiceModel/[Название сервиса].svc/[Конечная точка пользовательского сервиса]?[Опциональные параметры]

Например,

http://mysite.bpmonline.com/0/ServiceModel/UsrCustomConfigurationService.svc/GetContactIdByName?Name=Supervisor

К сервису можно обращаться, например из браузера (рис. 1), как с предварительным вводом логина и пароля, так и без них.

Рис. 1. — Пример доступа к анонимному сервису из браузера

 

 

 

© Terrasoft 2002-2018.

Был ли данный материал полезен?

Как можно улучшить эту статью?