# 规则引擎--超轻量级 less-rules **Repository Path**: izecsonLee/less-rules ## Basic Information - **Project Name**: 规则引擎--超轻量级 less-rules - **Description**: 超级轻量级的规则引擎,简单易用,超级容易上手 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 21 - **Created**: 2021-11-13 - **Last Updated**: 2021-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 规则引擎--超轻量级 #### 介绍 超级轻量级的规则引擎,简单易用,超级容易上手 #### 软件架构 软件架构说明 略 #### 安装教程 目前还没有发布到maven的中央仓库,所以只能下载源码,打包到自己的仓库,使用 #### 使用说明 1、【规则表达式例子】: ``` ((alarmId == '123' or alarmId == '124') and clearFlag != '0') and alarmTitle contains 'xd21' and alarmText notcontains 'Jzdd' and alarmCount in ['45','xx22','23','2333'] and alarmLevel > 3 and alarmServity < 8 ``` 2、java代码例子 ``` //默认引擎实例:只要有符合的规则就返回结果 LessRuleEngine lre = LessEngineFactory.getDefaultEngine(); //全量引擎实例:返回全部符合的规则 LessRuleEngine lre = LessEngineFactory.getWholeEngine(); // _新建一个规则_ RuleEntity re = new RuleEntity(); // _设置规则分组标识_ re.setGroupId("meeting"); // _设置规则唯一标识_ re.setId("12345678"); //表达式字符串 String express = " clearFlag notin ['2','3','4'] and ( alarmId == '123' or alarmId == '124' )"; // _设置规则表达式_ re.setExpress(express); // _规则注册到规则引擎_ EngineResponse opResult = lre.add(re); //判断规则解析添加是否成功 if(opResult.getOpCode() == EngineResponse.ENGINE_OP_RES_FAIL) { System.out.println("规则解析有错误,此规则没有添加成功:"+opResult.getMsg()); return ; } // _新建一个事实_ Map fact = new HashMap(); fact.put("alarmId", "124"); fact.put("clearFlag", "1"); // _引擎判断事实是否符合规则_ EngineResponse result = lre.fire(fact); //结果判断 if(result.getMatchCode() == EngineResponse.ENGINE_MATCH_RES_SUCC) { // _有规则匹配成功 TODO Something_ } ``` 【判断符号说明】 | 操作符 | 说明 |例子 |-----|----|----| | == | 恒等于 |alarmId == '123'| | != | 不等于 |clearFlag != '0'| | contains | 包含 |alarmTitle contains 'xd21'| | notcontains | 不包含 | alarmText notcontains 'Jzdd'| | in | 在集合 | alarmCount in ['45','xx22','23','2333'] | | notin | 不在集合 | alarmType notin ['45','xx22','23','2333'] | | > | 大于 |alarmLevel > 3| | < | 小于 |alarmLevel < 4| | <= | 小于或等于 |alarmLevel >= 5| | >= | 大于或等于 |alarmLevel > 6| 【逻辑符号说明】 | 逻辑符号 | 说明 | 备注 | |------|------|----------| | and | 且 && | 大小写敏感:小写 | | or | 或 \|\| | 大小写敏感:小写 | #### 参与贡献