RuleBatch
Batch evaluation for 10+ rules with shared compilation context.
public sealed class RuleBatch : IRuleEngine
Methods
AddRule(Rule) / AddRules(IEnumerable<Rule>)
Adds rules to the batch.
var batch = new RuleBatch()
.AddRule(new Rule { Expression = "x > 0", Description = "Positive" })
.AddRule(new Rule { Expression = "x < 100", Description = "Under limit" })
.AddRules(GetRulesFromDatabase());
Compile(RuleParameter[], string[]?)
Single compile pass for all rules.
var compileParams = new[] { new RuleParameter("customer", typeof(Customer)) };
batch.Compile(compileParams);
Evaluate(RuleParameter[]) / EvaluateParallel(RuleParameter[])
Evaluates all rules.
var results = batch.EvaluateParallel(parameters);
foreach (var result in results)
{
Console.WriteLine($"{result.RuleDescription}: {(result.Success ? "PASS" : "FAIL")}");
}
Loading Rules
| Source | Method |
|---|---|
| Manual | batch.AddRule(new Rule { ... }) |
| List | batch.AddRules(existingRules) |
| JSON | batch.AddRules(JsonRuleLoader.LoadWorkflowFromFile("rules.json").Rules) |
| Database | batch.AddRules(dbContext.Rules.Where(r => r.IsActive).ToList()) |
Related
- IRuleEngine — Interface
- Workflow — Alternative container