Recently Stef and I presented the session “Hardcore Workflow” at Tech-Ed New Zealand in which I gave a demo of how to create your own enterprise workflow system in WF4. I had been deliberating for a while on whether I should reveal a lot of the techniques we used but I came to the conclusion that they are all just standard features in WF4 and they don’t seem to be well documented anywhere. Therefore I thought it was important to document just how easy it can be to get started creating your own enterprise workflow solution.
If you are new to WF4, it is Workflow Foundation 4 supplied by Microsoft free as part of the .Net Framework. I am going to presume that you have some knowledge of WF4 and have tried to create a workflow service.
To me the term “Enterprise Workflow” represents a system which has the goals of allowing end users (or at least power users) to be able to design and create their own business processes using declarative authoring tools that coordinate people and integrate with their business systems and to have those processes hosted in a reliable, scalable way.
There are companies that exclusively make complex software solutions to perform this task, what I want to show you is that WF4 gives you the keys to create your own solution but by no means will I be able to show you how to solve all the problems in this space.
Taking this into account I believe the system we are going to build should have the following characteristics:
- Simple visual authoring experience
- Concerns like Persistence, Tracking, Scalability, Correlation, Service Hosting etc should come for free, authors should not have to think about it
- Activities should be supplied to enable integration with business systems and human participants.
So I’m going to break this demo down into a series of posts. These will probably look like the following, I’ll fill in the links as I write the posts.
- Activities vs WF Services: In search of the ideal authoring experience
- Hosting an Activity as a Service using the WorkflowServiceHostFactory
- Starting WF Instances using the Creation Endpoint
- Responding to WF completion using the Creation Context