BPMonline OData
-
Upload
igor-venzhyk -
Category
Technology
-
view
436 -
download
13
Transcript of BPMonline OData
![Page 1: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/1.jpg)
BPMonline +
OData
![Page 2: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/2.jpg)
OData – это работа с ресурсами
• REST (Representational State Transfer) - стиль построения архитектуры распределенного приложения
• Пользователь взаимодействуют с ресурсами, которыми может быть всё, что можно поименовать
• Каждый ресурс имеет свой уникальный идентификатор – URI
• Взаимодействие с ресурсами происходит по средствам HTTP
(GET, POST, PUT и DELETE)
• Ресурсы описывают себя сами
• Content-Type, Content-Length, …
• В ресурсах могут содержатся ссылки на другие ресурсы
![Page 3: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/3.jpg)
Ограничения REST
• Stateless – отсутствие состояния у сервера. Вся информация, необходимая для обработки запроса ресурса, содержится в самом запросе
• Idempotent – повторное действие над объектом не изменяет его
• Side Effects – запрашивая значение объекта по GET не должно происходить изменение этого или другого объекта
• HTTP(s) only
![Page 4: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/4.jpg)
![Page 5: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/5.jpg)
Кто уже использует?
• BPMonline Mobile
• BPMonline Mobile powered by Resco
• BPMonline Loyalty
• Проект Zyxel
• BPMonline 7.0
![Page 6: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/6.jpg)
Примеры запросов
• Получение коллекции объектов
• 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](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/7.jpg)
Добавление новой записи
• 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](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/8.jpg)
Изменение и удаление записи
• 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](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/9.jpg)
Администрирование OData
• Для каждого запроса строится ESQ
• Автоматически всегда используются права текущего пользователя
• Администрируемая операция (5.1.2, 5.4)
• Дополнительные права на объекты для внешних сервисов (5.5)
![Page 10: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/10.jpg)
Ресурсы в OData. Генерация метаданных
• Все ресурсы в OData описываются с помощью метаданных
• http://../EntityDataService.svc/$metadata
• Сущности
• EntitySchema => ResourceType
• Колонки
• EntitySchemaColumn => ResourceProperty
• Ссылки на сущности и обратные ссылки
• Lookup Column => NavigationProperty
![Page 11: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/11.jpg)
Фичи 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](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/12.jpg)
Выборки
• 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](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/13.jpg)
Фильтры
http://www.community.terrasoft.ru/developer/article/7591
![Page 14: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/14.jpg)
LINQ to ESQ
![Page 15: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/15.jpg)
Планы
• Кэширование запросов
• Поддержка всех функций в фильтрах
![Page 16: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/16.jpg)
Как посмотреть что уже есть
• Идем на коммюнити
• В поиск вводим «OData»
• Ищем в статьях
• Первая же статья содержит список поддерживаемой функциональности
![Page 17: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/17.jpg)
ДЕМО
![Page 18: BPMonline OData](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/18.jpg)
Запуск бизнес процессов в 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](https://reader031.fdocuments.net/reader031/viewer/2022020713/557fbd39d8b42a36118b4d58/html5/thumbnails/19.jpg)
Запуск бизнес процессов в BPMonline
Старт нового процессаhttps://demo.bpmonline.com/ServiceModel/ProcessEngineService.svc/ {ProcessSchemaName}/Execute/
• Заголовок запроса должен содержать авторизационную и сессионную куки
• {ProcessSchemaName} – имя процесса, экземпляр которого необходимо запустить на выполнение