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


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…

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

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_…

TFS Error | The type initializer for 'Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder' threw an exception.

Posting this one for the search engines. If you ever receive the exception "The type initializer for 'Microsoft.TeamFoundation.Build.Server.BuildInformationNodeBinder' threw an exception.", more than likely, your drive space is at 0 on your TFS application tier box.

I encountered this at a client recently. The root cause was that IIS logs had filled up the OS drive (C:\). I switched IIS logging to the applications drive (D:\) which cleaned up the OS drive and resolved the issue.

Detailed message:

TF53010: The following error has occurred in a Team Foundation component or extension:

Date (UTC): 6/7/2011 4:18:53 PM


Application Domain: /LM/W3SVC/8080/ROOT/tfs-1-129519118182628600

Assembly: Microsoft.TeamFoundation.Framework.Server, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727

Service Host: 7ecfbd77-b386-4d75-b038-b05474782696 (DefaultCollection)

Process Details:

Process Name: w3wp

Process Id: 3676

Thread Id: 5752


Verified by Visa: Everything We Tell Folks to Avoid

Phishing is defined by F-Secure as: "Fraudulent e-mail or website claiming to be legitimate seeking indentifiable information. Phishing is an attempt to steal your personal data."When I recently attempted an online purchase from WalMart using my VISA card, being a security wanta-be, I immediately thought phishing when redirected to and saw this dialog:

Seriously, these folks have to be kidding. You're asking for my personal data during a transaction and claim that's its a service " no additional cost." Wow! Thanks...but absolutely not, you jokers. As a malicious thief, I can go a long way with this data.

This is exactly the type of experience which aids malfeasance and the folks trying to steal personal data / identities. How long have we been working to educate folks to avoid providing this type of data under these type of circumstances? Years. And we're just now starting to turn the corner.

VISA, get rid of this! When folks submi…