Creatio development guide
PDF

Возможности интеграции с bpm'online по протоколу OData

Glossary Item Box

Общая информация

Протокол Open Data (OData) — это открытый веб–протокол для запроса и обновления данных, базирующийся на архитектурном подходе REST с применением стандартов Atom/XML и JSON.

Доступ к данным и объектам bpm'online по протоколу OData может получить любое стороннее приложение, которое поддерживает обмен сообщениями HTTP и может обрабатывать данные XML или JSON. При этом данные доступны в виде ресурсов, адресуемых через URI.

Доступ к данным и их изменение осуществляется с помощью стандартных HTTP–команд GET, PUT/MERGE, POST и DELETE.

ВАЖНО

Использование HTTP–методов PUT и DELETE приведет к ошибке "405 Method not allowed", если не отключить HTTP расширение WebDAV в файле Web.Config настройки приложения.

Работа по протоколу OData имеет ряд особенностей, которые обусловлены спецификой REST–подхода:

  • Сервер приложений не хранит состояния сессии. Вся информация, необходимая для обработки запроса, содержится в самом запросе.
  • Объекты OData обладают свойством идемпотентности. То есть повторное действие над объектом не изменяет его.
  • При получении значения объекта GET–запросом не должно происходить изменение данного или любого другого объекта.

В настоящее время разработано большое количество клиентских библиотек по работе с OData для популярных прикладных и мобильных платформ, в том числе для:

  • .NET
  • Silverlight
  • JavaScript/HTML5
  • Java
  • PHP
  • Ruby
  • WP7
  • Android
  • iOS

Все клиентские библиотеки по работе с OData доступны для загрузки по адресу http://www.odata.org/libraries.

Реализация протокола OData в bpm'online

Приложение bpm'online поддерживает следующие операции с объектами и их коллекциями по протоколу OData:

Группа операций Операции
Операции с объектами
  • Добавление объекта
  • Обновление объекта
  • Удаление объекта
  • Добавление связей между объектами
  • Удаление связей между объектами
  • Получение метаданных — описание всех бизнес–сущностей
  • Получение коллекции объектов
  • Получение конкретного объекта
  • Получение отдельного поля конкретного объекта
  • Выборка нескольких полей конкретного объекта
  • Расширение объекта полями из справочных объектов
  • Сортировка объектов
  • Получение первых N объектов коллекции
  • Возврат коллекции объектов, пропустив первые N объектов (с N+1 объекта)
  • Все арифметические и логические операции, поддерживаемые протоколом
  • Группировка фильтров
Функции работы со строками
  • bool substringof(string po, string p)
  • string toupper(string p0)
  • bool endswith(string p0, string p1)
  • bool startswith(string p0, string p1)
  • int length(string p0)
  • string trim(string p0)
Функции работы с датой и временем
  • int year (DateTime p0)
  • int month(DateTime p0)
  • int day(DateTime p0)

К СВЕДЕНИЮ

Необходимо учитывать, что в bpm'online реализована принудительная постраничность при возврате результирующих коллекций объектов. Так, по умолчанию запрос возвращает первые 40 объектов. Для изменения реализации постраничности по умолчанию можно использовать стандартные конструкции запросов OData: $top, $skip, $orderby.

Примеры построения запросов для доступа к объектам bpm'online по протоколу OData приведены ниже.

Работа с объектами bpm'online по протоколу OData

Сервис OData для доступа к объектам bpm'online

Доступ к сущностям bpm'online по протоколу OData предоставляет веб–сервис EntityDataService.svc.

Адрес сервиса EntityDataService.svc:

http[s]://<адрес_приложения_bpm'online>/0/ServiceModel/EntityDataService.svc

Пример

https://myserver.com/BpmonlineWebApp/0/ServiceModel/EntityDataService.svc

Модель данных сервиса EntityDataService.svc описывается в его метаданных, которые можно получить, используя стандартную конструкцию синтаксиса OData — $metadata.

Пример

https://myserver.com/BpmonlineWebApp/0/ServiceModel/EntityDataService.svc/$metadata

Аутентификация запросов

Все запросы к bpm'online должны быть аутентифицированы.

Поддерживаемые bpm'online способы аутентификации описаны в статье Аутентификация внешних запросов к веб-сервисам bpm'online.

ForceUseSession

Для каждого запроса по протоколу OData создается новая сессия. При большом количестве запросов это может привести к блокированию базы данных.

Для принудительного использования уже существующей сессии при отправке запроса по протоколу OData используйте параметр (для GET-запросов) или заголовок (для всех типов запросов) ForceUseSession.

Пример c параметром в строке запроса:

https://mybpmonline.com/0/ServiceModel/EntityDataService.svc/ActivityFileCollection(guid'71fff37b-3e84-4042-a7bb-ec1b49876e1b')/Data?ForceUseSession=true

Пример GET-запроса c заголовком:

GET http://mybpmonline.com/0/ServiceModel/EntityDataService.svc/ContactCollection?$expand=Account,Photo&$select=Name,Account/Id,Account/Name,Photo/Id,Photo/Name,Id&$orderby=Name%20asc&$skip=0&$top=25
Host: tscore-dev-19:8200
Connection: keep-alive
MaxDataServiceVersion: 3.0
Authorization: Cookie
X-Terrasoft-Mobile: true
Accept: application/json;odata=verbose
ForceUseSession: true
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
UseUTC: true
Accept-Encoding: gzip, deflate, sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: BPMSESSIONID=uzyl0rpulps1u31ausa45djj; BPMLOADER=w2olybp2pnf3wcksluslc5ik; .ASPXAUTH=6CD87FE8950261E5A84774F24F256B2975A89A77ADBA1F52AF55AA3511FAAE7C5FF81A52AB33CC8A71EB8CF973DB059BF8357D68A337C81B4E6D1F1CA941BF6BEAA3E09A13C1EEB38D42BBA70DA9F965A4C87569EE53C4D2BB06B4EAC004E7CA3C497D32664C69BB9F4443B58A97E9335BCD09F6B655DD20DB75EAE1A7472B8840F8C56247D23966DD029B7570663A4827949D88A81BBCC958590C640F529179AB8FA1DE2CF8829C247372F7472AC5A1193F23461BDD52B8AF81125414FAA25C040C6922839D140EB57CE5B1B446A705326F0FFBE85CA65DA1DABA5A2A7EFADAF17E70111398C1DEAD142778C5106CAA4A42D88C74ACA0FC86AC95BB90723AEE3E483ACEEB3CB6EB45E38121C9F9EF4A8ECE354445355E970E825894773A9353F540E221A94261AC423592CAD7537C2D235D98BA; UserName=208, 144, 208, 180, 208, 188, 208, 184, 208, 189, 208, 184, 209, 129, 209, 130, 209, 128, 208, 176, 209, 130, 208, 190, 209, 128, 32, 49

 

Примеры реализации доступа к объектам bpm'online по протоколу OData

Смотрите также

© Terrasoft 2002-2019.

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

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