jess学习笔记之三:java中嵌入jess引擎
2010-06-14 12:33
459 查看
这是jess7试用版的下载地址:http://herzberg.ca.sandia.gov/jess/download.shtml
java中嵌入jess引擎的部分功能可能是要money的。
加载jess引擎的代码部分:
public class PricingEngine {
private Rete engine;
private WorkingMemoryMarker marker;
private Database database;
public PricingEngine(Database aDatabase) throws JessException {
// Create a Jess rule engine
engine = new Rete();
engine.reset();
// Load the pricing rules
engine.batch("pricing.clp");//自动查找pricing.clp,无论它在当前目录下,还是封装在一个jar文件中,或是在web-inf/classes目录下,都能找到
// Load the catalog data into working memory
database = aDatabase;
engine.addAll(database.getCatalogItems());
// Mark end of catalog data for later
marker = engine.mark();
}
处理一条jess命令,需要四个步骤:重新设置引擎为初始状态,加载命令,执行规则,提取结果。加载命令的代码如下:
private void loadOrderData(int orderNumber) throws JessException {
// Retrive the order from the database
Order order = database.getOrder(orderNumber);
if (order != null) {
// Add the order and its contents to working memory
engine.add(order);
engine.add(order.getCustomer());
engine.addAll(order.getItems());
}
}
//执行命令并返回一个结果的的iterator,这结果需重新转换为java对象:
public Iterator run(int orderNumber) throws JessException {
// Remove any previous order data, leaving only catalog data
engine.resetToMark(marker);
// Load data for this order
loadOrderData(orderNumber);
// Fire the rules that apply to this order
engine.run();
// Return the list of offers created by the rules
return engine.getObjects(new Filter.ByClass(Offer.class));
}
而clp中的规则的内容则类似
Jess> (defrule 10%-volume-discount
"Give a 10% discount to everybody who spends more than $100."
(Order {total > 100})
=>
(add (new Offer "10% volume discount" (/ ?total 10))))
例子代码详见jess/examples/pricing_engine下。
java中嵌入jess引擎的部分功能可能是要money的。
加载jess引擎的代码部分:
public class PricingEngine {
private Rete engine;
private WorkingMemoryMarker marker;
private Database database;
public PricingEngine(Database aDatabase) throws JessException {
// Create a Jess rule engine
engine = new Rete();
engine.reset();
// Load the pricing rules
engine.batch("pricing.clp");//自动查找pricing.clp,无论它在当前目录下,还是封装在一个jar文件中,或是在web-inf/classes目录下,都能找到
// Load the catalog data into working memory
database = aDatabase;
engine.addAll(database.getCatalogItems());
// Mark end of catalog data for later
marker = engine.mark();
}
处理一条jess命令,需要四个步骤:重新设置引擎为初始状态,加载命令,执行规则,提取结果。加载命令的代码如下:
private void loadOrderData(int orderNumber) throws JessException {
// Retrive the order from the database
Order order = database.getOrder(orderNumber);
if (order != null) {
// Add the order and its contents to working memory
engine.add(order);
engine.add(order.getCustomer());
engine.addAll(order.getItems());
}
}
//执行命令并返回一个结果的的iterator,这结果需重新转换为java对象:
public Iterator run(int orderNumber) throws JessException {
// Remove any previous order data, leaving only catalog data
engine.resetToMark(marker);
// Load data for this order
loadOrderData(orderNumber);
// Fire the rules that apply to this order
engine.run();
// Return the list of offers created by the rules
return engine.getObjects(new Filter.ByClass(Offer.class));
}
而clp中的规则的内容则类似
Jess> (defrule 10%-volume-discount
"Give a 10% discount to everybody who spends more than $100."
(Order {total > 100})
=>
(add (new Offer "10% volume discount" (/ ?total 10))))
例子代码详见jess/examples/pricing_engine下。
相关文章推荐
- Java与Flex学习笔记(20)---将flex页面嵌入到jsp页面中
- Java与Flex学习笔记(20)---将flex页面嵌入到jsp页面中
- Java与Flex学习笔记(20)---将flex页面嵌入到jsp页面中
- [学习笔记]小型java游戏引擎_1
- Java模板引擎之Freemarker 学习笔记 一
- Android(java)学习笔记138:html嵌入到java显示乱码
- Java开发学习笔记之十二:JSP语法
- Java正则表达式学习笔记,分离网页邮件地址的蜘蛛程序
- java并发编程实践学习笔记
- 《thinking in java》学习笔记3
- 关于Java学习笔记
- java学习笔记3
- 【java学习笔记s】设计模式--静态代理
- Java学习笔记(七)——对象
- JavaWeb学习笔记-java基础-6-枚举
- [JAVA学习笔记-70]AIO handler form
- java学习笔记03--判断与循环语句
- JAVA IO 学习笔记
- JSR 168 Java Portlet 学习笔记
- java.util.Set学习笔记