WF Processes High Volume Claims

I recently had the opportunity to push WF further than I have ever taken the framework before. I had a need of initially processing thousands of claims for payment reimbursement with the number of claims growing daily. Each claim had to be processed everyday at a predefined interval(hours), to determine what action needed to be taken. Basically the claims were placed into states and moved around based on how they were processed. For instance, a claim might be processed but the reimbursement period might have expired, therefore putting it into and Expired state.

My first goal was to get existing claims out of an external case management system based on certain business rules. Now this workflow would check for new claims every hour(wfGetNewClaims), so after getting a batch of claims, another workflow was invoked(wfProcessClaims) loading each claim as a workflow instance. Once they were loaded, they could be processed asyncronously from the parent workflow allowing each claim to be processed. This particular client had some real specific business rules, basically a matrix of rules that fit real nice into policy activities and other OOB activities. For instance, there were rules for setting the state of the claim, while there were also notifications via email that needed to happen based on the state and the amount of time the claim was in a particular state. Finally, after the claims were processed for payment reimbursement or expired, a final workflow was invoked for each claim to measure quality and process indicators, measuring the success of the business process. For example, "Average of claims that were expired for a certain amount of time". Notifications were also needed to send indicator information which was driven by other policy activities. Ajustments could be made based on measuring these indicators

After I completed this solution, I had discovered that WF had been a good choice in which I could rapidly build extensible business rules, that the client seemed to change monthly and sometimes weekly. The claims flow was transparent, which allowed me to make changes to the process very easily, as business requirements changed over time. Finally, because these claims needed to be processed sometimes for over a years time, WF took care of all of the plumbing needed so I did not have to build it(persistence). When the project was completed, WF was processing close to 3,000 claims, which was pretty impressive. it could process all of the business rules for each claim very quickly. Honestly, at first I was somewhat concerned because I had never processed a large volume of WF Instances before, but I was very pleased in the performance and the confidence gained.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/30/2008 at 5:02 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (12) | Post RSSRSS comment feed

KnownTypes For Deserializing System.Worklfow.Activities.Rules.RuleSet Through WCF

I recently ran into some trouble with exposing RuleSets through WCF and was able to get it to work by adding some KnownTypes for the datacontract.

[KnownType(typeof(System.Workflow.Activities.Rules.RuleExpressionCondition))]

[KnownType(typeof(System.CodeDom.CodeBinaryOperatorExpression))][

KnownType(typeof(System.CodeDom.CodeFieldReferenceExpression))]

[KnownType(typeof(System.CodeDom.CodeThisReferenceExpression))][

KnownType(typeof(System.CodeDom.CodePrimitiveExpression))]

[KnownType(typeof(System.CodeDom.CodePropertyReferenceExpression))][

KnownType(typeof(System.Workflow.Activities.Rules.RuleHaltAction))]

[KnownType(typeof(System.CodeDom.CodeMethodInvokeExpression))][

KnownType(typeof(System.Workflow.Activities.Rules.RuleStatementAction))]

[KnownType(typeof(System.CodeDom.CodeExpressionStatement))][

KnownType(typeof(System.CodeDom.CodeTypeReferenceExpression))]

[KnownType(typeof(System.CodeDom.CodeObjectCreateExpression))]

Check out my response to the MSDN post

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/23/2008 at 1:28 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (49) | Post RSSRSS comment feed

Why Workflow At Tallahassee, Florida's Code Camp?

Seems that my new best favorite presentation is now Why Workflow? I had such a great time speaking about the topic here in Jacksonville, at our last code camp that I figured I would do it again at Tally's Code Camp, October 11, 2008. It is almost like taking a debate class but winning every debate. Well maybe not winning everytime but at least sharing my passion of the framework, and showing some of the top reasons as to why it should not be overlooked.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/18/2008 at 3:52 PM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (9) | Post RSSRSS comment feed

WF Rules Engine Without Workflows?

