我正在尝试解决JHipster和Drools遇到的问题。 尝试调试它时,我已经在一个简单的Java项目中以及在Spring的一个单独项目中使用了流口水。 但是现在我正在尝试使其在JHipster(新生成的项目)中工作。但我不知道为什么记录无法正常工作
有人对在哪里寻找问题有建议吗?
src / main / java / com.company.ssa / service / ProcessingService.java
package com.company.ssa.service;
import org.kie.api.KieServices;
import org.kie.api.logger.KieRuntimeLogger;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class ProcessingService {
private final Logger log = LoggerFactory.getLogger(ProcessingService.class);
public String testFunctionOne() {
log.info("started TestFunctionOne");
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
Message message = new Message();
message.setMessage("Hello Drools");
message.setStatus(Message.HELLO);
log.info("before fire: " + message.getMessage());
log.info("before fire: " + message.getStatus());
kSession.insert(message);
kSession.fireAllRules();
log.info("after fire: " + message.getMessage());
log.info("after fire: " + message.getStatus());
log.info("ended TestFunctionOne");
return "hello world2";
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
src / main / resources / META-INF / kmodule.xml
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rules"/>
</kbase>
<kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
</kmodule>
src / main / resources / META-INF / maven / pom.properties
groupId=com.budderfly
artifactId=jhipsterrules
version=1.0.0-SNAPSHOT
src / main / resources / rules / rule1.drl
package com.company
import com.company.ssa.service.ProcessingService.Message;
rule "Hello World"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end