SlideShare a Scribd company logo
1 of 19
BPMonline
+
OData
OData – это работа с ресурсами
• REST (Representational State Transfer) - стиль построения
архитектуры распределенного приложения
• Пользователь взаимодействуют с ресурсами, которыми может
быть всё, что можно поименовать
• Каждый ресурс имеет свой уникальный идентификатор – URI
• Взаимодействие с ресурсами происходит по средствам HTTP
(GET, POST, PUT и DELETE)
• Ресурсы описывают себя сами
• Content-Type, Content-Length, …
• В ресурсах могут содержатся ссылки на другие ресурсы
Ограничения REST
• Stateless – отсутствие состояния у сервера. Вся информация,
необходимая для обработки запроса ресурса, содержится в
самом запросе
• Idempotent – повторное действие над объектом не
изменяет его
• Side Effects – запрашивая значение объекта по GET не должно
происходить изменение этого или другого объекта
• HTTP(s) only
Кто уже использует?
• BPMonline Mobile
• BPMonline Mobile powered by Resco
• BPMonline Loyalty
• Проект Zyxel
• BPMonline 7.0
Примеры запросов
• Получение коллекции объектов
• http://../Service.svc/Customers
• Получение объекта по PK
• http://../Service.svc/Customers(523)
• Получение поля объекта
• http://../Service.svc/Customers(523)/Name
• Получение коллекции объектов с сортировкой
• http://../Service.svc/Customers?$orderby=Name
• Постарничный доступ
• http://../Service.svc/Customers?$top=10&$skip=20
• Получение коллекции объектов с фильтрацией
• http://../Service.svc/Customers?$filter=Created gt ’2008-01-01’
Добавление новой записи
• POST /Service.svc/ContactCollection
• Host mysite.com
• Authorization: Basic Uy5LYXJsbzpTLkthcmxv
• Content-Type: application/json
• {
• Name: 'John',
• Phone: ' 776-33-22',
• Account: { _metadata: uri 'Accounts(2)' }
• }
Изменение и удаление записи
• MERGE /Service.svc/ContactCollection(5)
• Host mysite.com
• Authorization: Basic Uy5LYXJsbzpTLkthcmxv
• Content-Type: application/json
• {
• Name: 'John Best'
• }
• DELETE /Service.svc/ContactCollection(5)
Администрирование OData
• Для каждого запроса строится ESQ
• Автоматически всегда используются права текущего
пользователя
• Администрируемая операция (5.1.2, 5.4)
• Дополнительные права на объекты для внешних сервисов (5.5)
Ресурсы в OData. Генерация метаданных
• Все ресурсы в OData описываются с помощью метаданных
• http://../EntityDataService.svc/$metadata
• Сущности
• EntitySchema => ResourceType
• Колонки
• EntitySchemaColumn => ResourceProperty
• Ссылки на сущности и обратные ссылки
• Lookup Column => NavigationProperty
Фичи BPMonline
• Поддержка двух типов авторизации
• Basic
• Cookie
• Получение значений по умолчанию
• /EntityDataService.svc/ContactCollection?GetDefValues=1
• Кодирование в Json
• /EntityDataService.svc/ContactCollection?$format=json*
• Content-type: application/json; verbose
• Accept-type: application/json; verbose
• Работа с бинарными данными
• Кэширование частых запросов
Выборки
• Select
• Service.svc/Contacts?$select=Name,Phone
• Value
• Service.svc/Contacts(3)/Name
• Service.svc/Contacts(3)/Name/$value
• Расширение сущности полями из справочников
• Service.svc/Contacts?$expand=City&$select=Name,City/Name
Фильтры
http://www.community.terrasoft.ru/developer/article/7591
LINQ to ESQ
Планы
• Кэширование запросов
• Поддержка всех функций в фильтрах
Как посмотреть что уже есть
• Идем на коммюнити
• В поиск вводим «OData»
• Ищем в статьях
• Первая же статья содержит список поддерживаемой
функциональности
ДЕМО
Запуск бизнес процессов в BPMonline
Авторизация
https://demo.bpmonline.com/ServiceModel/AuthService.svc/Login
• POST
• GET
5.1.0.X 5.2.0.X 5.3.0.X +
{
"Login":"I.Venzhyk",
"Password":"I.Venzhyk",
"Solution":"TSBpm",
"TimeZoneOffset":1,
"Language":"Ru-ru"
}
{
"UserLogin":"Supervisor",
"UserPassword":"Supervisor",
"SolutionName":"TSBpm",
"TimeZoneOffset":-120,
"Language":"Ru-ru"
}
{
"UserName":"Supervisor",
"UserPassword":"Supervisor",
"SolutionName":"TSBpm",
"TimeZoneOffset":-120
"Language":"Ru-ru"
}
https://demo.bpmonline.com/ServiceModel/AuthService.svc/Login?
UserName={UserName}&
UserPassword={UserPassword}&
SolutionName={SolutionName}&
Language={Language}&
TimeZoneOffset={TimeZoneOffset}
Запуск бизнес процессов в BPMonline
Старт нового процесса
https://demo.bpmonline.com/ServiceModel/ProcessEngineService.svc/
{ProcessSchemaName}/Execute/
• Заголовок запроса должен содержать авторизационную и
сессионную куки
• {ProcessSchemaName} – имя процесса, экземпляр которого
необходимо запустить на выполнение

