XX:YY

Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

image/svg+xml

RESTful Business Process Management

Cesare Pautasso
http://www.pautasso.info
[email protected]
@pautasso

University of Lugano (USI)

Faculty of Informatics

Architecture, Design and Web Information Systems Engineering

http://design.inf.usi.ch

Towards RESTful BPM

http://design.inf.usi.ch/research/restful-bpm

image/svg+xml ? Database Datamail

Decoupled Sharing

image/svg+xml World Wide Web PUT GET Database

Hypermedia

Discovery by Referral

image/svg+xml World Wide Web PUT GET Link World Wide Web PUT GET GET Link

Software Connectors

image/svg+xml Remote Procedure Call Asynchronous Messaging File Transfer Shared Database Stream World Wide Web

The Web as a Software Connector

image/svg+xml Send Receive PUT GET PUT GET GET Send Receive
image/svg+xml PUT GET PUT 200 GET 200
image/svg+xml PUT GET GET PUT DELETE

BP

image/svg+xml Process Execution Engine Process Designer Process Model Process Owner Process Instance Software Activities Human Activities
image/svg+xml Process Execution Engine Software Activities Human Activities GET /RPUT /RDELETE /RPOST /R RESTful service composition Process Model P Process Instance P.1 GET /P/1PUT /P/1DELETE /P/1POST /P/1 GET /PPUT /PDELETE /PPOST /P Publishing processes as resources Conversations

RESTful Process Engine API

image/svg+xml Process Model P Process Instance P.1 GET /P/1PUT /P/1DELETE /P/1POST /P/1 GET /PPUT /PDELETE /PPOST /P Task Instance P.1.T GET /P/1/TPUT /P/1/TDELETE /P/1/TPOST /P/1/T
image/svg+xml GET /process/name Content-Type: text/html application/atom+xml text/plain application/json image/svg+xml Web pagewith form to startthe process Feed withlinks to processinstances Content-Type: Content-Type: Content-Type: Content-Type: Natural languagedescription Metadata Diagram

Remote Process Call

POST /process/name HTTP/1.1

...after some time...

HTTP/1.1 200

Process Completed

Let's have a RESTful Conversation with a Process

POST /process/name?start HTTP/1.1
HTTP/1.1 201 Created
Location: /process/name/42
GET /process/name/42
HTTP/1.1 200
Link: </process/name/42/task>; rel="task"

Process Instance 42 is running
GET /process/name/42/task
HTTP/1.1 200
PUT /process/name/42/task
HTTP/1.1 200
GET /process/name/42
HTTP/1.1 200

Process Instance 42 is complete

Processes as Resources

Resources as Processes

Publish resources from processes that drive their internal state transitions

RESTful Process Engine API

REST Architectural Elements

image/svg+xml User Agent Origin Server HTTP
image/svg+xml User Agent Proxy HTTP Origin Server HTTP Cache
image/svg+xml Clients Proxy REST Service Cache

REST middleware is primarily designed to scale a single server, which may need to service a large number of clients

image/svg+xml Client CompositeREST Service REST Services

A Composite REST service provides an aggregated view over the state of multiple REST services

image/svg+xml GET /CPUT /CDELETE /CPOST /C GET /SPUT /SDELETE /SPOST /S GET /RPUT /RDELETE /RPOST /R

The behavior of /C is defined by
composing /R and /S

image/svg+xml /C /R /S

The composite resource /C only aggregates
the state of its components /R and /S

image/svg+xml /C /R /S

The composite resource /C augments or
caches the state of its components

image/svg+xml GET /CPUT /CDELETE /CPOST /C GET /SPUT /SDELETE /SPOST /S GET /RPUT /RDELETE /RPOST /R
image/svg+xml GET /CPUT /CDELETE /CPOST /C GET /SPUT /SDELETE /SPOST /S GET /RPUT /RDELETE /RPOST /R
image/svg+xml GET /CPUT /CDELETE /CPOST /C GET /SPUT /SDELETE /SPOST /S GET /RPUT /RDELETE /RPOST /R

Composing Representations with Hypermedia

image/svg+xml /R /S Link /S Link /R C

The composite representation C refers to its component resources /R and /S via hyperlinks

image/svg+xml REST Services REST Services Composite Client REST Service C CompositeRepresentation

A composite representation is interpreted by the client that follows its hyperlinks and aggregates the state of the referenced component resources

A composite representation may be retrieved from a composite service

Example: DoodleMap

image/svg+xml