All Projects → NRules → Nrules.language

NRules / Nrules.language

Licence: mit
Business rules language for NRules rules engine.

Programming Languages

language
365 projects

Projects that are alternatives of or similar to Nrules.language

Rulerz
Powerful implementation of the Specification pattern in PHP
Stars: ✭ 827 (+1403.64%)
Mutual labels:  rules, rules-engine
Node Rules
Node-rules is a light weight forward chaining rule engine written in JavaScript.
Stars: ✭ 481 (+774.55%)
Mutual labels:  rules, rules-engine
Roulette
A text/template based rules engine
Stars: ✭ 32 (-41.82%)
Mutual labels:  rules, rules-engine
Rulette
A pragmatic business rule management system
Stars: ✭ 91 (+65.45%)
Mutual labels:  rules, rules-engine
powerflows-dmn
Power Flows DMN - Powerful decisions and rules engine
Stars: ✭ 46 (-16.36%)
Mutual labels:  rules, rules-engine
Json Rules Engine
A rules engine expressed in JSON
Stars: ✭ 1,159 (+2007.27%)
Mutual labels:  rules, rules-engine
Rulebook
100% Java, Lambda Enabled, Lightweight Rules Engine with a Simple and Intuitive DSL
Stars: ✭ 562 (+921.82%)
Mutual labels:  rules, rules-engine
Rules
Generic Rules engine in golang
Stars: ✭ 96 (+74.55%)
Mutual labels:  rules, rules-engine
rools
A small rule engine for Node.
Stars: ✭ 118 (+114.55%)
Mutual labels:  rules, rules-engine
Nrules
Rules engine for .NET, based on the Rete matching algorithm, with internal DSL in C#.
Stars: ✭ 1,003 (+1723.64%)
Mutual labels:  rules, rules-engine
Kaonashi
Wordlist, rules and masks from Kaonashi project (RootedCON 2019)
Stars: ✭ 353 (+541.82%)
Mutual labels:  rules
Passmaker
可以自定义规则的密码字典生成器,支持图形界面 A password-generator that base on the rules that you specified
Stars: ✭ 363 (+560%)
Mutual labels:  rules
Rules
No description, website, or topics provided.
Stars: ✭ 6,421 (+11574.55%)
Mutual labels:  rules
Cloud Custodian
Rules engine for cloud security, cost optimization, and governance, DSL in yaml for policies to query, filter, and take actions on resources
Stars: ✭ 3,926 (+7038.18%)
Mutual labels:  rules-engine
Precept
A declarative programming framework
Stars: ✭ 621 (+1029.09%)
Mutual labels:  rules
Ansible Role Firewall
Ansible Role - iptables Firewall configuration.
Stars: ✭ 343 (+523.64%)
Mutual labels:  rules
Rules For Quantumult X
适用于 Quantumult X 规则整理集合. 所有内容源自 互联网,仅作为收集和整理
Stars: ✭ 307 (+458.18%)
Mutual labels:  rules
Gamification Engine
gamification-engine (gengine) is a framework for developing gamification features for your application
Stars: ✭ 286 (+420%)
Mutual labels:  rules-engine
Chn Iplist
Chnroutes rules for routers、Shadowrocket、Quantumult、Kitsunebi、acl、BifrostV、v2rayNG、v2rayN、clash、pac、Qv2ray、v2ray config file.
Stars: ✭ 469 (+752.73%)
Mutual labels:  rules
Android Udev Rules
Android udev rules list aimed to be the most comprehensive on the net
Stars: ✭ 810 (+1372.73%)
Mutual labels:  rules

Rule# - Language for NRules

Rule# (Rule Sharp) is a business rules language for NRules rules engine.

⚠️ This project is currently in early development

Build status NuGet NRules on Stack Overflow Join the chat

Installing Rule#

First, install NuGet. Then, from the Package Manager Console:

To compile Rule# rules to the canonical form, install NRules.RuleSharp:

PM> Install-Package NRules.RuleSharp

To compile rules in the canonical form to the runtime model and to be able to execute rules, install NRules.Runtime:

PM> Install-Package NRules.Runtime

Getting Started

In NRules, rules are expressed against a domain model. Given the following domain model (located in the Domain assembly):

namespace Domain
{
    public class Customer
    {
        public string Name { get; set; }
        public bool IsPreferred { get; set; }
    }
    
    public class Order
    {
        public int Quantity { get; set; }
        public double UnitPrice { get; set; }
        public double PercentDiscount { get; set; }
        public bool IsDiscounted { get { return PercentDiscount > 0; } }

        public double Price
        {
            get { return UnitPrice*Quantity*(1.0 - PercentDiscount/100.0); }
        }
    }
}

And given the following rule Discount.rul:

using Domain;

rule "Order Discount"
when
    var customer = Customer(x => x.IsPreferred);
    var order = Order(x => !x.IsDiscounted, x => x.Quantity > 10);
    
then
    order.PercentDiscount = 5.0;
    Console.WriteLine("Applied discount. Customer={0}, Discount={1}", customer.Name, order.PercentDiscount);

The following code will compile the Discount.rul, insert facts into the rules session and fire the activated rules.

var repository = new RuleRepository();
repository.AddNamespace("System");
repository.AddReference(typeof(Console).Assembly);
repository.AddReference(typeof(Order).Assembly);

repository.Load(@"Discount.rul");

var factory = repository.Compile();
var session = factory.CreateSession();

var customer = new Customer {Name = "John Doe", IsPreferred = true};
var order1 = new Order {Quantity = 12, UnitPrice = 10.0};
var order2 = new Order {Quantity = 5, UnitPrice = 15.0};

session.Insert(customer);
session.InsertAll(new[] {order1, order2});

session.Fire();

Copyright © 2012-2021 Sergiy Nikolayev under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].