Skip to main content

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.)

Comments

Unknown 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 Domer said…
Great post Jeff...gave me a nice insight into the meeting! Sounds really cool, wish I could have been there.
Anonymous said…
Jeff, I'm glad you got some good stuff from my talk! Thanks for taking the time after the event to say hi.

Popular posts from this blog

Get Your Team Foundation Server Hate On!

[Google ranking skyrockets... ;-)]

I'm a big fan of TFS/VSTS. However, there are a good pocket of folks who take issue with the way TFS handles or implements a certain feature. Well this is your chance to vent!

I'm planning a presentation around the "Top 10 TFS/VSTS Hates and How to Alleviate Them"...or something along those lines. But I need your help. Post a comment below detailing your dislike. If it's legitimate, I'll highlight it in the presentation and [hopefully] provide an alternative, resolution, or work-around.

Thanks in advance!

Update 7/19/2008: Version Control and Microsoft

Rollback a Ooops in TFS with TFPT Rollback

Rhut roe, Raggie. You just checked in a merge operation affecting 100's of files in TFS against the wrong branch. Ooops. Well, you can simply roll it back, right? Select the folder in Source Control Explorer and...hey, where's the Rollback? Rollback isn't supported in TFS natively. However, it is supported within the Power Tools leveraging the command-line TFPT.exe utility. It's fairly straightforward to revert back to a previous version--with one caveot. First, download and install the Team Foundation Power Tools 2008 on your workstation. Before proceeding, let's create a workspace dedicated to the rollback. To "true up" the workspace, the rollback operation will peform a Get Latest for every file in your current workspace. This can consume hours (and many GB) with a broad workspace mapping. To work around this, I create a temporary workspace targeted at just the area of source I need to roll back. So let's drill down on our scenario...
I'm workin…

Shrinking WSS (Sharepoint) SQL Server Log Files

Yesterday, while migrating a source repository from StarTeam to TFS, I received the following error:
"TF30042: The database is full. Contact your Team Foundation Server administrator."Excuse you? Sure enough, my 100+ GB drive was full on the server. But I'd only migrated around 1000 items. Surely SQL wasn't consuming 100MB per file.

Turns out (yes, there was a lot of crud on the drive but...) the majority of the space, almost 40GB was being consumed by the Windows Sharepoint Services WSS Content data and log SQL Server files. Huh? I still need to investigate and understand why this portal, which is 100% unused, grew so large. Regardless, here's what I did to resolve:

Since this is not yet a production database, I flipped the SQL recovery option from Full to Simple for WSS Content and several other databases. Detail here and here.
Executed the maintenance plan for all the databases to get backups and clear out some of these files. That didn't help much. The Auto_…