【问题标题】:Converting a rule from node-rules engine to nools rule engine将规则从 node-rules 引擎转换为 nools 规则引擎
【发布时间】:2014-12-25 18:33:13
【问题描述】:
var RuleEngine = require('node-rules');
var titan = {
      "product": "Titan",
      "amount":"500",
      "base":1,
      "conversation":0.91,
      };
      var oxicash = {

      }

      var rules = [{
        "name": "Product rule",
        "description": "when the product matches Titan",
        "priority": 1,
        "on":1,
        "condition":
            function(fact,cb) {
                cb(fact && (fact.product = "Titan"));
            },
        "consequence":
            function(cb) {
                console.log("Rule 1 matched for "+this.product);
                var a = this.amount;
                var b = this.base;
                var c = this.conversation;

                var result1= (a*c)/b;
                console.log("the promotion cost is:"+result1);
                this.result = true;
                this.process = true;
                cb();
            }
    }];
    var R = new RuleEngine(rules);

R.execute(titan,function(result){ 

    if(result.result) 
        console.log("\n-----u have discount----\n"); 
    else 
        console.log("\n-----u dont have discount----\n");

    console.log(result); 
    console.log(result1); 


});

我是规则引擎的新手。我正在尝试编写规则,并且我是在“节点规则”中制作的。但我开始知道“nools”是编写规则的最佳选择,而且重量很轻。但我对nools一无所知。 我研究了整个文档,但这让我感到困惑。所以请任何人都可以通过转换来帮助我 我在“node-rules”中写到“nools”的规则。提前感谢您提供的信息。

【问题讨论】:

    标签: node.js nools node-rules


    【解决方案1】:
    //server.js file
    "use strict";
    var nools = require("nools");
     var ruleFilePath = __dirname + "/rule.nools";
    var flow = nools.compile(__dirname + "/rule.nools");
    var session=flow.getSession();
    var Titan = flow.getDefined("titan");
    
    
    
    var t = new Titan(),
        session1 = flow.getSession(new Titan({product : 'titan',amount : 500, base : 1, conversation : 0.91}), t),
        s1 = +(new Date());
    session1.match().then(function () {
    
        console.log("%d [%dms]", t.rule3, +(new Date()) - s1);
        //console.log()
        session1.dispose();
        profiler.pause();
    });
    //rule.nool
    define Titan {
    product : null,
    amount : null,
    base : null,
    conversation : null
    }
    rule product_rule {
    when {
      t1 : Titan t1.product == 'titan' && t1.amount == 500 && t1.base == 1 && t1.conversation == 0.91 ;
    }
    then {
    var a = t1.amount;
            var b = t1.base;
            var c = t1.conversation;
            console.log(a);
            var v = (a*c)/b;
            console.log(v);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多