+ All Categories
Home > Documents > Push-Enabling RESTful Business Processes -...

Push-Enabling RESTful Business Processes -...

Date post: 14-Oct-2018
Category:
Upload: duonghuong
View: 216 times
Download: 0 times
Share this document with a friend
48
Push-Enabling RESTful Business Processes Cesare Pautasso Faculty of Informatics, University of Lugano, Switzerland [email protected] http://www.pautasso.info @pautasso 6.12.2011 Erik Wilde EMC [email protected] http://dret.net @dret
Transcript

Push-Enabling RESTful Business Processes

Cesare Pautasso Faculty of Informatics, University of Lugano, Switzerland [email protected] http://www.pautasso.info @pautasso 6.12.2011

Erik Wilde EMC [email protected] http://dret.net @dret

RESTful Business Processes

Cesare Pautasso Faculty of Informatics, University of Lugano, Switzerland [email protected] http://www.pautasso.info @pautasso 6.12.2011

Erik Wilde EMC [email protected] http://dret.net @dret

Abstract !  Representational State Transfer (REST) as an architectural

style for service design has seen substantial uptake in the past years. However, some areas such as Business Process Modeling (BPM) and push services so far have not been addressed in the context of REST principles.

!  In this work, we look at how both BPM and push can be combined so that business processes can be modeled and observed in a RESTful way. Based on this approach, clients can subscribe to be notied when certain states in a business process are reached. Our goal is to design an architecture that brings REST's claims of loose coupling and good scalability to the area of BPM, and still allow process-driven composition and interaction between resources to be modeled.

©2011 - Cesare Pautasso 3

©2010 - Cesare Pautasso 4

BPM REST

©2010 - Cesare Pautasso 5

Business Process Management

RESTful Web Services

©2009-2010 - Cesare Pautasso - 30.6.2010 6

WS-* Standards Stack

©2009-2010 - Cesare Pautasso - 30.6.2010 7

WS-* Standards Stack

Interoperability

Metadata

Reliability

Security

Transactions

State

Messaging

Management BPM

©2010 - Cesare Pautasso 8

Interoperability

Metadata

Reliability

Security

Transactions

State

Messaging

Management BPM

Can you do it with REST?

©2011 - Cesare Pautasso 9

RESTful APIs…

©2011 - Cesare Pautasso 10

RESTful APIs…

©2011 - Cesare Pautasso 11

We believe there is huge potential to marrying REST with workflow and BPM.

[…]! Combined with the architecture of the Web, a workflow service can provide both a truly simple, portable, and flexible way to build workflow driven integrations and applications.

From REST-*

http

://w

ww.

jbos

s.or

g/re

stst

ar/s

peci

ficat

ions

/wor

kflo

w.ht

ml “

©2011 - Cesare Pautasso 12

!  Web Services expose their data and functionality trough resources identified by URI

REST in one slide

R!

©2010 - Cesare Pautasso 13

BPM resource

REST resource

©2011 - Cesare Pautasso 14

!  Web Services expose their data and functionality trough resources identified by URI

!  Uniform Interface constraint: Clients interact with resources through a fix set of verbs. Example HTTP: GET (read), POST (create), PUT (update), DELETE

!  Multiple representations for the same resource !  Hyperlinks model resource relationships and valid

state transitions for dynamic protocol description and discovery

REST in one slide

R!

PUT!

DELETE!

GET!

POST!

©2011 - Cesare Pautasso 15

We believe there is huge potential to marrying REST with workflow and BPM.!

!  The HATEOAS (hypermedia and linking) principal of REST is logically a dynamic state machine and fits very well with how workflow and BPM systems are designed.

!  Combined with the architecture of the Web, a workflow service can provide both a truly simple, portable, and flexible way to build workflow driven integrations and applications.

From REST-*

http

://w

ww.

jbos

s.or

g/re

stst

ar/s

peci

ficat

ions

/wor

kflo

w.ht

ml “

©2010 - Cesare Pautasso 16

RESTful Workflow Management Engine

Act 1

Act 2

Act 3

Act 7

Act 6

Act 5

Act 4

Web Services

Process Model

Applications

Adapters

Workflow Users/Clients

Workflow Participants

Business Process Management

Databases

Bus R!

PUT!

DELETE!

GET!

POST!

©2010 - Cesare Pautasso 17

RESTful Workflow Management Engine

Act 1

Act 2

Act 3

Act 7

Act 6

Act 5

Act 4

Process Model

BPM with REST

R!

R!

RESTful Service Composition R!R!

Publishing Processes as Resources

©2010 - Cesare Pautasso 18

RESTful Workflow Management Engine

