Skip to content

neil-he/REngine

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

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);
}

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 65.1%
  • C# 34.9%