规则引擎ILOG JRULES 开发基础教程6

       

       除了优先级也可以用规则流来指定规则执行顺序,如下图是主规则流中的子规则流,其里面执行顺序和逻辑一目了然。

       

 

 

3.5规则编写

Ilog Jrules提供的规则形式有四种:普通规则,决策表,决策树,规则流

3.5.1普通规则

普通规则是最简单的规则形式,形式和编程语言中的IF…ELSE语句是一样的,不同的地方在于,规则引擎的IF…ELSE是不可以嵌套的,且每个规则中只允许有一个IF和一个ELSE,例如:

如果

    ‘customerInfo’ age小于18

那么

     设置‘customerInfo’的当前rusult“REJECT” ;

否则 

设置‘customerInfo’的当前rusult“APPROVE” ;

3.5.2决策表

决策表是以表格的形式展现规则,决策表能罗列出所有的可能情况,并清晰的指出相应的处理方式,而所有可能情况的平面罗列,也能避免在程序语言编写中,因为逻辑上的层层嵌套而产生遗漏,尤其在if-then-else结构中else部分是可选的情况下。

决策表的条件列和操作列是需要初始化的,之后才可以像填表一样填写规则。新建一个决策表之后,选中双击决策表,就会在规则编辑器中打开一个空的决策表,决策表分为条件列和操作列,用颜色深浅区分。

操作过程:

定义条件列:将鼠标放于条件列头右键编辑条件列在测试下面输入条件,点击应用输入标题(标题即列名)确定。

Rule Studio对决策表的条件的输入的帮助功能支持得不是很好,最好先将条件在普通规则中写好,去掉”如果”关键字,将表达式占位符用<>括起来,例如:‘customerInfo’age小于 <一个数字>。这样一个条件列就准备好了,在其下面的表格中即可以输入数字类型的参数,输入不符合定义类型的参数,决策表将会报错。

    

     

设置好条件的决策表:

      

同样也可以设置子条件列:

例如:‘customerInfo’age大于<一个数字>小于 <一个数字>,注意”大于<一个数字>小于 <一个数字>“中间没有”并且”关键字,那么其形成的条件列如下图所示:

   

“否则”的设置:选中条件单元格右键添加否则。

定义操作列:将鼠标放于操作列头右键编辑操作列在测试下面输入操作输入标题(标题即列名)确定。

定义操作列和定义条件列大致相同,不同的是在操作中要输入相应的操作,例如:设置 ‘customerInfo’的当前rusult<一个字符串>

可以鼠标点中<输入一个操作>,即会出现如下提示:

   

操作表的上方有一排功能图标,常用的有增加条件列,减少条件列,增加操作列,减少操作列,也可以像excel那样在内容相同的条件下并同单元格。

“禁用”功能:”禁用”功能只能在操作列使用,因为操作列的操作已经指定,如果在操作列的表格中什么也不输入,就会执行参数为空的操作。禁用后则说明也不会执行。图标是。而在条件列中什么也不输入时,规则引擎会忽略掉这个条件的判断。

决策表的局限:在于操作列定义适用于不同参数的相同操作方法,不能不同条件执行不同的方法。

3.5.3决策树

决策树是规则引擎中最灵活的表现形式,任何规则都可以用决策树来表示。


其中菱形表示条件部分,如同决策表的列头部分,可以带参数;箭头表示时间走向,里面是填充好了参数的条件;矩形则为要执行的操作部分,可以执行任意个数的操作。

 
 

如上决策表的规则,用决策树表示如下:

       

 

 

3.6 规则常用语法

字符串连接:设置
‘customerInfo’
的当前rusult “A” + “B”;

字符串的包含:如果
‘customerInfo’
cust name 包含
“SHIXIN”

Listsize如果
‘customerInfo’
history loan 中的元素数量
小于等于
0

List的循环遍历:

预定义

    指定
‘history_loan’

一个application_info
来自(
in
)
‘customerInfo’
   history loan list ;

时间的比较:

如果

     ‘customerInfo’ birth day 等于或早于 2012-06-11

 

 

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注