BPEL for REST BPMN for REST

BPM with REST

R!

R!

RESTful Service Composition R!R!

Publishing Processes as Resources

©2010 - Cesare Pautasso 19

RESTful Workflow Management Engine

We are here

BPM with REST

R!

R!

RESTful Service Composition R!R!

Publishing Processes as Resources

©2010 - Cesare Pautasso 20

BPM REST ! Resources/URIs ! Uniform

Interface ! Representations ! Hypermedia

! Processes ! Tasks ! Control Flow ! Data Flow ! …

©2010 - Cesare Pautasso 21

Everything is a resource

Process Process Instance

Task Task Instance

/process/X

/task/Y /task/Y/1

/process/X/1

©2010 - Cesare Pautasso 22

Hypermedia

Process Process Instance

Task Task Instance

/process

/process/name

/process/name/instance

Follow links to discover the processes deployed as resources

/process/name/instance/taskname

GET

GET

GET

©2010 - Cesare Pautasso 23

Representations

/process/name GET

ContentType:

text/html ContentType:

application/bpmn+xml

ContentType:

text/plain ContentType:

application/json ContentType:

image/svg+xml

Web page with form to start a new process instance

Basic textual description of the process

Process metadata in JSON

BPMN2.0 process source code

©2010 - Cesare Pautasso 24

Uniform Interface and Hypermedia

/process

/process/name

GET

GET

GET

/process/name POST

/process/name/instance

DELETE /process/name/instance

List the deployed processes

Get a form describing how to start the process

Start a new process instance Check what

is the state of the instance

Clean up (once it is done)

©2010 - Cesare Pautasso 25

Starting or Running processes?

POST /process

!  Should the client be kept waiting for the process to run until completion?

!  Clients may want to block until the whole process has completed its execution (or it decides to reply to them)

/process

200 OK (Process Finished Reply)

©2010 - Cesare Pautasso 26

Starting or Running processes?

POST /process

GET /process/x

!  The client starting a long running process is redirected to a location x representing the newly started process instance

!  The process and the client run asynchronously

!  The client may retrieve the current state of the process instance at any time

/process

202 Accepted Location: x

200 OK

©2010 - Cesare Pautasso 27

Push vs. Pull Notification /process

PULL PUSH

GET /process/x

200 OK

!  Problem: how can the process instance tell the client that it has reached a certain state?

!  Easy to use a PULL-based event notification with HTTP

!  Can we also support PUSH-based event notification with HTTP?

Push-Enabling RESTful Business Processes

Cesare Pautasso Faculty of Informatics, University of Lugano, Switzerland [email protected] http://www.pautasso.info @pautasso 6.12.2011

Erik Wilde EMC [email protected] http://dret.net @dret

©2010 - Cesare Pautasso 30

What is your SOA connector?

RPC BUS

©2010 - Cesare Pautasso 32

What is your SOA connector?

RPC BUS

REST/HTTP

©2010 - Cesare Pautasso 33

REST as a new connector

RPC BUS

REST/HTTP

Call

Publish/Subscribe

Get/Put/Post/Delete

©2010 - Cesare Pautasso 34

What about event notifications?

RPC BUS

REST/HTTP

Callback

Publish/Subscribe

Get/Put/Post/Delete ?

©2011 - Cesare Pautasso 35

Solutions

1. Web Feeds (PubSubHubbub) 2. HTTP Long Polling 3. Inverted REST (HTTP Callbacks) 4. WebSockets 5. (XMPP)

36

Representations

/process/name GET

ContentType:

application/atom+xml

Web feed representing the collection of process instances with links to each instance

37

Representations

/process/name/instance GET

ContentType:

application/atom+xml

Web feed representing the current state of the process instance (collection of task instances)

©2011 - Cesare Pautasso 38

Loan Approval Example

Task Published as a Resource

Process Published as a Resource

External Resources

©2011 - Cesare Pautasso 39

Process as a Web Feed <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Loan Approval Process</title> <subtitle>Instance x</subtitle> <link href="http://rest.jopera.org/loan/x" rel="self" /> <link href="http://rest.jopera.org/loan" rel="template" /> <link href="http://pubsubhubbub.appspot.com/" rel="hub" /> <id>http://rest.jopera.org/loan/x</id> <updated>2011-06-10T11:11:30Z</updated> <author><name>Cesare Pautasso</name><email>[email protected]</email></author> <entry> <title>Choose Task (Ready)</title> <link href="http://rest.jopera.org/loan/x/choose" /> <id>http://rest.jopera.org/loan/x/choose</id> <updated>2011-06-10T11:12:20Z</updated> <summary>State: ready</summary> </entry> <entry> <title>Approve Task (Waiting)</title> <link href="http://rest.jopera.org/loan/x/approve" /> <id>http://rest.jopera.org/loan/x/approve</id> <updated>2011-06-10T11:11:30Z</updated> <summary>State: waiting</summary> </entry> </feed>

