• NRules(0.9.0)规则引擎开发指南


    简介:规则引擎主要用于模型的规则控制,根据自定义的规则模型对业务模型进行赋值或执行业务模型中的方法等自定义编码。

    一、规则引擎的基本对象:

    1. 业务模型(包含字段属性,方法等的基于业务创建的模型)
    2. 规则模型(规则是基于哪个业务模型建立的)

    二、规则引擎基本流程:

    1.加载规则模型类库

    var repository = new RuleRepository();

    repository.Load(x =>x.From(typeof(PreferredCustomerDiscountRule).Assembly));

    2.将所有规则编译到工厂中,工厂创建会话对象

    //Compile rules

    var factory = repository.Compile();

     //Create a working session

     var session = factory.CreateSession();

    1. 实例化业务模型,并添加到规则中

     var customer = new Customer("John Doe") { IsPreferred = true };

                var customer2 = new Customer("zhibin hu") { IsPreferred = true };

                //var order1 = new Order(123456, customer, 2, 25.0) {  IsOpen= true };

                //var order2 = new Order(123457, customer, 1, 100.0) { IsOpen = true };

                //Insert facts into rules engine's memory

                session.Insert(customer);

                session.Insert(customer2);

    1. 执行规则

    session.Fire();

    三、规则模型的创建及对业务模型的影响:

    1.创建规则模型必须继承NRules.Fluent.Dsl.Rule

    2.规则的定义重写该方法:public abstract void Define();

    Define内调用when()定义规则执行条件

    如:

    When().Match<Customer>(() => customer);

    该规则定义了,当检测到添加了类型为Customer的业务模型时,则执行then中的行为

    Then().Do(x => Console.WriteLine("PreferredCustomerDiscountRule...name:"+customer.Name));

    then中可以为业务模型赋值,执行业务模型中的方法

    When()中的条件有很多,包括各种查询检索判断,还可以加载其他业务模型进行比较

  • 相关阅读:
    最简洁的Mysql修改密码,不会你打我
    两步解决jetbrains-agent-latest.zip不能拖入工作区
    JSON学习笔记
    【书评】【不推荐】《机器学习实战——基于Scikit-Learn和TensorFlow》
    weblogic更新部署
    功能网址
    jupyter快捷键
    MYSQL连接字符串参数说明
    C# 格式验证
    Supervisor
  • 原文地址:https://www.cnblogs.com/DavidHuAtIT/p/12447492.html
Copyright © 2020-2023  润新知