在前面我们介绍过QLExpress是java编写的规则引擎,所以java大部分可以的语法在QLExpress里面也可以使用到。这篇文章我们就介绍下如何使用java的类或者java类里面的对象method。
背景介绍:
使用java判断查询用户的年龄,并且根据用户的年龄判断是否属于成年人。
那么我们像正常一样编写一个java代码的逻辑
package com.qlexpress; public class UserServiceImpl { /** * 判断用户是否成年 * @return */ public Boolean judeUserAdult(Long userId) { Integer userAge = 18; //这里正常的话,我们需要从数据库中查询出来,根据userid或者其他信息查询出用户info,然后取出来userage if(userAge > 18) { return true; }else { return false; } } }
然后我们在规则引擎里面直接使用
runner.addFunctionOfClassMethod(name, clazz, functionName, parameterClassTypes, errorInfo);
用此方法引用即可。完整的测试代码如下:
@Test public void test7() throws Exception { // 定义规则引擎执行器,qlexpress中的规则引擎执行的时候都是在这个ExpressRunner里面执行的 ExpressRunner runner = new ExpressRunner(); runner.addFunctionOfClassMethod("判断用户是否成年", UserServiceImpl.class.getName(), "judeUserAdult", new Class[] { Long.class }, null); String qlExpress = "if(判断用户是否成年(userId)){return '成年';}else{return '未成年'}"; DefaultContext<String, Object> params = new DefaultContext<String, Object>(); params.put("userId", 5); // 有了规则,有了变量,那么就需要去执行对应的规则 Object result = runner.execute(qlExpress, params, null, true, true); log.info("本次规则执行的结果是:{}", result); }
然后我们执行看下结果:
这里就完整的执行了java的代码。上面的案例编写的比较简单,实际中会比较复杂,例如查询sql,查询缓存等信息。
还没有评论,来说两句吧...