关闭

【规则引擎连载4】 WebSphere ILOG JRules 开发——编写规则、决策表、规则流

标签: IlogWebSphere ILOG JRule规则引擎
1165人阅读 评论(2) 收藏 举报
分类:

引言

规则即业务,在规则引擎中,主要是对业务以及业务流程的处理,让业务人员参与编写业务规则的环境,语法简单易懂,其核心就是一系列的“如果” “那么”的语法。与java中的if、else语句相通。“如果”语句就是if语句,包括if的条件,“那么”语句就是大括号中的语句啦。规则中所有的语句以及词汇都是在bom中翻译成业务术语的,bom来自java程序,归根结底,规则是通过bom调用了java项目中的类以及方法,所以,业务规则需要处理的各种业务,其实是在java项目中实现了的。

一、配置规则集参数

    规则集参数的设置,是在bom上设置的。如果是【一个规则项目一个bom】,则在规则项目上设置规则集参数;如果是【多个规则项目一个bom】,则在bom项目上设置规则集参数。
    规则集参数的作用是什么?通俗的说就是设置规则项目的入口和出口。
1.1 选中规则项目,右键--属性--规则集参数,弹出设置规则集参数的对话框
1.2 点击右上方的“添加”按钮,进行规则集参数的设置。
    1.2.1 设置输入参数:在类型中,点击按钮,选择作为输入参数的类型
1.2.2 弹出的类型选择对话框,其输入框中可输入类名,进而快速定位到作为输入参数的类,点击确定即可

1.2.3 方向:可根据业务需要选择。提供的三个参数的含义如下:
    IN:作为整个规则项目的输入参数;
    OUT:作为整个规则项目的输出参数;
  IN_OUT:既能作为输入参数,也能作为输出参数。
名称:与变量名Java中意义一致,取名规则可参照Java的命名规则。
语言描述:与之前的翻译为业务术语同理,即将变量名“proposal”,翻译为业务术语“当前投保单”。
1.2.4 设置输出参数:参照“设置输入参数”的方法即可。

二、业务规则

2.1 首先新建一个规则包,demo

2.2 选中新建的规则包,右键--新建--业务规则

2.3 弹出新建业务规则对话框,在名称输入框中输入规则名称,点击完成

2.4 打开的规则编辑视图中进行规则编写。
ps:规则的编写具有比较人性化的提示功能,按空格键就会提示相关信息。要熟练的编写规则,需要对业务流程和bom(业务对象模型)比较熟悉。按下空格键,会提示如下信息:
    如果:if(条件)
    那么:大括号中的处理
    预定义:定义一个变量,同Java中的定义变量。由于规则只有“如果”“那么”语句,而在bom中有存在列表list的情况,要遍历list,取得list中的某一个值,通常用预定义来处理。
2.4.1  按下空格键,出现提示,双击“预定义”

2.4.2 双击选中提示框中的任一选项之后,会自动加载出后续提示,如果没有加载出,可按空格键。

2.4.3 bom中,驾驶人为一个列表,即有多个驾驶人。
来自(from):(还在查询资料中)
来自(in): 用于遍历集合。
符合条件:遍历集合时的过滤条件

如上图所示语句,类似于 java中new一个对象的语句,并未赋值。

而如上图,添加了“符合条件”的语句之后,给new的对象已经赋值。
2.4.4 定义了变量,下面开始对使用定义的变量,进行规则的编写。

三、决策表

决策表的思想与业务规则是一样的。多条具有相同结构的业务规则,用决策表来实现。更加清楚明了,同时减少不必要的重复操作,提高效率,节约维护成本。例如下面的这条规则:
 如果
     '当前投保单' 的 机构代码 以  "01"  开始 
那么  设置 '当前投保单' 的机构名称为 "深圳" ;

如果有多个机构,则需要建立很多个规则,并且规则的内容基本一致,改变的只是机构代码和机构名称,那么这种情况下,用决策表再合适不过了。

3.1 规则包上右键--新建--决策表

3.2 弹出的新建决策表对话框,在名称输入框中输入名称,点击完成。在打开的决策表视图中,可对决策表进行编辑。
决策表类似于excel表格,最上面的一行有“A”“B”“C”“D”,类似于表头,叫做标题,其中A、B、C,为条件列,条件 A、B、C之间为并且关系,也就是业务规则中的“如果”“并且”语句;D为操作列,也就是“那么”语句。决策表以行为单位,即一行为一个完整的业务规则。
3.3 编辑条件列:双击需要编辑的条件列的标题(如“A”),弹出编辑条件列对话框,在测试输入框中输入条件。
这里的提示功能不强大,可以先在业务规则里把条件写好,然后复制到这里。把可变条件,改成条件原先的类型,也就是占位符。
如【 '当前投保单' 的 机构代码 以  "01"  开始】改成【 '当前投保单' 的 机构代码 以 <一个 字符串> 开始】。
这里需要注意的是“一个”与“字符串”中间要有个空格,否则会报错。

