鍍金池/ 教程/ Java/ Drools調(diào)試
Drools規(guī)則語法
Drools調(diào)試
Drools常用術(shù)語
創(chuàng)建Drools程序(入門)
Drools教程
Drools規(guī)則編寫
Drools Eclipse插件
Drools運(yùn)行時(shí)
Drools簡單項(xiàng)目

Drools調(diào)試

有不同的方法來調(diào)試Drools項(xiàng)目。在這里,我們將編寫一個(gè)實(shí)用工具類,知道哪些規(guī)則正在被觸發(fā)或發(fā)射。

通過這種方法,可以檢查所有的規(guī)則都在Drools項(xiàng)目得到觸發(fā)。這里是我們的工具類

Utility.java

package com.sample;

import org.drools.spi.KnowledgeHelper;

public class Utility {
   public static void help(final KnowledgeHelper drools, final String message){
      System.out.println(message);
      System.out.println("\nrule triggered: " + drools.getRule().getName());
   }
   
   public static void helper(final KnowledgeHelper drools){
      System.out.println("\nrule triggered: " + drools.getRule().getName());
   }
}

第一種方法幫助打印規(guī)則一起,可以通過為String通過DRL文件中的一些額外的信息觸發(fā)。

第二條規(guī)則助手打印特定的規(guī)則是否被觸發(fā)。

我們增加了在每個(gè)DRL文件中的實(shí)用方法之一。我們在DRL文件(Pune.drl)還增加了導(dǎo)入函數(shù)。在當(dāng)時(shí)的部分規(guī)則,我們已經(jīng)加入了效用函數(shù)調(diào)用。下面修改Pune.drl。改變以藍(lán)色顯示。

Modified Pune.drl

//created on: Dec 24, 2014
package droolsexample

//list any import classes here.
import com.sample.ItemCity;
import java.math.BigDecimal;
import com.sample.HelloCity; 

import function com.sample.Utility.helper;

// declare any global variables here
dialect "java"
rule "Pune Medicine Item"

   when
      item : ItemCity(purchaseCity == ItemCity.City.PUNE, 
                      typeofItem == ItemCity.Type.MEDICINES)
   
   then
      BigDecimal tax = new BigDecimal(0.0);
      item.setLocalTax(tax.multiply(item.getSellPrice()));
      HelloCity.writeHello(item.getPurchaseCity().toString()); 
      helper(drools);
end

rule "Pune Groceries Item"

   when
      item : ItemCity(purchaseCity == ItemCity.City.PUNE, 
                      typeofItem == ItemCity.Type.GROCERIES)
      
   then
      BigDecimal tax = new BigDecimal(2.0);
      item.setLocalTax(tax.multiply(item.getSellPrice())); 
      helper(drools);
end

同樣地,我們已經(jīng)添加在第二個(gè)DRL文件(Nagpur.drl)其他效用函數(shù)。這里是修改后的代碼:

修改后的 Nagpur.drl

// created on: Dec 26, 2014
package droolsexample

// list any import classes here.
import com.sample.ItemCity;
import java.math.BigDecimal; 

import function com.sample.Utility.help;

//declare any global variables here
dialect "java"

rule "Nagpur Medicine Item"
   
   when
      item : ItemCity(purchaseCity == ItemCity.City.NAGPUR, 
                      typeofItem == ItemCity.Type.MEDICINES)
   
   then
      BigDecimal tax = new BigDecimal(0.0);
      item.setLocalTax(tax.multiply(上一篇:Drools規(guī)則語法下一篇:創(chuàng)建Drools程序(入門)