I've been looking at a few Business Process Management tools on and off and I've noticed something that most of them share in common, they like to brag that no coding is required to get your BPM solution in place.Whilst a laudable aim, I doubt very much that it can be met, especially when integration with other products is required. And integration is one of the key ingredients to a successful BPM implementation.
The stock answer to integration is the use of web services. And they could be the answer. They are a standard after all, but unfortunately each development platform seem to implement these standards slightly differently. I've had much fun calling web services authored in Perl and Java from .NET. And that was using code, rather than any web service integration abstraction piece provided by a BPM product, which would almost certainly have made other assumptions about how web services work. Almost every abstraction is leaky. And when an abstraction is leaky, it is necessary to drop down to the next lower abstraction, which is code in this case. And if the abstraction isn't leaky, then the BPM vendor must have produced some kind of general integration technology which is actually pretty damn useful on its own, so why aren't they selling that?
And when a BPM vendor says no code is necessary, it means that it's likely its story for writing code in their development environment is probably not going to be as good as it could be. After all, you'll never need it, right?
To a certain extent I can understand this emphasis on a no code solution. After all, if code was required to implement even a basic BPM solution using their product then the BPM software wouldn't be providing much value.
This is one reason why I love Windows Workflow. It is unashamedly a development tool and doesn't shy away from code. OK, it's not a fully-fledged BPM tool, but it is certainly possible for a BPM product to be built on top of it. Workflows can be designed without code, but when it's needed, a developer can come along and produce a custom activity to do whatever integration is required. This seems like the perfect solution and I hope this is how BPM products will be designed in future.