Friday, January 25, 2008

January CONDG Meeting

Hit the Central Ohio .Net Developers Meeting last night. You'll find me there almost every month but last night was especially cool.

Mike Wood presented on .Net Workflow (WF) as a rules engine. This is Mike's fourth time in recent weeks delivering this presentation around the Heartland (Microspeak for Ohio, Ky, Michigan, Tenn) District and it showed. The talk communicated the ins and outs of a complicated but feature-rich product with clarity and passion. It was one of the best I can remember in recent months...although I tend to get really geeked out about WF and BPM.

I must admit an "ah, ha" moment in approaching .Net WF as a rules engine. (It seems fundamental and a no-brainer that the heart of WF is a rules engine but...) I had always just thought of it as a mostly-graphical (drag/drop) method to lay out a business process...like a mortgage application approval process. Did someone from Credit approve it? Yes, then "route" to Accounting, etc. But WF is so much more. By persisting business rules in WF (simply XML .rules files behind the scenes), we can bring significant maintenance improvements to our code.

Think about a business rule change in your code today. A scary prospect, right? Well, hopefully, you've surrounded your rules with great test coverage (in my best Judge Schmales: "hmmmm? hmmmm?") making it somewhat easier. However, you still need to recompile and re-deploy assemblies, etc. And, more importantly, you need to make sure your change to the rule doesn't cascade into other rules causing unexpected outcomes with your business logic.

With WF rules, you use the rule editor to make the change and the XML gets serialized out to the .rules file. WF handles priorities, chaining, etc. Push that file out into your prep/test environment, test like a banshee and push it to production. Very cool.

WF also provides lots of helpful features such as hierarchical or rule priority execution forcing certain, higher priority rules to execute first. Additionally, one can persist workflow state out to a relational store, interrupt workflow midstream (step 8 of 10 contains a business rule that needs to change...all objects currently before 8 must experience this change), or even host business rules outside of WF.

Overall, Mike gave a great presentation. He engaged the audience and shared some very helpful information. I'll definitely recommend this to my clients given the right situation.

Additionally, there are lots of new developments with the group:
  • CONDG is now a non-profit group
  • New board members were elected:
  • CONDG sponsorships are now being accepted:
    • Annual: $2000
    • Single meeting: $250
    • SWAG: $50
  • Sponsorships should result in dinner being catered in (Nice! No more 15 minute throw down a Chipotle burrito or starve until arriving home at 8:30!)
  • CONDG has formed a sub/sister group entitled the Mid-Ohio Connected Systems Developer Group (MOCSDG). Not sure how to pronounce that but I'm soooo there! More details to come.
  • And, finally, CONDG has begun working in closer conjunction with COSPUG, the Sharepoint/MOSS user group.
Way to kick off the year, guys. Very exciting developments. I'm looking forward to a great year of learning and contributing (my ADO.Net Entity Framework talk got pushed back to May but I'm on the hook for a February grok talk...I'm thinking about a mobile 3.5 LINQ to Amazon demo.)

4 comments:

Kevin said...

Sounds like a great presentation. Rules engines are incredibly powerful, not surprisingly the .rules files can be read on the fly as in...from a database? Allowing rules to be tweaked after being deployed...which can have benefits (yes, yes, I know, they changes won't be *tested*, but with some sound groundrules it can be extremely powerful. Hopefully the rules engine in this blog isn't broken, cause if I'm not mistaken it says you posted this at 5:45 AM ????? ;)

Jeff Hunsaker said...

@kevin

Actually, I do my best writing at 5AM: it's quiet, kids are asleep, I haven't endured an entire day of events. Perfect.

Shawn said...

Great post Jeff...gave me a nice insight into the meeting! Sounds really cool, wish I could have been there.

MikeWo said...

Jeff, I'm glad you got some good stuff from my talk! Thanks for taking the time after the event to say hi.