89.2. hello World 示例决策(基本规则和调试)
Hello World 示例决策集演示了如何将对象插入到决策引擎工作内存中,如何使用规则匹配对象,以及如何配置日志记录以跟踪决策引擎的内部活动。
以下是 Hello World 示例的概述:
-
名称 :
helloworld
-
主要课程:
org.drools.examples.helloworld.HelloWorldExample
(在src/main/java
中) -
模块 :
drools-examples
- 键入: Java 应用程序
-
规则文件 :
org.drools.examples.helloworld.HelloWorld.drl
(src/main/resources
) - 目标 :演示基本规则执行和使用调试输出
在 Hello World 示例中,会生成一个 KIE 会话,以启用规则执行。所有规则都需要一个 KIE 会话来执行。
用于规则执行的 KIE 会话
KieServices ks = KieServices.Factory.get(); KieContainer kc = ks.getKieClasspathContainer(); KieSession ksession = kc.newKieSession("HelloWorldKS");
KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer();
KieSession ksession = kc.newKieSession("HelloWorldKS");
有关 Red Hat Decision Manager 项目打包的更多信息,请参阅 打包和部署 Red Hat Decision Manager 项目。
Red Hat Decision Manager 有一个公开内部引擎活动的事件模型。两个默认调试监听器: DebugAgendaEventListener
和 DebugRuleRuntimeEventListener
,将调试事件信息打印到 System.err
输出。KieRuntimeLogger
提供执行审核,您可以在图形查看器中查看结果。
调试监听器和审计记录
日志记录器是在 Agenda
和 RuleRuntime
监听程序基础上构建的专用实现。在决策引擎执行完成后,会调用 logger.close()
。
这个示例创建了一个带有消息 "Hello World"
的 Message
对象,将 status HELLO
插入到 KieSession
中,使用 fireAllRules()
执行规则。
数据插入和执行
规则执行使用数据模型将数据作为输入和输出到 KieSession
。本例中的数据模型有两个字段: 消息
,它是一个 String
,其状态为 HELLO
或 GOODBYE
。
数据模型类
这两个规则位于 src/main/resources/org/drools/helloworld/helloworld/HelloWorld.drl
文件中。
"Hello World"
规则的 when
条件指出,针对插入到 KIE 会话的每个 Message
对象激活规则,其具有 status Message.HELLO
。另外,会创建两个变量绑定:变量 消息
绑定到 message
属性,变量 m
绑定到匹配的 Message
对象本身。
规则的 then
操作指定将绑定变量 消息
的内容打印到 System.out
,然后更改绑定到 m
的 Message
对象 的消息
和状态属性的值。该规则使用
modify
语句应用一个语句中的分配块,并通知块末尾的更改的决策引擎。
"hello World" 规则
"Good Bye"
规则与 "Hello World"
规则类似,但它会与具有状态
的 Message 对象匹配。
Message
.GOODBYE
"好"规则
要执行示例,请在 IDE 中将 org.drools.examples.helloworld.HelloWorldExample
类作为 Java 应用程序运行。该规则会写入到 System.out
,debug 侦听器写入 System.err
,审计日志记录器 在目标/helloworld.log
中创建日志文件。
IDE 控制台中的 system.out 输出
Hello World Goodbye cruel world
Hello World
Goodbye cruel world
IDE 控制台中的 system.err 输出
为了更好地了解本例中的执行流,您可以将审计日志文件从 target/helloworld.log
加载到 IDE 调试视图或 Audit View (例如,如果可用)。
在本例中,audit 视图显示 对象已插入,这将为 "Hello World"
规则创建一个激活。然后执行激活,它会更新 Message
对象并导致 "Good Bye"
规则激活。最后,执行 "Good Bye"
规则。当您在 Audit View 中选择一个事件时,origin 事件(此示例中是 "创建的"
事件)将以绿色突出显示。
图 89.3. hello World 示例 Audit 视图