Skip to Main Content
Exceptions are deviations from the normal execution of the program. They occur frequently in programs. In modern programming languages exceptions are separated from the normal execution using try-catch blocks and whenever an exception is raised then the catch blocks either recover from the exception in some way. or log the exception and abort. A workflow can be characterized as a long-running process. Exceptions occur in workflows but it is more expensive to abort the workflow as much work may be lost. Many proposals for describing workflows have been made. Some address exception handling, but few of these cleanly separate the description of the normal workflow from exceptions, and none present clear implementation details. Our approach to modeling and handling exceptions relies on continuations, listeners as exception handlers, and on policies, or strategies, for continuation. This model leads to a very flexible design and implementation of workflow. We present the details behind the implementation. Our work has been validated in a small prototype written in Java, though our approach and design are independent of the programming language.