有不同的方法來調(diào)試Drools項(xiàng)目。在這里,我們將編寫一個(gè)實(shí)用工具類,知道哪些規(guī)則正在被觸發(fā)或發(fā)射。
通過這種方法,可以檢查所有的規(guī)則都在Drools項(xiàng)目得到觸發(fā)。這里是我們的工具類
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)色顯示。
//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ù)。這里是修改后的代碼:
// 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程序(入門)