Apache camel 在camel/fuseesb中部署时调试会下降

Apache camel 在camel/fuseesb中部署时调试会下降,apache-camel,drools,fuseesb,spring-dm,Apache Camel,Drools,Fuseesb,Spring Dm,我目前正在构建这里的骆驼流口水示例: 路线如下: <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"/> <be

我目前正在构建这里的骆驼流口水示例:

路线如下:

<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>

定期创建随机年龄的人员并验证其年龄的示例路线
有效的“操作”值为:
获取“命令”对象的“执行”(默认)
插入Exchange.in.body并执行规则的“insertBody”
插入Exchange.in(键入org.apache.camel.Message)并执行规则的“insertMessage”
插入交换(键入org.apache.camel.Exchange)并执行规则的“insertExchange”
${body.canDrink}
我已经为我自己的项目扩展了这个示例,并添加了更复杂的规则和不同的事实,现在我想调试这些规则和事实,但是我不知道如何在camel/fuse环境中进行Drools调试

理想情况下,我希望看到Drools IDE提供的所有各种调试视图,如议程视图、工作内存视图等(根据)。我已将Eclipse项目转换为Drools项目。我已经创建了一个新的“Drools应用程序”调试配置,但不知道在“主类”部分放置什么。我没有自己的主类,因为它是调用触发规则并将事实插入工作内存的camel

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

在使用camel部署时,是否有人能够成功调试drools?如果是,你采取了什么措施


干杯。

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

KnowledgeRuntimeLogger flogger=KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession,“c:/temp/wmlog”)

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


hth

注意,6.0.0-SNAPSHOT在osgi、camel和karaf方面的改进正在进行中;但我很想看看你对drools做了什么:)它是开源的吗?