More Related Content

Similar to BPMonline OData

ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIGetDev.NET
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 
Lesson1
Lesson1Lesson1
Lesson1jinol
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful ArchitechtureOntico
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)Sergey Skvortsov
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web APIByndyusoft
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia Tsisyk
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1Technopark
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Ontico
 
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложенияЕсть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложенияNicolay Velizhanin
 
Drupal и мобильные устройства
Drupal и мобильные устройстваDrupal и мобильные устройства
Drupal и мобильные устройстваKonstantin Komelin
 
Drupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства, Комелин КонстантинDrupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства, Комелин КонстантинPVasili
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинdrupalconf
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP7bits
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015Alexandr Petrov
 
ук 03.002.01 2011
ук 03.002.01 2011ук 03.002.01 2011
ук 03.002.01 2011etyumentcev
 

Similar to BPMonline OData (20)

ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Lesson1
Lesson1Lesson1
Lesson1
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)
 
Flask, rest and data
Flask, rest and dataFlask, rest and data
Flask, rest and data
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web API
 
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
 
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложенияЕсть ли жизнь с ORM или типовая архитектура CRUD приложения
Есть ли жизнь с ORM или типовая архитектура CRUD приложения
 
Drupal и мобильные устройства
Drupal и мобильные устройстваDrupal и мобильные устройства
Drupal и мобильные устройства
 
Drupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства, Комелин КонстантинDrupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства, Комелин Константин
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Hibernate & JPA perfomance
Hibernate & JPA perfomance Hibernate & JPA perfomance
Hibernate & JPA perfomance
 
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTPСтажировка-2013, разработчики, занятие 7. Web, HTTP
Стажировка-2013, разработчики, занятие 7. Web, HTTP
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 
ук 03.002.01 2011
ук 03.002.01 2011ук 03.002.01 2011
ук 03.002.01 2011
 