3.4 在标题输入框中输入简洁的能代表条件列的内容的短语,点击确定。

3.5 把多余的条件列删掉:选中需要删除的条件列的标题,右键--清除条件列。
3.6 编辑操作列:编辑方法与编辑条件列一致,这里不在赘述。

3.7 决策表编写规则:表头设置好了,就开始往表格里插入数据吧。双击表格,可进行编辑。编辑完成后,将鼠标放在行号上,会弹出该行的业务规则内容。
3.8 其他常用操作介绍
3.8.1 常规选项卡
当决策表中的每一条规则,都有同一个条件,在条件列中一一添加,同样是做一些没效率的重复操作,此时,决策表提供了一个“常规”选项卡,可以在“常规”中添加这个条件。在“常规”选项卡中添加了条件的决策表,此时“常规”中的条件,在执行规则时,做为前置条件,先执行,满足“常规”中的条件时,才会去匹配决策表中的规则。
如下图所示,是把条件添加到决策表中的
如下图所示,则是把条件添加到“常规”中:
至于剩下的两个选项卡,对Rule Design熟悉之后,可自行查看,这里做简单介绍:IRL为Rule Design的执行语言,部署到RES上的就是IRL中的内容。Demo01.dta选项卡,为xml语言,主要存储可视化视图“决策表”中的信息。
3.8.2 新增行
新建一个决策表,默认只有20行,如果需要新增行,则在左上角的工具栏中,第四和第五个图标。
3.8.3 新增列
方法1:选中列的标题,右键,弹出的菜单中有插入列的选项
方法2:单击选中单个表格,在表格中右键---添加,至于用哪种方法,看个人习惯啦。
3.8.4 插入特殊字符:单击选中表格,右键--操作符,选中需要插入的即可
3.8.5 类似于excel中的表格合并效果,是因为条件中有两个及以上的占位符,决策表会给每一个占位符,建一个条件列。条件写完之后,点击“应用”按钮,对表达式占位符进行编辑:选中占位符,可设置子列标题。

四、规则流

规则流,就是在规则项目中,控制业务规则的先后执行顺序,是实现业务控制的重要方式。规则流就好比树干,业务规则和决策表等就是树干上的树枝。
4.1 在需要建规则流的规则包上,右键--新建--规则流,在弹出的新建规则流对话框中,输入规则流名称,点击确定按钮
4.2 弹出的规则流编辑视图中,左侧的为规则流中的节点类型,上方的为工具栏。
规则流中,必须包含一个开始节点和一个结束节点,节点中间用带箭头的transition类型连接。
4.2.1 创建一个空规则流:空规则流是没有处理任何规则的规则流,即只包含开始和结束节点的规则流。
点击选中开始节点(也叫start类型节点,绿色的圆),然后在空白处单击一下,创建start类型的节点。再选中结束节点(也叫end类型节点,红色的圆),然后在空白处单击创建end类型节点。然后选中箭头(transition类型的连接),起点在stat,终点在end,最简单的规则流就创建好了。

4.2.2 建一个空的规则流,没有任何业务意义。所以建一个有业务含义的规则流。对于规则六中的其他节点,可以用拖拽的形式进行创建,这也是最简单的方式啦。直接把需要变成节点的规则包、业务规则、决策表、规则流等,选中,然后拖拽到规则流编辑器即可。工具栏的最后一个按钮,可进行美化规则流,很好用哦。
4.2.3 其中有一个functionTask类型的节点,不是拖拽创建的。根据名字知道,这是一个函数处理的节点,常用于规则流的初始化
创建function task节点之后,选中该节点,在其属性视图中可配置该节点的属性以及函数处理。在属性视图的标签中,输入该节点的名字,如初始化等。选中第二个选项“IRL”选项进行函数处理,输入语句。
“IRL”:这个是之前提到过的规则执行的语言;
“转接条件中使用BAL”:这个是业务术语,Rule Design可以将其转换为规则执行语言。
 
4.2.4 当有分支节点时,需要创建分支节点。在分支节点的连接上,需要有分支的条件,最多只能有一条分支上没有条件,否则会报错。
分支上添加条件:选中需要添加条件的连接,在其属性视图中进行编辑,标签中输入分支条件的概括短语,在下面输入条件。注意此时选项为第一个“转接条件中使用BAL”。



1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16739次
    • 积分:325
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:8篇
    • 译文:0篇
    • 评论:3条