RuleEval.Database 1.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package RuleEval.Database --version 1.1.2
                    
NuGet\Install-Package RuleEval.Database -Version 1.1.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RuleEval.Database" Version="1.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RuleEval.Database" Version="1.1.2" />
                    
Directory.Packages.props
<PackageReference Include="RuleEval.Database" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RuleEval.Database --version 1.1.2
                    
#r "nuget: RuleEval.Database, 1.1.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RuleEval.Database@1.1.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RuleEval.Database&version=1.1.2
                    
Install as a Cake Addin
#tool nuget:?package=RuleEval.Database&version=1.1.2
                    
Install as a Cake Tool

RuleEval

RuleEval.Abstractions RuleEval RuleEval.DependencyInjection RuleEval.Database RuleEval.Database.DependencyInjection License: MIT

📚 Dokumentace: architecture.md · nuget-packages.md · publishing-nuget.md

Moderní open-source rule engine pro .NET 8

Obsah

Rychlý start

dotnet add package RuleEval
using RuleEval.Abstractions;
using RuleEval.Core;

var ruleSet = RuleSetBuilder
    .Create("pricing")
    .AddInput("segment")
    .AddInput("age")
    .AddRule(rule => rule
        .When("segment", ".*Perspektiva.*")
        .When("age", "INTERVAL<15;24>")
        .ThenOutput("formula", "C2/240")
        .WithPrimaryKey("id", 1))
    .Build();

var evaluator = new RuleSetEvaluator();
var result = evaluator.EvaluateFirst(
    ruleSet,
    EvaluationContext.FromPositional("7BN Perspektiva Důchod", 15m),
    new EvaluationOptions(CaptureDiagnostics: true));

Console.WriteLine(result.Status);
Console.WriteLine(result.Match?.Outputs[0].RawValue); // C2/240

Volitelná integrace s Microsoft.Extensions.DependencyInjection

using Microsoft.Extensions.DependencyInjection;
using RuleEval.DependencyInjection;

services.AddRuleEval();

EvaluationContext — pozičně nebo dle názvů

Vstupní hodnoty lze předat dvěma způsoby. Pořadí pozičních hodnot odpovídá sloupci Order definice pravidel.

// Pozičně — hodnoty ve stejném pořadí jako vstupní pole v RuleSet
var result = evaluator.EvaluateFirst(
    ruleSet,
    EvaluationContext.FromPositional("7BN Perspektiva Důchod", 15m));

// Dle názvů — nezávislé na pořadí
var result = evaluator.EvaluateFirst(
    ruleSet,
    EvaluationContext.FromNamed(new Dictionary<string, object?>
    {
        ["segment"] = "7BN Perspektiva Důchod",
        ["age"]     = 15m,
    }));

Console.WriteLine(result.Status);                        // Matched
Console.WriteLine(result.Match?.Outputs[0].RawValue);    // C2/240

Vyhodnocení z databáze

dotnet add package RuleEval.Database
dotnet add package RuleEval.Database.DependencyInjection

DB schéma vrací sloupce (Name, ColNr, Order, Type) a data (Col01, Col02, …). ColNr určuje fyzický sloupec v datové tabulce, Order určuje pořadí pro poziční vyhodnocení.

SQL Server

using RuleEval.Database;
using RuleEval.Database.DependencyInjection;

// Registrace
services.AddRuleEvalDatabase(connectionString: "...",
    columnsStoredProcedure: "[Rule].p_GetSchemaColBySchemaCode",
    rowsStoredProcedure:    "[Rule].p_GetTranslatorDataBySchemaCode");

// Vyhodnocení
var repository = serviceProvider.GetRequiredService<IRuleSetRepository>();

// Pozičně — pořadí dle sloupce Order v DB
var result = await repository.EvaluateFirstAsync(
    "Rule1Schema1",
    EvaluationContext.FromPositional("EE.*hodnota", "Ahoj.*hodnota"));

// Dle názvů — Name sloupce z DB schématu
var result = await repository.EvaluateFirstAsync(
    "Rule1Schema1",
    EvaluationContext.FromNamed(new Dictionary<string, object?>
    {
        ["Input1 Obor"] = "EE.*hodnota",
        ["Input2"]      = "Ahoj.*hodnota",
    }));

Console.WriteLine(result.Status);                        // Matched
Console.WriteLine(result.Match?.Outputs[0].RawValue);    // Vystup1

Zkratky na RuleSetRepository

// Výsledek evaluace
EvaluationResult result = await repository.EvaluateFirstAsync(key, context);

// Hodí výjimku při NoMatch / AmbiguousMatch / InvalidInput
EvaluationResult result = await repository.EvaluateFirstOrThrowAsync(key, context);

// Přímo hodnota konkrétního výstupního pole, nebo null
string? value = await repository.GetFirstOutputAsync(key, context, outputName: "Vystup x");

// Hodí výjimku, pokud výstup chybí
string value  = await repository.GetFirstOutputOrThrowAsync(key, context, outputName: "Vystup x");

NuGet balíčky

Projekt NuGet Popis
RuleEval.Abstractions 📦 Contracts a immutable doménový model; referujte, pokud píšete knihovny integrující se s RuleEval
RuleEval 📦 Evaluační engine, built-in matchery (regex, INTERVAL, equality)
RuleEval.Caching Interní projekt bez vlastního NuGet; zkompilován do RuleEval.DependencyInjection a RuleEval.Database. Obsahuje IRuleSetCache, MemoryRuleSetCache, NoCacheRuleSetCache
RuleEval.Diagnostics Interní projekt bez vlastního NuGet. Obsahuje IRuleEvaluationObserver, observer pattern pro výsledky evaluace
RuleEval.DependencyInjection 📦 AddRuleEval() registrace core služeb do IServiceCollection
RuleEval.Database.Abstractions Interní projekt bez vlastního NuGet; zkompilován do RuleEval.Database. Obsahuje IRuleSetSource, IRuleSetRepository — provider-neutral DB contracts
RuleEval.Database 📦 DbRuleSetMapper, RuleSetRepository, PostgreSqlRuleSetSource, SqlServerRuleSetSource
RuleEval.Database.DependencyInjection 📦 AddRuleEvalDatabase() registrace DB služeb do IServiceCollection

Dokumentace

Dokument Obsah
docs/architecture.md Architektura, design rozhodnutí, závislosti mezi vrstvami, evaluační flow
docs/nuget-packages.md Přehled balíčků, typické instalační scénáře, dependency graph
docs/publishing-nuget.md Jak verzovat, zabalit a publikovat NuGet balíčky
samples/RuleEval.Samples Kompletní ukázky použití včetně DI, cache a DB vrstvy
benchmarks/RuleEval.Benchmarks BenchmarkDotNet výkonnostní testy

Build a test

dotnet restore RuleEval.sln
dotnet build RuleEval.sln -c Release
dotnet test RuleEval.sln -c Release --collect:"XPlat Code Coverage"

Licence

MIT. Viz LICENSE.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on RuleEval.Database:

Package Downloads
RuleEval.Database.DependencyInjection

Microsoft.Extensions.DependencyInjection integration for RuleEval database-backed rule loading. Registers DbRuleSetMapper, RuleSetRepository, and IRuleSetSource implementations.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.0 118 3/25/2026
1.2.0 96 3/25/2026
1.1.3 100 3/24/2026
1.1.2 98 3/24/2026
1.1.1 96 3/24/2026
1.1.0 95 3/24/2026
1.0.1 96 3/24/2026
1.0.0 106 3/20/2026