Upload
igor-venzhyk
View
432
Download
13
Embed Size (px)
Citation preview
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} – имя процесса, экземпляр которого необходимо запустить на выполнение