Please log in to watch this conference skillscast.
Imagine you have many small customers with a common problem that can be solved by utilizing a workflow system. This opens a market for a common solution in the form of a process description. However, as customers usually have significant differences in their requirements, the capturing of data and the corresponding logic need individualization. Conventional workflow system fail to address the extensibility of the later part. Indeed, individualisation often boils down to consultants copy&adapting the process descriptions. You know this as a bad engineering practice: such an approach has high maintenance costs and smaller companies cannot afford it.
In this talk, you will see a scalable approach where individualisation boils down to extending a base workflow description. The problem is related to the expression problem, and our approach is based on solutions in this area. In this approach, the workflow is modelled as a data flow graph in contrast to control flow graphs as traditionally used by workflow systems. Such a graph essentially represents a functional reactive program where the nodes correspond to tasks. The tasks will be organized in a tree, and we express the data flow as functions between attributes of this tree. The description of this tree is an example of an attribute grammar, which we can express as EDSL in Haskell using type level programming. Finally, the attribute grammar formalism allows you to compose the workflow description from small transformable fragments, thereby obtaining the desired extensibility.
YOU MAY ALSO LIKE:
Individualisation of Extensible Workflows
Arie Middelkoop did his Ph.D. in the area of Compiler Construction at Universiteit Utrecht, and utilizes attribute grammars and other functional programming concepts for everday programming challenges.