傻瓜纯洁思想里的沙子
愿意当傻瓜的人都快乐
posts - 7, comments - 3, trackbacks - 0, articles - 11
导航
BlogJava
首页
新随笔
联系
聚合
管理
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2006年10月 (3)
2006年8月 (3)
2006年7月 (1)
文章分类
java(4)
工作(5)
数据库
生活(3)
文章档案
2009年2月 (2)
2006年10月 (5)
2006年8月 (2)
2006年7月 (2)
相册
Drools
收藏夹
其他(1)
生活
规则引擎(1)
搜索
最新评论
1. re: 长短信
513514208
--杨节
2. re: 长短信
你好你可以加我QQ吗?我的长短信协议还是不太明白
--杨节
3. re: 1.2 为什么要使用规则引擎
您好!我觉得这盘文章应该是您翻译过来的,请问原文的题目叫什么呢?或者可否发给我一份到邮箱呢?麻烦您回复我到shaliebao@163.com,万分感谢!
--沙
阅读排行榜
1. CMPP-SGIP协议设计与实现(1806)
2. 第一章 规则引擎(1517)
3. 1.2 为什么要使用规则引擎(1414)
4. 1.3 Knowledge Representation(347)
5. 公司大门坏了(326)
评论排行榜
1. 1.2 为什么要使用规则引擎(1)
2. 第一章 规则引擎(0)
3. CMPP-SGIP协议设计与实现(0)
4. 公司大门坏了(0)
5. 庆祝我的blog开通(0)
1.3 Knowledge Representation
Posted on 2006-10-08 10:13
哈迪尤
阅读(347)
评论(0)
编辑
收藏
Knowledge Representation
1.3.1 Production Rules
规则或Production Rules在Drools里由规则成立时处理动作(LHS)和规则不成立时处理动作(RHS)两部分和其它下面一些而外的属性组成。
。salience
。agenda-group
。auto-focus
。activation-group
。no-loop
。duration
rule “
<
name
>
”
<
attribute
>
<
value
>
when
<
LHS
>
then
<
RHS
>
end
LHS由规则的名称和逻辑组合条件组成。下面则是符合规则条件下要执行的指定的动作。中间属性列用来约束初始数据。
Drools现在支持的逻辑条件有:
。“and”
。“or”
。“not”
。“exists”
"forall"和"accumulate"在不久也会加入。下面的字段约束是容许的
。Literal Constraint (字符串约束)
。Bound Variable Constraint (变量范围约束)
。Return Value (范围值约束)
。Predicate (断言)
下面的语言指导介绍更详细的关于它们的消息
Working Memory在匹配初始数据或修改数据后的时候根据LHS 的条件,把所有匹配的规则激活。一旦规则被激活放入Agenda 里就
有可能会被按照执行顺序调用规则RHS的动作。LHS和RHS的关系就下面语句关系一样:
if
(
<
LHS
>
)
{
<
RHS
>
}
尽管“if”在像“if-else if...else”中是执行语句的一部分,规则使用“when”的语义确定规则是否被激活,则规则LHS被匹配。规则
像 “package”一样关联到命名空间。其它的规则引擎叫这个叫规则集合(Rule Set)。命名空间(Package)可以声明imports其它Package,
全局变 量, 函数和规则。
package
com.sample
import
java.util.List
import
com.sample.Cheese
global List cheeses
function
void
exampleFunction(Cheese cheese)
{
System.out.println( cheese );
}
rule “A Cheesey Rule”
when
cheese : Cheese( type
==
"
stilton
"
)
then
exampleFunction( cheese );
cheeses.add( cheese );
end
上面的例子使用一列单独的字符串变量约束的规则来匹配Cheese 。
rule
"
Cheddar Cheese
"
when
Cheese( type
==
"
cheddar
"
)
then
System.out.println(
"
cheddar
"
);
end
这个例子和下面是相同的:
public
void
cheddarCheese(Cheese cheese)
{
if
( cheese.getType().equals(
"
cheddar
"
)
{
System.out.println(
"
cheddar
"
);
}
}
规则引擎完全把业务规则和数据分离。改变Working Memory里的初始数据时候,规则不像方法和函数一样可以被直调用。规则引擎可以向java一样声明做什么而不是怎么做。
First Order Logic
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 哈迪尤