What pattern/patterns work best for developing rule/decision engine

.net, business-logic, business-rules, design-patterns

Solution

Basically business rules look like

forall rules:
  if <condition> then doAction();

What about categorizing all offences by severity using scores, perhaps extra bonus for frequent "evil-doers", some offences may become time-barred and whatever required.

Then a rough draft of an algorithm could be:

- Sum of all scores of a customer (weighted)

- compare to maximum

This would be straight forward using data structures instead of many (possibly deeply nested) if..then..else things.

Problem

I am working on a decision engine / rule evaluation engine. For example: Input: Customer and all the offences done by the customer Output: Consequences of the offences A sample case would be: Input: Customer(Jhonny Chimpo, 999-00-1111), Offences ( Broke window, slapped boss, kicked team lead in his groin) Output: Gets pink slip So the piece of code I want to write evaluates different offences based on rules for each offence and combined offence. The current code is just a maze of if and else statements. I am sure such business problems are common. What design/enterprise pattern is usually used to solve a problem like this? Is it the specification pattern? I want the code to be open for extension, clean and flexible.

Original source