420 likes | 429 Views
This paper explores the concepts and examples of long-running transactions in e-business scenarios, discussing the relaxed ACID properties and proposing a formally specified language for defining transactional aggregations. It also introduces the Saga Calculus and its use in abstracting away low-level computational details and communication patterns.
E N D
From Theory to Practice in Transactional Composition of Web Services University of Pisa Roberto Bruni, Gianluigi Ferrari, Hernàn Melgratti, Ugo Montanari, Emilio Tuosto Daniele Strollo
Schedule • Introduction to Sagas • Basic concepts of JTWS • Java Signal Core Layer (JSCL) • Java Transactional Layer (JTL) • Examples
Long Running Transactions • Transactions in e-Business scenario • ACID properties are relaxed: • atomicity (long running) • isolation (concurrency). • LRTs with compensation as solution to failures: • undo • alternatives to restoring of state (e.g. refund money…) Reservation Request Plain Reservation Service • Payment Service: • bank account (atomicity) • credit card (isolation) Payment Request for canceling reservation
Long Running Transactions… • Long-Running Transactions (LRTs): • Independent componentslooselycoupled • Each component maintains the consistency of its local data • Illusion of Atomicity given by compensations • Ad-hoc activities responsible for undoing the effects of partial executions when the whole computation cannot be completed. • Current proposals lack from formal foundations • Hard to prove properties
Our goal • To provide a formally specified language for defining transactional aggregations at high level of abstraction. • To map high level transactional primitives into concrete coordination patterns.
Saga Calculus (SC): syntax • Atomic activities: • [ {0, THROW} • Ranged over by A, B, … • Processes: • P ::= A ¥ B | P;P | P||P • Sagas: • S ::= A | [P] | S;S | S||S Saga Calculus naturally abstracts away from low level computational details and communication patterns [BMM@POPL05]. The formal semantics is given by traces [BHF@25YCCS,BBFHMM@CONCUR05].
Basic concepts of SC: compensable process A ¥ B • Compensable process: P = A¥B • P executes themain activity Aand installs the compensation activity B • B is not installed if A is not completely executed • A is called forward flow and B the backward flow
Basic concepts of SC: Saga • The process P contained in a Saga S S ::= [P] Encloses the execution of process P in an “atomic context”. The execution of successful backward flow is isolated from the outside. Only in case of unsuccessful compensation action, the event is forwarded to previous stages.
Purchase orders Update Credit Accept Order Prepare Order
Purchase orders without compensations Update Credit Accept Order Prepare Order S = [ AO; UC | PO ] The possible traces are: ` S = {< , , >< , , >} AO UC PO AO PO UC
Purchase orders with compensations Update Credit Refund Money Accept Order Refuse Order Prepare Order Update Stock S = [ AO¥RO; UC¥RM | PO¥US ] Successful execution: ` S = {<AO, UC, PO, X><AO, PO, UC, X>} Failure with successful compensation (not enough money): ’ ` S = {<AO, PO, US, RO, X>} Failure and unsuccessful compensation (unable to resemble stock): ’’ ` S = {<AO, PO, !>}
Schedule • Introduction to Sagas • Basic concepts of JTWS • Java Signal Core Layer (JSCL) • Java Transactional Layer (JTL) • Examples
JTWS Architecture JTWS JTL (Transactional Layer) JSCL (Signal Core Layer) • JSCL defines: • Async/sync signal passing • Signal links • Logical ports • Handler/Emitter • Generic Component • management of flow sessions • JTL defines: • Types of signals useful to represent LRTs • Sequential and Parallel composition of services
Schedule • Introduction to Sagas • Basic concepts of JTWS • Java Signal Core Layer (JSCL) • Java Transactional Layer (JTL) • Examples
JSCL: application building blocks Internal Data Session Agent • Agents: • Signal Emitter • Signal Handler • Signals: • Abstraction of an event • Typed Signal Input Ports Signal Output Ports Resource • Signal Links: • unicast • unidirectional • typed SigType Emitter Handler • Logical Ports • AND / OR / NOT SIG_TRUE SIG_TRUE SIG_FALSE SIG_FALSE
Example AgentC AgentA AgentB Resource Resource Resource AgentD Resource eventType1 eventTypen
JSCL in detail JTWS Component JTWS Component • Connecting two components: • The Emitter makes a request to a handler to be connected • The Handler gives the permissions to the Emitter to create the input signal link connectSignal registerSignal
JSCL in detail JTWS Component JTWS Component • Connecting two components: • The Emitter makes a request to a handler to be connected • The Handler gives the permissions to the Emitter to create the input signal link • Forwarding a signal: • Emitter: emitSignal (signal, async) • Handler: the methodhandleSignal (signal, async) is invoked automatically. This method “propagates” the signal to all the registered handlers. The asynchronous signals are managed by the handler. emitSignal handleSignal Queue
Schedule • Introduction to Sagas • Basic concepts of JTWS • Java Signal Core Layer (JSCL) • Java Transactional Layer (JTL) • Examples
JTWS: Java Transactional Layer (JTL) Inv Cmt Rb Exc • Prefixed set of signals with a precise semantics: • SNG_INVOKE, • SGN_COMMIT, • SGN_ROLLBACK • Structural composition of services: • Sequence and Parallel • Well defined semantics for transactional flows. JTL Component
JTL: AtomicTask • AtomicTask defines the interface that each atomic activity of SC must fit. • We assume that any class which implements AtomicTask cannot throw any exception but AtomicActionException.
JTL: Basic Compensable Process • A SC compensableprocess is defined in JTL as: Comp (A, B) ´ A ¥ B with A,B AtomicTasks. • The forward flow corresponds to the execution of A. • The backward flow corresponds to the the execution of B. • Exceptions are raised in presence of faults during execution of B. A B
JTL: Basic Compensable Process... Inv Inv Rb Rb Exc A Successful execution of A Unsuccessful execution of A Executes main activity A B Request for abort. Executes B. Compensation successful executed Compensation failure
JTL: sequence P Q Seq (P, Q) ´ P;Q • JTLSequence.addInternalComponent (JTLComponent) permits to add new components in the sequence. In Out oCt iCt oRb iRb oEx iEx seq.addInternalComponent (Q)
JTL: sequence Inv P Q In Out A oCt iCt oRb iRb oEx iEx
JTL: sequence Rb Inv P Q In Out A oCt iCt B oRb iRb oEx iEx
JTL: sequence Rb Inv P Q In Out oCt iCt B oRb iRb oEx iEx
JTL: sequence Rb P Q In Out oCt iCt B oRb iRb oEx iEx
JTL: sequence Rb P Q In Out oCt iCt B oRb iRb oEx iEx
JTL: sequence Rb P Q In Out oCt iCt oRb iRb oEx iEx
JTL: parallel In Out Inv Inv oCt iCt oRb iRb oEx iEx Par (P, Q) ´ P|Q Dispatcher P Q Collector Status = (-,-)
JTL: parallel In Out Inv oCt iCt oRb iRb oEx iEx Dispatcher A P A Q Collector Status = (---,---)
JTL: parallel In Out Inv oCt iCt oRb iRb oEx iEx Dispatcher A P A Q Collector Status = (Inv,---)
JTL: parallel In Out Inv oCt iCt oRb iRb oEx iEx Dispatcher A P A Q Collector Status = (Inv,Inv)
Saga in JTL • The behavior of a Saga S ::= [P] in JTL is the following: • If P sends an Inv signal: • S propagates internally the Cmt signal • S sends externally the Inv signal • If P sends an Rb signal: • S sends externally the Inv signal • If P sends an Exc signal: • It is ignored since the status is inconsistent
JTL: saga P In Out Exc and Cmt ignored while Abt is transformed to Inv SignalH
Schedule • Introduction to Sagas • Basic concepts of JTWS • Java Signal Core Layer (JSCL) • Java Transactional Layer (JTL) • Examples
Purchase Order in JTL Update Credit Refund Money Accept Order Refuse Order Prepare Order Update Stock S = [ AO¥RO; UC¥RM | PO¥US ] Seq ( Comp (AO, RO), Par ( Comp (UC, RM), Comp (PO, US)))
Purchase Order in JTL: graphical representation In Out In Out UC RM AO RO PO oCt iCt iCt oCt oRb iRb US iRb oRb oEx iEx iEx oEx
JTWS: advantages • JSCL • Basic framework for programming coordination. • Abstraction for communication details. • Logical ports permit a simple design of the flow diagrams. • The connections can be modified at run-time. • Distributed flow execution. • Primitives for authorizing access to signals. • JTL • Based on a robust theory • Simple to program • Extendible to other transactional logics
Concluding remarks • From a formal specification of naïve sagas we have presented JTWS. • Contribution is a setting for designing business process transactions • Visual/graphical representation of parallel sagas • Process calculus description in bijective correspondence with sagas diagrams • Executable, distributed translation of symbolic processes • Future works • GUI to develop JTL and JSCL components • Debugger environment to test the behavior of the involved components • Support for advanced features like nesting, speculative choice (N. Zappone).