将Drools与JHipster集成

时间:2018-06-27 17:41:30

标签: java spring drools jhipster kie

我正在尝试解决JHipster和Drools遇到的问题。 尝试调试它时,我已经在一个简单的Java项目中以及在Spring的一个单独项目中使用了流口水。 但是现在我正在尝试使其在JHipster(新生成的项目)中工作。但我不知道为什么记录无法正常工作

  • 我更改了引用
  • .drl文件被识别
  • .drl文件中的错误代码被识别
  • 控制台中没有错误
  • 该规则不会记录任何内容
  • 该规则不会更改对象。

有人对在哪里寻找问题有建议吗?

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

0 个答案:

没有答案