APACHE SLING & FRIENDS TECH MEETUP
BERLIN, 23-25 SEPTEMBER 2013
“RESTful transactions” with Apache Sling
Şenol Taş
About
adaptTo() 2013 2
§  My Name is Şenol Taş
§  Senior Computer Scientist
§  Adobe in Basel, Switzerland
@thelabertasch
adaptTo() 2013 3
Why such a boring Topic?
Because websites are…
adaptTo() 2013 4
§  No longer simple advertisement
platforms
§  Not only “online Business cards”
§  Not a “nice to have” medium
§  Not a “Playground”
§  …..
Because websites are…
adaptTo() 2013 5
§  Serious business
§  Make $$$
§  Complex
§  MUST have
§  “Real” Applications
adaptTo() 2013 6
Your Website IS THE Application
Let’s….
adaptTo() 2013 7
§  Find out “what is a transaction?”
§  Quick reminder about REST
§  How do this two concepts work
together?
adaptTo() 2013 8
What are Transactions?
What are Transactions?
adaptTo() 2013 9
adaptTo() 2012 10
“An input message to a computer system
that must be dealt with
as a single unit of work”
What are Transactions?
adaptTo() 2013 11
§  begin transaction
§  debit checking account
§  credit savings account
§  update history log
§  commit transaction
What are Transactions?
adaptTo() 2013 12
§  Late 70s: Jim Gray defined the
semantic of reliable transactions
§  Early 80s: Andreas Reuter and Theo
Härder defined the acronym “ACID” in
their paper “Principles of Transaction-
Oriented Database Recovery”
ACID
adaptTo() 2013 13
§  Atomicity
§  Consistency
§  Isolation
§  Durability
How do tools like hybernate help?
adaptTo() 2013 14
adaptTo() 2013 15
What is REST?
What is REST?
adaptTo() 2013 16
§  Representational State Transfer
§  Stateless
§  Client-server
§  Cachable
§  Scalable
§  …..
What is REST?
adaptTo() 2013 17
§  So? How does this work together with
transactions?
adaptTo() 2013 18
REST and transaction is a oxymoron
REST and transactions
adaptTo() 2013 19
§  Atomicity
§  Consistency
§  Isolation
§  Durability
What are the challenges?
adaptTo() 2013 20
§  HTTP REQUEST – RESPONSE
PATTERN
§  STATELESS
§  …..?
Change your mindset…
adaptTo() 2013 21
§  Not everything has to be done in one
request
§  If you are using POST.jsp or similar in
Sling, most likely something is wrong
§  Events and Observations are your
friends
§  Use the full power of the Sling Default
Post and GET Servlet
Remember the cheat sheet from Lars?
adaptTo() 2013 22
Example
adaptTo() 2013 23
§  Resource: /home/senol/profile
§  Begin transaction
§  change interests
§  Commit transaction
Begin Transaction
adaptTo() 2013 24
§  Copy the node /home/senol/profile to
/home/senol/transactions/profile/*
Change interests
adaptTo() 2013 25
§  Update with regular post request
Commit transaction
adaptTo() 2012 26
§  With observation or events
§  Directly
Things of interest
adaptTo() 2012 27
§  Communicating with services layer
§  Distributed transactions
§  Nested transactions
§  Locking…
§  Using Adobe CQ?
§  Have a look at the Workflow Launcher!
adaptTo() 2013 28
Thank you and have a RESTful Day!

Developing “RESTful transactions” with Apache Sling