• 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()中的条件有很多,包括各种查询检索判断,还可以加载其他业务模型进行比较

  • 相关阅读:
    异常[PersistenceUnit: default] Unable to build Hibernate SessionFactory
    关于本地模块安装入maven仓库出现的异常
    dwd面试记录与最近面试的一些感想。
    java编程思想第九章接口
    java编程思想第八章多态
    微服务调用本地测试与外部测试的差异
    Java编程思想第七章复用类
    Gson的学习与使用
    为什么会有这个分类?
    Spark 2.1.1 源码编译
  • 原文地址:https://www.cnblogs.com/DavidHuAtIT/p/12447492.html
Copyright © 2020-2023  润新知