Skip to content

Latest commit

 

History

History
57 lines (55 loc) · 3.27 KB

File metadata and controls

57 lines (55 loc) · 3.27 KB

REngine

Rule Engine

AppSetting配置:
    <appSettings>
        <add key="REngine.RulefilesPath" value="E:\rules"/>
        <add key="REngine.ThrowExceptionIfNotfoundRule" value="1"/>
    </appSettings>

规则文件(*.rule)定义如下:
    #region 折扣规则
        rule default
            return 1;
        end rule
        rule A公司
            if(customerScore>=0&&customerScore<100)
                return 1;
            if(customerScore>=100&&customerScore<300)
                return 0.8;
            return 0.5;
        end rule
        rule B公司
            if(customerScore>=0&&customerScore<100)
                return 0.9;
            if(customerScore>=100&&customerScore<300)
                return 0.7;
            return 0.6;
        end rule
    #endregion

C#代码如下:

Console.WriteLine("折扣规则 - 简单使用");
{
var result = REngine.InvokeAsFloat("折扣规则", REngine.CreateParameter("customerScore", 220));
Console.WriteLine(" " + result);
}

Console.WriteLine("折扣规则 - 区分公司 - A公司");
{
var result = REngine.InvokeAsFloat("折扣规则", "A公司", REngine.CreateParameter("customerScore", 220));
Console.WriteLine(" " + result);
}

Console.WriteLine("折扣规则 - 区分公司 - B公司");
{
var result = REngine.InvokeAsFloat("折扣规则", "B公司", REngine.CreateParameter("customerScore", 220));
Console.WriteLine(" " + result);
}

Console.WriteLine("折扣规则 - 区分公司 - C公司");
{
var result = REngine.InvokeAsFloat("折扣规则", "C公司", REngine.CreateParameter("customerScore", 220));
Console.WriteLine(" " + result);
}