drools的insert和logicInsert
时间: 2024-04-26 22:23:14 浏览: 93
在Drools规则引擎中,有两种主要的方式可以向Working Memory(工作内存)中插入事实:
- Insert(插入):使用
insert
关键字将一个事实对象插入到Working Memory中。例如:
FactType factType = kbase.getFactType("com.example", "Person");
Object fact = factType.newInstance();
factType.set(fact, "name", "John Doe");
kcontext.insert(fact);
在规则中,可以通过匹配这些插入的事实来触发规则执行。
- Logical Insert(逻辑插入):使用
insertLogical
关键字将一个逻辑事实对象插入到Working Memory中。逻辑事实是一种特殊类型的事实,它不会立即触发规则匹配,而是在当前规则执行完毕后才进行匹配。逻辑事实通常用于表示中间计算结果或推理过程中的临时数据。例如:
FactType factType = kbase.getFactType("com.example", "Person");
Object fact = factType.newInstance();
factType.set(fact, "name", "John Doe");
kcontext.insertLogical(fact);
逻辑插入的事实在规则中的条件部分(LHS)不会立即匹配,只有在当前规则执行完毕后才会进行匹配。
使用这两种方式插入的事实在Working Memory中都可以被规则引擎感知和使用。选择使用哪种方式取决于你的具体业务需求和规则执行的顺序。