📄 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 + -