Compensations have been used for decades in areas such as flow management systems, long-lived transactions and more recently in the service-oriented architecture. Since compensations enable the logical reversal of past actions, by their nature they cross-cut other programming concerns. Thus, intertwining compensations with the rest of the system not only makes programs less well-structured, but also limits the expressivity of compensations due to the tight coupling with the system’s behaviour. To separate compensation concerns from the normal forward behaviour of the system, we propose a novel design paradigm in which compensations are programmed separately from the system, and incorporated within a compensation manager following relevant system events and manages compensations. If the system signals the need to be compensated, the manager triggers the execution of compensations on behalf of the system and subsequently returns control to the system. We show that this approach can be used to program a sophisticated real-life case study which existing compensation approaches have difficulty in handling. Separating Compensation Concerns and Programming them with Compensating Automata Christian Colombo Department of Computer Science University of Malta Msida, Malta christian.colombo@um.edu.mt Gordon J. Pace Department of Computer Science University of Malta Msida, Malta gordon.pace@um.edu.mt Abstract: Compensations have been used for decades in areas such as flow management systems, long-lived transactions and more recently in the service-oriented architecture. Since compensations enable the logical reversal of past actions, by their nature they cross-cut other programming concerns. Thus, intertwining compensations with the rest of the system not only makes programs less well-structured, but also limits the expressivity of compensations due to the tight coupling with the system’s behaviour. To separate compensation concerns from the normal forward behaviour of the system, we propose a novel design paradigm in which compensations are programmed separately from the system, and incorporated within a compensation manager following relevant system events and manages compensations. If the system signals the need to be compensated, the manager triggers the execution of compensations on behalf of the system and subsequently returns control to the system. We show that this approach can be used to program a sophisticated real-life case study which existing compensation approaches have difficulty in handling. Compensations have been used for decades in areas such as flow management systems, long-lived transactions and more recently in the service-oriented architecture. Since compensations enable the logical reversal of past actions, by their nature they cross-cut other programming concerns. Thus, intertwining compensations with the rest of the system not only makes programs less well-structured, but also limits the expressivity of compensations due to the tight coupling with the system’s behaviour. To separate compensation concerns from the normal forward behaviour of the system, we propose a novel design paradigm in which compensations are programmed separately from the system, and incorporated within a compensation manager following relevant system events and manages compensations. If the system signals the need to be compensated, the manager triggers the execution of compensations on behalf of the system and subsequently returns control to the system. We show that this approach can be used to program a sophisticated real-life case study which existing compensation approaches have difficulty in handling.
[1]
Gordon J. Pace,et al.
Dynamic Event-Based Runtime Monitoring of Real-Time and Contextual Properties
,
2009,
FMICS.
[2]
Omg Available Specification.
Business Process Modeling Notation, V1.1
,
2008
.
[3]
David Spieler,et al.
Fault, Compensation and Termination in WS-BPEL 2.0 - A Comparative Analysis
,
2009,
WS-FM.
[4]
Roberto Bruni,et al.
Theoretical foundations for compensations in flow composition languages
,
2005,
POPL '05.
[5]
Wolfgang Reisig,et al.
ASM-based Semantics for BPEL: The Negative Control Flow
,
2005,
Abstract State Machines.
[6]
Roberto Gorrieri,et al.
: A Calculus for Service Oriented Computing
,
2006,
ICSOC.
[7]
Julian Jang,et al.
Compensation is Not Enough
,
2003
.
[8]
Gregor Kiczales.
Aspect-oriented programming
,
2005,
ICSE.
[9]
Julian Jang,et al.
A Service-Oriented Workflow Language for Robust Interacting Applications
,
2005,
OTM Conferences.
[10]
Michael J. Butler,et al.
An Operational Semantics for StAC, a Language for Modelling Long-Running Business Transactions
,
2004,
COORDINATION.
[11]
Paolo Milazzo,et al.
Design and verification of long-running transactions in a timed framework
,
2008,
Sci. Comput. Program..
[12]
Gordon J. Pace,et al.
Recovery within long-running transactions
,
2013,
CSUR.
[13]
Grigore Rosu,et al.
An overview of the MOP runtime verification framework
,
2012,
International Journal on Software Tools for Technology Transfer.
[14]
Yanxiang He,et al.
Formal Modeling of Transaction Behavior in WS-BPEL
,
2008,
2008 International Conference on Computer Science and Software Engineering.
[15]
Peter Dolog,et al.
Engineering Compensations in Web Service Environment
,
2007,
ICWE.
[16]
Francisco Curbera,et al.
Web Services Business Process Execution Language Version 2.0
,
2007
.
[17]
Brian Randell,et al.
Reliability Issues in Computing System Design
,
1978,
CSUR.
[18]
Francesco Tiezzi,et al.
A Formal Account of WS-BPEL
,
2008,
COORDINATION.
[19]
Gordon D. Plotkin,et al.
A structural approach to operational semantics
,
2004,
J. Log. Algebraic Methods Program..
[20]
C. A. R. Hoare,et al.
A Trace Semantics for Long-Running Transactions
,
2004,
25 Years Communicating Sequential Processes.