19
BPMonlin e + OData

BPMonline OData

Embed Size (px)

Citation preview

Page 1: BPMonline OData

BPMonline +

OData

Page 2: BPMonline OData

OData – это работа с ресурсами

• REST (Representational State Transfer) - стиль построения архитектуры распределенного приложения

• Пользователь взаимодействуют с ресурсами, которыми может быть всё, что можно поименовать

• Каждый ресурс имеет свой уникальный идентификатор – URI

• Взаимодействие с ресурсами происходит по средствам HTTP

(GET, POST, PUT и DELETE)

• Ресурсы описывают себя сами

• Content-Type, Content-Length, …

• В ресурсах могут содержатся ссылки на другие ресурсы

Page 3: BPMonline OData

Ограничения REST

• Stateless – отсутствие состояния у сервера. Вся информация, необходимая для обработки запроса ресурса, содержится в самом запросе

• Idempotent – повторное действие над объектом не изменяет его

• Side Effects – запрашивая значение объекта по GET не должно происходить изменение этого или другого объекта

• HTTP(s) only

Page 4: BPMonline OData
Page 5: BPMonline OData

Кто уже использует?

• BPMonline Mobile

• BPMonline Mobile powered by Resco

• BPMonline Loyalty

• Проект Zyxel

• BPMonline 7.0

Page 6: BPMonline OData

Примеры запросов

• Получение коллекции объектов

• 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’

Page 7: BPMonline OData

Добавление новой записи

• 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)' }

• }

Page 8: BPMonline OData

Изменение и удаление записи

• MERGE /Service.svc/ContactCollection(5)

• Host mysite.com

• Authorization: Basic Uy5LYXJsbzpTLkthcmxv

• Content-Type: application/json

• { 

•   Name: 'John Best'

•  }

• DELETE /Service.svc/ContactCollection(5)

Page 9: BPMonline OData

Администрирование OData

• Для каждого запроса строится ESQ

• Автоматически всегда используются права текущего пользователя

• Администрируемая операция (5.1.2, 5.4)

• Дополнительные права на объекты для внешних сервисов (5.5)

Page 10: BPMonline OData

Ресурсы в OData. Генерация метаданных

• Все ресурсы в OData описываются с помощью метаданных

• http://../EntityDataService.svc/$metadata

• Сущности

• EntitySchema => ResourceType

• Колонки

• EntitySchemaColumn => ResourceProperty

• Ссылки на сущности и обратные ссылки

• Lookup Column => NavigationProperty

Page 11: BPMonline OData

Фичи BPMonline

• Поддержка двух типов авторизации

• Basic

• Cookie

• Получение значений по умолчанию

• /EntityDataService.svc/ContactCollection?GetDefValues=1

• Кодирование в Json

• /EntityDataService.svc/ContactCollection?$format=json*

• Content-type: application/json; verbose

• Accept-type: application/json; verbose

• Работа с бинарными данными

• Кэширование частых запросов

Page 12: BPMonline OData

Выборки

• 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

Page 13: BPMonline OData

Фильтры

http://www.community.terrasoft.ru/developer/article/7591

Page 14: BPMonline OData

LINQ to ESQ

Page 15: BPMonline OData

Планы

• Кэширование запросов

• Поддержка всех функций в фильтрах

Page 16: BPMonline OData

Как посмотреть что уже есть

• Идем на коммюнити

• В поиск вводим «OData»

• Ищем в статьях

• Первая же статья содержит список поддерживаемой функциональности

Page 17: BPMonline OData

ДЕМО

Page 18: BPMonline 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}

Page 19: BPMonline OData

Запуск бизнес процессов в BPMonline

Старт нового процессаhttps://demo.bpmonline.com/ServiceModel/ProcessEngineService.svc/ {ProcessSchemaName}/Execute/

• Заголовок запроса должен содержать авторизационную и сессионную куки

• {ProcessSchemaName} – имя процесса, экземпляр которого необходимо запустить на выполнение