Skip to content

klein2ms/stickler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stickler Logo

When you're a stickler for the rules.

Example Rule Service Architecture

Example Service Architecture


Stickler.Engine Architecture

Class Diagram


Example Usage

Stickler.Instance
        .Enforce(new RuleBookBuilder<Holding, Fund>()
            .AddRule(new RuleDto
            {
                Name = "Alert Rule",
                TargetTypeName = "Holding",
                RuleExpression = "ensure holding.Nav is >= fund.Nav"
            })
            .OnSuccess((target, comparison) =>
            {
                Console.WriteLine($"Succeeded for {target} and {comparison}");
            })
            .OnFailure((target, comparison) =>
            {
                Console.WriteLine($"Failed for {target} and {comparison}");
            })
            .Build())
        .Enforce(new RuleBookBuilder<Fund, Holding>()
            .AddRule(new RuleDto
            {
                Name = "Function Rule",
                TargetTypeName = "Fund",
                RuleExpression = "ensure fund.GetNav() is > holding.Nav"
            })
            .OnSuccess((target, comparison) => target.Nav + comparison.Nav)
            .Build());

var holding = new Holding { Nav = 25 };
var fund = new Fund { Nav = 35 };

var result = Stickler.Instance.Handle<Fund, Holding, decimal>(fund, holding);

Assert.That(result, Is.EqualTo(holding.Nav + fund.Nav));

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages