前面我们介绍了QLExpress的基础知识,这篇文章我们介绍下QLExpress的语法。
基础语法
在QLExpress中,他首先支持所有的java普通语法,例如下列这些基础运算语法:
1、+ 运算加法 2、- 运算减法 3、* 运算乘法 4、/ 运算除法 5、< 逻辑小于判断 6、> 逻辑大于判断 7、<= 逻辑小于等于判断 8、>= 逻辑大于等于判断 9、!= 逻辑不等于判断 10、% 运算取模
正对运算类的语法我们在第一篇的文章里面已经给出了介绍,下面演示下逻辑判断的语法
@Test public void test2() throws Exception { // 定义规则引擎执行器,qlexpress中的规则引擎执行的时候都是在这个ExpressRunner里面执行的 ExpressRunner runner = new ExpressRunner(); String expressQL = "a > b "; DefaultContext<String, Object> params = new DefaultContext<String, Object>(); params.put("a", 1); params.put("b", 2); // 有了规则,有了变量,那么就需要去执行对应的规则 Object result = runner.execute(expressQL, params, null, true, true); log.info("本次规则执行的结果是:{}", result); }
上面的案例我们使用的是大于判断,看下执行结果:
返回了false的操作。所以这里的逻辑运算也是没有问题的
标准的程序控制逻辑语法
这里的标准的程序控制逻辑语法主要是可以直接写一些类似for循环,if then else等的语法,例如下面的案例展示下使用for循环
@Test public void test3() throws Exception { // 定义规则引擎执行器,qlexpress中的规则引擎执行的时候都是在这个ExpressRunner里面执行的 ExpressRunner runner = new ExpressRunner(); String expressQL = "sum=0; for(i = 0;i<n;i++){sum = sum+i} return sum"; DefaultContext<String, Object> params = new DefaultContext<String, Object>(); params.put("n", 10); // 有了规则,有了变量,那么就需要去执行对应的规则 Object result = runner.execute(expressQL, params, null, true, true); log.info("本次规则执行的结果是:{}", result); }
上面的逻辑是编写一个for循环,然后执行计算1到9的求和,然后我们运行下看下结果:
看到结果是45,满足我们的预期结果。同时我们还可以执行下if else,例如:
@Test public void test4() throws Exception { // 定义规则引擎执行器,qlexpress中的规则引擎执行的时候都是在这个ExpressRunner里面执行的 ExpressRunner runner = new ExpressRunner(); String expressQL = "sum=0; for(i = 0;i<n;i++){if(i%2 == 0) continue;sum = sum+i} return sum"; DefaultContext<String, Object> params = new DefaultContext<String, Object>(); params.put("n", 10); // 有了规则,有了变量,那么就需要去执行对应的规则 Object result = runner.execute(expressQL, params, null, true, true); log.info("本次规则执行的结果是:{}", result); }
此时我们在里面添加了if判断,只添加奇数。看下天执行结果
这里看到了正确的执行结果。所以其实看的出来,一些简单的运算,我们都可以放在规则引擎里面执行。
还没有评论,来说两句吧...