Возможности интеграции с 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:
Группа операций | Операции |
---|---|
Операции с объектами |
|
Функции работы со строками |
|
Функции работы с датой и временем |
|
К СВЕДЕНИЮ
Необходимо учитывать, что в 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
- Работа с объектами bpm'online по протоколу OData с использованием Http-запросов
- Работа с объектами bpm'online по протоколу OData через WCF-клиент