Workflow systems are automated systems in which tasks are coordinated by assigning them to either humans or computers. Contemporary workflow systems are static and not very flexible. In these lecture notes, we discuss the
system: a combinator library for specifying workflows in the functional language
. This system offers several advantages when compared to commercial systems: tasks are statically typed, tasks can be higher order, the combinators are fully compositional, and dynamic and recursive workflow can be specified. Moreover, the specification is an executable specification offering a web-based multi-user workflow system. In this paper we describe the
system using a conference management system as the running example to illustrate the expressive power of functional and generic programming in a real-world domain.