Java脚本引擎实现规则可配置化

2018-06-07  本文已影响353人  张振伟

Java脚本 规则引擎

提出问题

解决思路

示例

下面举个简单的例子(深圳小汽车摇号政策)

新建rool.js脚本文件,里面维护具体的规则逻辑。

// 定义因子
var
    RESIDE_CITY, // 居住地
    HAS_DRIVER_LICENSE, // 是否有C以上驾照
    HAS_CAR, // 是否有本地小汽车
    o;

// 定义规则函数
function doRool() {
    if (RESIDE_CITY != '440300') {
        return "非本地居住";
    }
    
    if (HAS_DRIVER_LICENSE != 'Y') {
        return "无C以上驾照";
    }
    
    if (HAS_CAR != 'N') {
        return "本地已有小汽车";
    }
    
    return ""; // 没有被拦截。
}

// 执行规则
doRool();

Java代码执行rool.js

String js = FileUtils.readFileToString(new File("D:/rool.js")); // 读取脚本。

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");

// 向脚本传递参数
engine.put("RESIDE_CITY", "440300");
engine.put("HAS_DRIVER_LICENSE", "Y");
engine.put("HAS_CAR", "Y");

// 执行并打印
System.out.println(engine.eval(js));

>:本地已有小汽车
上一篇 下一篇

猜你喜欢

热点阅读