BPMonline OData

  • 2. OData – это работа с ресурсами • REST (Representational State Transfer) - стиль построения архитектуры распределенного приложения • Пользователь взаимодействуют с ресурсами, которыми может быть всё, что можно поименовать • Каждый ресурс имеет свой уникальный идентификатор – URI • Взаимодействие с ресурсами происходит по средствам HTTP (GET, POST, PUT и DELETE) • Ресурсы описывают себя сами • Content-Type, Content-Length, … • В ресурсах могут содержатся ссылки на другие ресурсы
  • 3. Ограничения REST • Stateless – отсутствие состояния у сервера. Вся информация, необходимая для обработки запроса ресурса, содержится в самом запросе • Idempotent – повторное действие над объектом не изменяет его • Side Effects – запрашивая значение объекта по GET не должно происходить изменение этого или другого объекта • HTTP(s) only
  • 4.
  • 5. Кто уже использует? • BPMonline Mobile • BPMonline Mobile powered by Resco • BPMonline Loyalty • Проект Zyxel • BPMonline 7.0
  • 6. Примеры запросов • Получение коллекции объектов • http://../Service.svc/Customers • Получение объекта по PK • http://../Service.svc/Customers(523) • Получение поля объекта • http://../Service.svc/Customers(523)/Name • Получение коллекции объектов с сортировкой • http://../Service.svc/Customers?$orderby=Name • Постарничный доступ • http://../Service.svc/Customers?$top=10&$skip=20 • Получение коллекции объектов с фильтрацией • http://../Service.svc/Customers?$filter=Created gt ’2008-01-01’
  • 7. Добавление новой записи • POST /Service.svc/ContactCollection • Host mysite.com • Authorization: Basic Uy5LYXJsbzpTLkthcmxv • Content-Type: application/json • { • Name: 'John', • Phone: ' 776-33-22', • Account: { _metadata: uri 'Accounts(2)' } • }
  • 8. Изменение и удаление записи • MERGE /Service.svc/ContactCollection(5) • Host mysite.com • Authorization: Basic Uy5LYXJsbzpTLkthcmxv • Content-Type: application/json • { • Name: 'John Best' • } • DELETE /Service.svc/ContactCollection(5)
  • 9. Администрирование OData • Для каждого запроса строится ESQ • Автоматически всегда используются права текущего пользователя • Администрируемая операция (5.1.2, 5.4) • Дополнительные права на объекты для внешних сервисов (5.5)
  • 10. Ресурсы в OData. Генерация метаданных • Все ресурсы в OData описываются с помощью метаданных • http://../EntityDataService.svc/$metadata • Сущности • EntitySchema => ResourceType • Колонки • EntitySchemaColumn => ResourceProperty • Ссылки на сущности и обратные ссылки • Lookup Column => NavigationProperty
  • 11. Фичи BPMonline • Поддержка двух типов авторизации • Basic • Cookie • Получение значений по умолчанию • /EntityDataService.svc/ContactCollection?GetDefValues=1 • Кодирование в Json • /EntityDataService.svc/ContactCollection?$format=json* • Content-type: application/json; verbose • Accept-type: application/json; verbose • Работа с бинарными данными • Кэширование частых запросов
  • 12. Выборки • Select • Service.svc/Contacts?$select=Name,Phone • Value • Service.svc/Contacts(3)/Name • Service.svc/Contacts(3)/Name/$value • Расширение сущности полями из справочников • Service.svc/Contacts?$expand=City&$select=Name,City/Name
  • 15. Планы • Кэширование запросов • Поддержка всех функций в фильтрах
  • 16. Как посмотреть что уже есть • Идем на коммюнити • В поиск вводим «OData» • Ищем в статьях • Первая же статья содержит список поддерживаемой функциональности
  • 18. Запуск бизнес процессов в BPMonline Авторизация https://demo.bpmonline.com/ServiceModel/AuthService.svc/Login • POST • GET 5.1.0.X 5.2.0.X 5.3.0.X + { "Login":"I.Venzhyk", "Password":"I.Venzhyk", "Solution":"TSBpm", "TimeZoneOffset":1, "Language":"Ru-ru" } { "UserLogin":"Supervisor", "UserPassword":"Supervisor", "SolutionName":"TSBpm", "TimeZoneOffset":-120, "Language":"Ru-ru" } { "UserName":"Supervisor", "UserPassword":"Supervisor", "SolutionName":"TSBpm", "TimeZoneOffset":-120 "Language":"Ru-ru" } https://demo.bpmonline.com/ServiceModel/AuthService.svc/Login? UserName={UserName}& UserPassword={UserPassword}& SolutionName={SolutionName}& Language={Language}& TimeZoneOffset={TimeZoneOffset}
  • 19. Запуск бизнес процессов в BPMonline Старт нового процесса https://demo.bpmonline.com/ServiceModel/ProcessEngineService.svc/ {ProcessSchemaName}/Execute/ • Заголовок запроса должен содержать авторизационную и сессионную куки • {ProcessSchemaName} – имя процесса, экземпляр которого необходимо запустить на выполнение

Editor's Notes

  1. Сегодня OData используется в массе продуктов Microsoft и сторонних компаний: Excel, SharePoint, SQL Server Reporting Services, Dynamics CRM, Windows Server и Windows Azure.
  2. Сильно похоже на описание принцепов интернета Representational State Transfer «передача состояния представления»
  3. Должно быть четкое понимание разницы. Увеличить цену за проезд на 1 грн – это бизнес операция Заменить старое значение цены с 2 грн на 3грн – это изменение ресурса Representational State Transfer «передача состояния представления»
  4. Термин  идемпотентность  означает свойство математического объекта, которое проявляется в том, что повторное действие над объектом  не изменяет  его. Какие преимущества
  5. Какие дает нам плюсы поддержка протокола OData.
  6. Примеры запросов Paging XML/Json
  7. http://tscoredev5:88/BPMonline550Solution/0/ServiceModel/EntityDataService.svc/$metadata
  8. Кэширование частых запросов при постраничности по умолчанию Дополнительный параметр для пользовательских кэшей http://tscoredev5:88/BPMonline550Solution/0/ServiceModel/EntityDataService.svc/ContactCollection? GetDefValues = 1
  9. $value – возвращает только значение поля без какого либо кодирования или форматирования, Если не указывать $value значение поля будет обернуто в xml или json
  10. Побочный продукт Посути реализовали свой парсер линк запросов
  11. Информация всегда обновляется и держиться актуальной
  12. Жизненный цикл запроса на примере собственного модуля Создание хендлера . Обработка запросов в хендлере. Получение UserConnection Жизненный цикл хендлера Как организовать анонимный доступ к сервису или хендлеру (С UserConnection и без)