Editorial Rss

Are Workflow Patterns New?

Let me start out today with an apology to Martin Fowler, having incorrectly identifying him yesterday in my editorial as Robert Fowler, and send a thank you to Jason for bringing this to my attention.

As I continue to research this concept of workflow patterns I am beginning to ask myself, “what is the definition of a software pattern”? I went to WikiPedia to get a simple definition.

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations.
The reason I was looking into the definition is that I am following up in more detail about Workflow Patterns as published on the web at Workflow Patterns. This is a fantastic site, in my opinion, where a lot of energy has been spent, resulting in a highly organized set of strategies for solving workflow problems.
I’m wondering, without a lot of research at this point, if some of the patterns presented have devolved more into implementation than pattern. They started with some basic patterns. Then the patterns were divided into a larger set of more complex patterns.

For example, take the basic OOP Iteration pattern. Iteration is simply traversing through a set of data. It doesn’t define how that iteration is implemented. It doesn’t define if it is forward only, or iterates backward as well. It doesn’t define if it skips records, filters records, etc. The pattern does not terminate how iteration begins or ends. It simply defines that you will traverse a set of data. 

In the dot Net world, you can iterate using for, foreach, a Linq query, or even create your own custom iteration. Because you use those constructs in dot net, they do not define new patterns; they are implementations of iteration.

So, the question I am asking myself as I am mining this wonderful work on workflow patterns is, are there really a large number of new patterns, or are they simply implementations of an already existing pattern? Perhaps the basic patterns themselves are not really new patterns. Rather, they are the application of already existing OOP patterns applied to workflow processes.

Take a look and see for yourself. I’m not making a statement here. I am simply entering into the world of structured workflow patterns with questions that make the research a richer experience. If you have time, take a look yourself and share your thoughts in comments here, or by email to btaylor@SSWUG.ORG.