Tag Archives: bpm

Slides and sample from the Chippewa Valley Code Camp

Here are my slides and samples from the Chippewa Valley Code Camp. Read the readme for details of how to run the code. Thanks to all who attended, the few and proud come to mind!

Visual tracking of workflow is really a useful thing to build into your systems. The list of gotcha’s in the slides and others I’ve found since, mean that this particular approach using the rehosted workflow designer, while viable in certain cases, is probably going to take more work to make it generally usable solution for visual tracking of workflow. The idea presented here to use a custom tracking participant and SignalR to broadcast workflow tracking events is simple and solid and with a little more goo to pick a “topic” using groups or hubs would work very well I think.  A little care will need to be explored to account for scaling if you’d do this with hundreds of users based on the overall design of signalr.

I also would like to point out a few other related projects, one that used a service bus instead of signalr and another that used signalr, but not a wcf behavior or visual tracking. Enjoy your reading!




Link to my slides and sample code for Twin Cities Code Camp 13

As promised, the sample files and slides are here. Thanks to all who attended the talk.

Fox Valley Day of Dot Net

As promised here are my slides and the list of links I never got to talk through. Thanks for all the great questions during the talk and the suggestions in your comment cards. Good stuff and much appreciated.  I’d love to do this again somewhere, let me know if you want me at your location.

Windows Workflow Foundation 4 for Fox Valley Day of Dot Net

Windows Workflow Foundation 4 is fairly interesting, fairly unique in the large list of players in the BPM field. It does seem like some additional sessions of more advanced topics are going to happen so stay tuned. The MSDN samples below are an absolute must. You can search for the name and find more documentation about each. I also had good luck with the VS2010 guidance package for my first introduction way back when.

MSDN samples – http://msdn.microsoft.com/en-us/library/dd483375(VS.100).aspx

Ron Jacobs video and blog http://blogs.msdn.com/b/rjacobs/



Workflow – Coordinate People and Systems

A few years back the company I was working for brought in somebody to come up with some ideas for our system architecture in preparation for a big enhancement push. We laid out our goals which included heavy automation of business processes, leaving people in positions to do what they do best supporting our call center. That also means high visibility of the business processes to all staff and eventually our clients. This person’s answer… Biztalk. OK, you could argue that it is acceptable in executing business processes, at least so long as these processes rarely involve people. I think of NServiceBus in a similar way. Or any of the BPEL (Business Process Execution Language) oriented products out there. They do facilitate processes made up of work done by a variety of systems, something often called service orchestration. But most of these systems totally fail in helping where people are involved.

Of course there is a counter story to this. Ask a business person to find workflow solutions and you come up with things like SharePoint, or FileNet or even PeopleSoft. They are mostly about coordinating unstructured data in documents between people with some sort of rules: approvals, routing, limits that sort of thing. Most of the high level decisions and calculations must be done by people. Even when the the decision process is understood well, the way these systems are built frustrates additional automation because the data tends to live in blobs as pdf files or scanned images. There are CRM systems that do a little bit better if they are reasonable at allowing custom data to be associated with the “customer” records, and the automation can access that data as meta data to the document. Think SalesForce or Microsoft Dynamics. But most really don’t do any better at real automation when you have useful back end systems.

What should a good workflow system do?

Workflow coordinates people and systems to get stuff done.

Why is workflow still so hard?

Almost 15 years ago I think I did my first bit of software that was called “workflow”. It was a Lotus notes application that today we would basically call “email with attachments”. OK, there were some automation bits in there where depending on some content in the document, it might get routed to this person or that. Not long after that I realized that it wasn’t much of coding effort to have a web page with a big ol’ chuck of code that went something like this:

if (field > 20) SendMailTo(boss) else SendMailTo(gopher)

Only a few years after that the industry created BPEL so you could take that and say it in 50 lines of xml text*. Now in the 21st century, you can do this with a graphical designer in SharePoint, Savvion, K2 or open sourced alternative that is supposed to be so much easier than hiring a developer to type that line of code above.

So why aren’t more businesses, developers, organizations lining up to buy or build workflow type automation? This question has started to bother me a lot.

One thing is certain to me now. Turning a flowchart into code solves the wrong problem, convenient as it is. How we represent the decision block,task, activity, state, value, or triangle on a whiteboard is NOT what is holding us back. That is a notation, nothing more, and people can learn new notations quite easily. At least they can learn a notation quickly compared to how fast they can learn to automate their business functions.

Experience that tells me workflow oriented systems are the right way to solve many types of systems problems. By systems, I mean organizing people and computers to get stuff done. But, all indications seem to say this isn’t going well at very many places right now. Why? Sounds like a lot of interesting conversations are in the works!

* I actually have no idea how many lines of bpel are needed to do this.