2

我目前正在建立在这里找到的骆驼流口水示例:https ://github.com/FuseByExample/camel-drools-example

路线如下:

<route trace="false" id="testRoute">
    <description>Example route that will regularly create a Person with a random age and verify their age</description>
    <from uri="timer:testRoute"/>
    <bean method="createTestPerson" ref="personHelper"/>
    <to uri="drools:node1/ksession1?action=insertBody" id="AgeVerification">
        <description>valid 'action' values are:
                'execute' that takes a 'Command' object (default)
                'insertBody' that inserts the Exchange.in.body, and executes rules
                'insertMessage' that inserts the Exchange.in (type org.apache.camel.Message), and executes rules
                'insertExchange' that inserts the Exchange (type org.apache.camel.Exchange), and executes rules
            </description>
    </to>
    <choice>
        <when id="CanDrink">
            <simple>${body.canDrink}</simple>
            <log logName="Bar" message="Person ${body.name} can go to the bar"/>
        </when>
        <otherwise>
            <log logName="Home" message="Person ${body.name} is staying home"/>
        </otherwise>
    </choice>
</route>

我已经为我自己的项目扩展了这个示例,并添加了更复杂的规则和不同的事实,我现在想对其进行调试,但是我不知道如何让 Drools 调试在骆驼/熔断器环境中工作。

理想情况下,我希望看到 Drools IDE 提供的所有各种调试视图,例如议程视图、工作内存视图等(根据http://docs.jboss.org/drools/release/5.5.0.Final/流口水专家文档/html/ch06.html#d0e8478)。我已将我的 Eclipse 项目转换为 Drools 项目。我创建了一个新的“Drools 应用程序”调试配置,但不知道在“主类”部分放置什么。我没有自己的主类,因为它是调用规则触发并将事实插入工作内存的骆驼。

我已经尝试将应用程序作为普通 Java 应用程序进行调试,因此我在执行应用程序的 drools 部分之前设置了断点。我遵循了 drools 文档,该文档说,如果您设置正常断点并单击应填充 drools“工作内存”或“议程”视图的 workingMemory 变量,但是我总是看到“选定的工作内存为空”,即使虽然我知道它不是。我已经从头到尾单步执行了所有可能的 WorkingMemory 变量的代码,但我仍然看到“选定的工作内存为空”错误。

有没有人能够在使用骆驼部署时成功调试口水?如果是这样,您采取了哪些步骤?

干杯。

4

1 回答 1

0

我使用 KnowledgeRuntimeLogger 来帮助调试我的 camel/drools 应用程序。它创建了一个我在 Audit 视图中查看的日志文件(您可以将它拖到 eclipse 中的视图中)。

KnowledgeRuntimeLogger flogger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession,"c:/temp/wmlog");

如果您需要在 spring 中执行此操作,您可以将其创建为带有两个构造函数参数的 bean(或创建您自己的小 bean 来创建记录器)。

hth

于 2013-07-25T15:14:42.503 回答