gpt4 book ai didi

java - Drool 引擎文件没有被执行

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:01 25 4
gpt4 key购买 nike

我正在尝试执行以下程序,但是 timesheet.drl 文件没有被调用,只是给出 o/p :最终时间表状态 null。无法找出问题所在。

资源:https://www.youtube.com/watch?v=POVe4QY_9p8

DroolDemoMain.Java

package com.sample;

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

public class DroolDemoMain {

public static void main(String[] args) {

try {

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");

Timesheet timesheet = getTimesheetValues();
kSession.insert(timesheet);
kSession.fireAllRules();
System.out.println("Final timesheet status "+ timesheet.getPayStatus());


}
catch(Throwable t) {
t.printStackTrace();
}
}

private static Timesheet getTimesheetValues() {

Timesheet timesheet = new Timesheet();
timesheet.setEmployeeHours(5);
timesheet.setProjectBudgetOk(true);
timesheet.setOverlappingTimesheet(false);

return timesheet;

}
}

时间表.java

package com.sample;

public class Timesheet {

private int employeeHours;
private boolean projectBudgetOk;
private boolean duplicateTimesheet;
private boolean overlappingTimesheet;
private String payStatus;

public int getEmployeeHours() {
return employeeHours;
}
public void setEmployeeHours(int employeeHours) {
this.employeeHours = employeeHours;
}
public boolean isProjectBudgetOk() {
return projectBudgetOk;
}
public void setProjectBudgetOk(boolean projectBudgetOk) {
this.projectBudgetOk = projectBudgetOk;
}
public boolean isDuplicateTimesheet() {
return duplicateTimesheet;
}
public void setDuplicateTimesheet(boolean duplicateTimesheet) {
this.duplicateTimesheet = duplicateTimesheet;
}
public boolean isOverlappingTimesheet() {
return overlappingTimesheet;
}
public void setOverlappingTimesheet(boolean overlappingTimesheet) {
this.overlappingTimesheet = overlappingTimesheet;
}
public String getPayStatus() {
return payStatus;
}
public void setPayStatus(String payStatus) {
this.payStatus = payStatus;
}

}

时间表.drl

package com.sample
import com.sample.Timesheet;

rule"Hours Less"
when
timesheet:Timesheet(employeeHours<8)
then
System.out.println("Employee hours Less Payment Denied");
timesheet.setPayStatus("Denied");
end

kmodule.xml

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">

<kbase name="rules" packages="rules">
<ksession name="ksession-rules"/>
</kbase>

</kmodule>

谁能解释一下我的代码出了什么问题以及如何才能成功执行?

Screenshot of the project structure

最佳答案

在您的 kmodule.xml 中,packages 值是错误的。它应该与您在 drl 文件中提供的包匹配。

关于java - Drool 引擎文件没有被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57556993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com