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