Workflow management systems control activities that are performed in a distributed manner by a number of human or automated participants. There is a wide variety of workflow systems in use, mostly commercial products, and no standard language has been defined in which to express workflow specifications. In this paper we propose Workflow Prolog, a new extension of Prolog. The language allows workflow systems to be implemented in a novel declarative style, while preserving the existing properties of Prolog, such as its familiarity and efficiency. We then demonstrate the expressiveness of the language by showing how it can express each of the workflow patterns that have previously been identified as the requirements of a workflow language.