RuleFlow

Lightweight, developer-friendly rule engine for .NET

View the Project on GitHub rubenrichtering/RuleFlow

The RuleFlow.Extensions.DependencyInjection package registers RuleFlow with Microsoft.Extensions.DependencyInjection. Playground: Dependency Injection (DependencyInjectionScenario.cs).

services.AddRuleFlow()

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRuleFlow();

var app = builder.Build();

Optional configuration:

builder.Services.AddRuleFlow(options =>
{
    options.EnableExplainability = true;
});

What gets registered

Service Lifetime Role
IRuleEngine Singleton RuleEngine — evaluate rules
IRuleContext Scoped DefaultRuleContext — per-request context
RuleFlowOptions Options EnableExplainability (default true)

Consuming IRuleEngine

public class OrderService
{
    private readonly IRuleEngine _ruleEngine;

    public OrderService(IRuleEngine ruleEngine)
    {
        _ruleEngine = ruleEngine;
    }

    public RuleResult Process(Order order)
    {
        return _ruleEngine.Evaluate(order, OrderRules.ApprovalRules);
    }
}

See also