©2010 - Cesare Pautasso 40

Feed ! Feed ! Feed Entry ! Feed Author ! Summary ! Updated ! Link

! Process Instance ! Task ! Process User ! Task State ! Task Timestamp ! Task Instance URI

BPM

©2011 - Cesare Pautasso 41

Link Relations <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Loan Approval Process</title> <subtitle>Instance x</subtitle> <link href="http://rest.jopera.org/loan/x" rel="self"/> <link href="http://rest.jopera.org/loan" rel="template”/> <link href="http://pubsubhubbub.appspot.com/" rel="hub“/> <id>http://rest.jopera.org/loan/x</id> </feed>

Process Process Instance

Template Self

©2011 - Cesare Pautasso 42

PubSubHubbub

Feed Consumer

Feed Producer

Hub

Feed

Hub

Subscribe

Ping

Get

Notify/Poll

©2011 - Cesare Pautasso 43

Architecture

http://www.jopera.org/

Conclusion !  Thanks to hypermedia, URIs and the HTTP

uniform interface, REST resources are a very good abstraction to publish executable business processes on the Web

!  RESTful HTTP is good enough to interact without any extension with process execution engines to drive the execution of process and task instances and to deliver notifications

!  The state of a process instance can be projected to be represented as a standard Web feed

!  The PubSubHubbub protocol can be used as an optimization to scale the corresponding delivery of notication callbacks

©2011 - Cesare Pautasso 44

©2011 - Cesare Pautasso 45

Raj Balasubramanians, Benjamin Carlyle, Thomas Erl, Cesare Pautasso, SOA with REST, Prentice Hall, 2012

©2010 - Cesare Pautasso 47

10th International Conference on Business Process Management

(BPM 2012)

September 3-6 2012, Tallinn, Estonia http://bpm2012.ut.ee

©2010 - Cesare Pautasso 48

16-20 April 2012, Lyon, France http://ws-rest.org/2012

PhD Positions Available

©2011 Cesare Pautasso 49

Cesare Pautasso http://www.pautasso.info/ @pautasso

©2009-2010 - Cesare Pautasso, Erik Wilde 50

References !  Roy Fielding,

Architectural Styles and the Design of Network-based Software Architectures, PhD Thesis, University of California, Irvine, 2000

!  Leonard Richardson, Sam Ruby, RESTful Web Services, O’Reilly, May 2007

!  Jim Webber, Savas Parastatidis, Ian Robinson, REST in Practice: Hypermedia and Systems Architecture, O‘Reilly, 2010

!  Subbu Allamaraju, RESTful Web Services Cookbook: Solutions for Improving Scalability and Simplicity, O’Reilly, 2010

!  Stevan Tilkov, HTTP und REST, dpunkt Verlag, 2009, http://rest-http.info/

!  Thomas Erl, Raj Balasubramanians, Cesare Pautasso, Benjamin Carlyle, SOA with REST, Prentice Hall, end of 2010

!  Martin Fowler, Richardson Maturity Model: steps toward the glory of REST,

http://martinfowler.com/articles/richardsonMaturityModel.html

©2009-2010 - Cesare Pautasso, Erik Wilde 51

Self-References !  Cesare Pautasso, Olaf Zimmermann, Frank Leymann,

RESTful Web Services vs. Big Web Services: Making the Right Architectural Decision, Proc. of the 17th International World Wide Web Conference (WWW2008), Bejing, China, April 2008.

!  Cesare Pautasso and Erik Wilde.!Why is the Web Loosely Coupled? A Multi-Faceted Metric for Service Design, Proc of the 18th International World Wide Web Conference (WWW2009), Madrid, Spain, April 2009.

!  Cesare Pautasso, BPEL for REST, Proc. of the 6th International Conference on Business Process Management (BPM 2008), Milan, Italy, September 2008.

!  Cesare Pautasso, BPMN for REST, Proc. of the 3rd BPMN Workshop (BPMN 2011), Luzern, Switzerland, November 2011

!  Cesare Pautasso, RESTful Web Service Composition with JOpera, Proc. Of the International Conference on Software Composition (SC 2009), Zurich, Switzerland, July 2009.

!  Cesare Pautasso, Gustavo Alonso: From Web Service Composition to Megaprogramming In: Proceedings of the 5th VLDB Workshop on Technologies for E-Services (TES-04), Toronto, Canada, August 2004.


Recommended