drools—-stateless session(无状态会话)的使用
无状态
Drools 规则引擎中有如此多的用例和诸多功能,它变得令人难以置信。不过不用担心,复杂性是分层的,你可以用简单的用例来逐步了解 drools。
无状态会话,不使用推理,形成最简单的用例。无状态会话可以被称为函数传递一些数据,然后再接收一些结果。无状态会话的一些常见用例有以下但不限于:
- 验证
这个人有资格获得抵押吗?
- 计算
计算抵押保费。
- 路由和过滤
将传入的邮件(如电子邮件)过滤到文件夹中。
将传入的邮件发送到目的地。
所以让我们从使用驾驶执照应用程序的一个非常简单的例子开始吧。
1 2 3 4 5 6 |
|
---|---|
此时,可以从类路径创建一个 KieContainer 来读取要构建的文件。
1 2 |
KieServices kieServices = KieServices.Factory.get(); KieContainer kContainer = kieServices.getKieClasspathContainer(); |
---|---|
上面的代码段编译了类路径中找到的所有 DRL 文件,并将该编译结果 KieModule 放在 KieContainer 中。如果没有错误,我们现在可以从 KieContainer 创建我们的会话并执行一些数据:
1 2 3 4 5 |
StatelessKieSession kSession = kContainer.newStatelessKieSession(); Applicant applicant = new Applicant(“Mr John Smith”, 16); assertTrue(applicant.isValid() ); ksession.execute(applicant); assertFalse(applicant.isValid() ); |
---|---|
上述代码根据规则执行数据。由于申请人年龄未满 18 岁,申请被标记为无效。
到目前为止,我们只使用了一个实例,但是如果我们想要使用多个实例呢?我们可以执行任何实现 Iterable 的对象,如集合。我们再添加一个名为 Application 的类,它有应用程序的日期,我们还将布尔有效字段移到 Application 类。
1 2 3 4 5 6 7 8 9 10 11 |
---|