?? businesslayer.java
字號:
package test;
import java.io.InputStreamReader;
import java.io.Reader;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.event.DebugWorkingMemoryEventListener;
import org.drools.rule.Package;
public class BusinessLayer {
//引入規則引擎
private final static String Business_Rule_File = "/BusinessRule.drl";
//內部規則庫
private static RuleBase businessRules = null;
static StockOff st=new StockOff();
//加載規則文件
//用一個靜態的方法來添加規則文件
private static RuleBase readRules() throws Exception {
//讀入規則文件
Reader source = new InputStreamReader(BusinessLayer.class
.getResourceAsStream(Business_Rule_File));
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl(source);
Package pkg = builder.getPackage();
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage(pkg);
return ruleBase;
}
//評價是否購買這只股票
public static void evaluateStockPurchase(StockOff stockToBuy) {
//執行讀入方法
try {
businessRules = readRules();
} catch (Exception e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
//輸出一下
System.out.println("激活規則文件");
System.out.println("----輸出----");
//規則庫的WorkingMemory
WorkingMemory workingMemory = businessRules.newStatefulSession();
workingMemory.addEventListener(new DebugWorkingMemoryEventListener());
//插入事實,把參數插入到workingMemory
workingMemory.insert(stockToBuy);
//利用直接插入數據的方式
//有待改進
st.setStockName("XYZ");
st.setStockPrice(50);
st.setStockQuantity(1000);
workingMemory.insert(st);
//激活規則
workingMemory.fireAllRules();
}
public static void main(String args[])
{
BusinessLayer b=new BusinessLayer();
b.evaluateStockPurchase(st);
System.out.println("2009年5月10日23:38:28");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -