第五天:Drools深入-规则配置

来源:互联网 发布:档案整理软件 编辑:程序博客网 时间:2024/04/29 23:53

Release Notes:版本说明

KIE是drools所使用工具的统称(umbrella name),现有drools大家庭中包含哪些成员呢?


对KIE剖析

1.      基于Maven的项目架构

Drools在5.X版本中最大的诟病就是部署项目过程太过于灵活,这种灵活的方式使得部署这件本来简单异常的事情必须需要有足够经验的操作人员才能胜任。在6版本中由于有了maven,这一切都有了改观。

2.      kmodule.xml

kmodule.xml是其中一部分,其目的在于简化执行规则配置,如下例所示:

声明kbase和ksession:

<kmodulexmlns="http://jboss.org/kie/6.0.0/kmodule">

<kbase name="kbase1"packages="org.mypackages>

<ksession name="ksession1"/>

</kbase>

</kmodule>

详解:

<kmodule>是整个文件的声明,其中xmlns=http://jboss.org/kie/6.0.0/kmodule表示执行的版本信息。

<kbase>是执行规则包信息,包下面所有规则,其中name是kbase别名,packages是指定执行包的位置。

<ksession>是执行session别名。

3.      运用ksession进行规则处理

KieServicesks = KieServices.Factory.get();

KieContainerkContainer = ks.getKieClasspathContainer();

KieSessionkSession = kContainer.newKieSession("ksession1");

kSession.insert(newMessage("Dave", "Hello, HAL. Do you read me, HAL?"));

kSession.fireAllRules();

4.      KieBase之间的引用

<kmodulexmlns="http://jboss.org/kie/6.0.0/kmodule">

<kbase name="kbase2"includes="kbase1">

<ksessionname="ksession2"/>

</kbase>

</kmodule>

或者可以在java代码中进行引用

KieModuleModelkmodule = KieServices.Factory.get().newKieModuleModel();

KieBaseModelkieBaseModel1 = kmodule.newKieBaseModel("KBase2").addInclude("KBase1");

 

全局变量global

首先在规则中定义global,global定义的位置位于import和规则体之间,就像java代码一样

globaljava.util.List myGlobalList;

同时在规则中还需要对这个全局变量进行处理:

rule "Globe Test"

    when

        eval(true);

    then

        myGlobalList.add("hello globe");

end

在引用的java代码中需要设置这个全局变量,具体的设置方法如下:

进行规则计算后返回信息如:

输出:list info is :hello globe

 

.Ps:需要说明的一点事:global是一个全局的变量,也就是说它的存在是跨越规则之间的。


Function函数

functionString hello(String name) {

    /* code goes here*/

    return "successadd '"+name +"'";

}

 

rule "Globe Test1"

    when

        eval(true);

    then

        myGlobalList.add(hello("global2"));

end

 

declare定义一个对象

declare Address

number : int

streetName : String

city : String

end

目前还不能知道这个如何进行复制处理

 

Salience优先级

数值越大越优先执行,salience 110>100>90
0 0
原创粉丝点击