License: Creative Commons Attribution 3.0 Unported license (CC BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2018.2
URN: urn:nbn:de:0030-drops-92074
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2018/9207/
Inoue, Hiroaki ;
Aotani, Tomoyuki ;
Igarashi, Atsushi
ContextWorkflow: A Monadic DSL for Compensable and Interruptible Executions
Abstract
Context-aware applications, whose behavior reactively depends on the time-varying status of the surrounding environment - such as network connection, battery level, and sensors - are getting more and more pervasive and important. The term "context-awareness" usually suggests prompt reactions to context changes: as the context change signals that the current execution cannot be continued, the application should immediately abort its execution, possibly does some clean-up tasks, and suspend until the context allows it to restart. Interruptions, or asynchronous exceptions, are useful to achieve context-awareness. It is, however, difficult to program with interruptions in a compositional way in most programming languages because their support is too primitive, relying on synchronous exception handling mechanism such as try-catch.
We propose a new domain-specific language ContextWorkflow for interruptible programs as a solution to the problem. A basic unit of an interruptible program is a workflow, i.e., a sequence of atomic computations accompanied with compensation actions. The uniqueness of ContextWorkflow is that, during its execution, a workflow keeps watching the context between atomic actions and decides if the computation should be continued, aborted, or suspended. Our contribution of this paper is as follows; (1) the design of a workflow-like language with asynchronous interruption, checkpointing, sub-workflows and suspension; (2) a formal semantics of the core language; (3) a monadic interpreter corresponding to the semantics; and (4) its concrete implementation as an embedded domain-specific language in Scala.
BibTeX - Entry
@InProceedings{inoue_et_al:LIPIcs:2018:9207,
author = {Hiroaki Inoue and Tomoyuki Aotani and Atsushi Igarashi},
title = {{ContextWorkflow: A Monadic DSL for Compensable and Interruptible Executions}},
booktitle = {32nd European Conference on Object-Oriented Programming (ECOOP 2018)},
pages = {2:1--2:33},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-079-8},
ISSN = {1868-8969},
year = {2018},
volume = {109},
editor = {Todd Millstein},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
address = {Dagstuhl, Germany},
URL = {http://drops.dagstuhl.de/opus/volltexte/2018/9207},
URN = {urn:nbn:de:0030-drops-92074},
doi = {10.4230/LIPIcs.ECOOP.2018.2},
annote = {Keywords: workflow, asynchronous exception, checkpoint, monad, embedded domain specific language}
}
Keywords: |
|
workflow, asynchronous exception, checkpoint, monad, embedded domain specific language |
Collection: |
|
32nd European Conference on Object-Oriented Programming (ECOOP 2018) |
Issue Date: |
|
2018 |
Date of publication: |
|
10.07.2018 |