当规则应用程序在KIE服务器上运行时,如何启用规则引擎跟踪/日志记录?
规则应用程序是在工作台中创建的,不包含自定义代码。我能够使用KIE REST API执行规则,但是规则应用程序没有产生预期的结果。
环境:
我尝试了以下步骤:
当我这样做时,它会忽略我的日志设置,但垃圾邮件会无休止地将消息日志到控制台,告诉我它不能实例化日志类:
20-Jun-2017 16:58:29.070 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.C
ontextSelector due to ch.qos.logback.classic.selector.ContextSelector
20-Jun-2017 16:58:29.083 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.C
ontextJNDISelector due to ch.qos.logback.classic.selector.ContextJNDISelector
20-Jun-2017 16:58:29.101 WARNING [http-nio-8080-exec-5] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type ch.qos.logback.classic.selector.D
efaultContextSelector due to ch.qos.logback.classic.selector.DefaultContextSelector
将以下jar添加到Tomcat的/lib
文件夹中:
logback-classic-1.1.3.jar
logback-core-1.1.3.jar
slf4j-api-1.7.2.jar
slf4j-ext-1.7.2.jar
(不记得slf4j jar是否已经存在,或者我是否添加了它们。)
对于Windows,如果文本文件bin/setenv.bat
不存在,则创建文本文件。
在setenv.bat
中,添加以下设置:
set "JAVA_OPTS=%JAVA_OPTS% -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile="%CATALINA_HOME%\conf\logback.groovy""
这些控制台监听器指示logback告诉您是否您的logback配置是错误的。另一个设置是您的日志配置文件的位置。
对于跟踪规则,我的logback.groovy
如下所示:
import java.nio.charset.Charset
appender('STDOUT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = "%d{HH:mm:ss.SSS} %-5level %logger{5} - %msg%n"
}
}
appender('STDOUT-SHORT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
charset = Charset.forName('UTF-8')
pattern = "%d{HH:mm:ss.SSS} - %msg%n"
}
}
root(WARN, ["STDOUT"])
logger("org.apache", WARN, ["STDOUT"], false)
logger("org.kie.server", WARN, ["STDOUT"], false)
logger("org.kie.server.controller", DEBUG, ["STDOUT"], false)
logger("org.guvnor.common.services.builder.IncrementalBuilderExecutorManagerFactoryImpl", ERROR, ["STDOUT"], false)
logger("bitronix", ERROR, ["STDOUT"], false)
logger("org.kie.api.event.rule", TRACE, ["STDOUT"], false)
logger("org.drools.core", TRACE, ["STDOUT-SHORT"], false)
logger("org.uberfire.commons.async.SimpleAsyncExecutorService", ERROR, ["STDOUT"], false)
我们目前正在将jBPM(7.37.final)规则部署到一个Kie执行服务器,并使用执行服务器自动公开的REST API调用规则。 但是由于一些体系结构的限制,我们不能使用REST API调用规则。该选项是执行一个基于jar(kie服务器客户机或其他)的集成,并从客户机(java应用程序)远程调用执行服务器上的规则。 Virges Vinay
“Drools骆驼服务器”和“KIE-WB执行服务器”有什么区别?它们是否服务于在远程服务器中执行规则/进程的相同目的?
我正在使用drools引擎构建一个预警系统。当条件满足时,我们需要在规则(RHS)的操作上执行由Spring Framework实例化的@Service方法。 让Spring框架创建的@service实例被Drools规则的操作(RHS)使用的方法是什么? 我遵循了以下指示: 使用表单导入功能(Rule1.drl)。此解决方案不起作用,因为该类是在drools中实例化的,需要执行静态方法 关于如何
我是个新来的流口水的人,正在尝试为牙齿保险申请设计一些规则。系统基本上会让用户知道,根据之前执行的服务的历史记录,他们将要执行的程序可能不在保险范围内。它还将有其他规则,可能是基于年龄的,但我可以处理这些规则。 我的事实是: 患者-患者信息列表 服务-以前执行的服务。(即:服务代码=D1234,执行日期=日期) 警报-(alertName=“X射线2/12个月期间”) 我需要一条规则,说明患者在过
我的要求是在工作台之外(比方说在记事本中)修改规则文件(.drl),并用这个新的drl文件更新容器。是否有一种简单的方法以编程方式创建jar文件,并将其部署到中央maven存储库中?然后,我可以运行KIE扫描程序来查找jar文件的最新版本,并自动更新容器。或者有没有其他推荐的方法可以用更新的.drl文件更新正在运行的容器? 我的客户机应用程序不是Java的,所以我不是在寻找一个集成的解决方案,在那
我想在不同的规则流中使用一些drools规则。由于Drools规则一次只支持一个规则流组名称,并且规则流业务规则任务也可以映射到单个规则流组,所以我无法在不同的规则流中使用相同的规则。有没有其他方法可以用来过滤规则?比如使用标记或元数据?