I never really gave much attention to working just with the rules engine that comes with WF. Usually I am building processes from scratch, and by doing so leveraging the rules engine through the Policy Activity while building workflows. Recently though, I accepted a new job and I am being tasked with handling additional functionality to current processes, that using workflows for would be overboard but not impossible Undecided. But this got me thinking though and I remembered hearing about using the rules engine without workflows. Basically I was getting hit up for tasks that made the idea even more inviting to try, but honestly if I had not had the honor of working with WF, I might have passed up the thought of using the rules engine independently from WF all together. Although I plan to put together a tutorial on how to accomplish this in some logical manner later, at this point my post is intended to explain the thought process of why you would do this, and what actually takes place under the hood.

Conditions for using WF's Rule Engine Independently 

1.     Processes already exists

2.     Rules can change over short durations

3.     During processing, rulesets can be driven execute by non technical staff

How does it happen?

1.     While creating rules in workflows using Policy activities, rules are created using a ruleset editor. Many rules make up a ruleset and a ruleset is executed at designated times. There is a great example here.

2.     Rulesets are stored as XAML within a .rules file. This is important because the rules can be modified by making changes to the XAML, and they can also be stored in SQL Server as a central location for reuse through serialization to other applications.

3.     Rules are made up of exposed properties, methods, etc. that reside within an assembly.

4.     Rules are deserialized into RuleSet objects that are validated by the rules engine so they can be executed

5.     Finally the rules can be executed when ever processing needs to occur.

Finally, independently using the rules engine that comes with WF can really change the way applications are written today. Of course there are other rules engines out there, however WF's does a majority of what you will probably need. By placing rules outside of applications, they can flexibility of how they process, while promoting code reuse within others. Make sure you take the time to check out WF's Rules Engine. My team is already pumped with the idea of learning how to separating them out and I think you will be too.

 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/18/2008 at 3:49 PM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (127) | Post RSSRSS comment feed

Made The Florida Times Union (Jacksonville's Paper)

While boating last Labor Day, we went to the Landing where my son, Nathan and I were trying to stay cool in the fountain.

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/13/2008 at 4:07 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (19) | Post RSSRSS comment feed

My Review of Jacksonville's Last Code Camp

The title was going to be "Faye Could Not Stop Jacksonville's Code Camp Last Saturday", however with my blog being down I was not able to get this out the Monday after the event, August 23, 2008. I did want to voice how I thought it went...

For those of you who read the topic of this post and do not live in the southeast, you may have thought that Faye was some speaker’s wife that was upset because her husband was speaking at a Saturday code camp rather than spending time with her. I assure you that Faye was much worse than that. Faye was the tropical storm that slowly made her way through Florida, helping to decide rather or not to have our code camp. While most of us were without power, and making our own minds up that we were not going to be able to even speak, the organizers of the code camp, Tom and Jon Bates, Noel and Chad Cooper were making sure things would still happen.

After we found out that the original location of where we were supposed to have code camp was still shutdown due to the storm, the leaders of the code camp decided to use the next facility available, a church. When I found out about this I was a bit concerned about how we would still do our presentations but I realized everything was under control once I got the new code camp's location.

I never thought that a code camp could be so well organized at such a last minute. Vendors who were sponsoring the event had their table littered with material and manned. Registration went as smooth as a two window drive-thru and the way they notified attendees about each presentation and how to get there was genius. Each presentation was announced about 5 minutes before they began and had walkers that would lead the attendees to the room that the session was in. We had LCD TV's to present from and the rooms were the right size where we did not have to use any audio equipment.

Overall, I would close the books after the event and say it was a success after the curve balls that were thrown at it. We still had our Microsoft representation by Russ Fustino, Jeff Barnes and my other good friend, Joe Healy. Thanks to all of you for making this year's code camp a success and I especially appreciate the diehard attendees who still made it out, while majority still had their power out due to the storm.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/13/2008 at 4:02 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

New Home For My Blog

Wow, I am up and running again! Between taking another job and my blog going down, I have been real busy. I am extremely happy though to be up and running again, with my new domain and with this new blog software BlogEngine.Net. I have already had some issues that I brought all on my own,  and because it is Microsoft .Net open source, I was quickly able to resolve my issues. So if you need to setup a new blog check it out!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: BayerWhite
Posted on: 9/13/2008 at 3:36 AM
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (22) | Post RSSRSS comment feed