我正在使用drools 6.5.0.Final来创建我的drools项目。我正在尝试在工作台中使用指导决策表(.gdst)。我想在规则的WHEN和THEN部分使用一些java代码,比如我允许在 .drl 文件中使用,如下所示:
rule "filter rule"
when
//conditions
$Cp : CpClass( name == "Tom",
Math.abs(score) > 10
&&
// How do I use functions like below?
($Cp.parseTime(CurrTime).getTime() -
$Cp.parseTime(PrevTime).getTime())/1000 > 120
)
then
//actions
System.out.println("Rule passed for : "+ $Cp.toString());
$Cp.isGoodCp = true;
end
上例中使用的对象:
public class CpClass {
public String name;
public String currTime;
public String prevTime;
public boolean isGoodCp = false;
// Function to parse string to date
public Date parseTime(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date parsedDate = null;
try {
if(time != null)
parsedDate = sdf.parse(time.substring(11));
else
parsedDate = sdf.parse("00:00:00");
} catch (Exception e) {
System.out.println("Error parsing:"+e);
}
return parsedDate;
}
}
有没有办法在指导决策表中使用我在这里的用户定义/内置java函数?
答案 0 :(得分:0)
有没有办法在指导决策表中使用我在这里的用户定义/内置java函数?
是的,在所有规则中。关键是让代码可以使用。
KIE WorkBench和KIE Execution Server都使用Maven构建工具进行依赖关系管理;因此,答案是使用Maven配置和使用。 [0]
基本上,将补充代码构建到jar并将其部署到KWB和KES可用的远程Maven存储库。如何构建,打包和部署jar到远程仓库是您的选择;通常使用Maven或Gradle。这是在KWB外部完成的。
然后,编辑KWB项目的pom.xml文件,添加jar依赖项。 KWB“项目编辑器”具有添加依赖项的功能,或者您可以手动添加它[1]。
KWB项目编辑器没有用于添加部分的UI功能,因此更改为cog设置图标上的“存储库视图”并直接编辑pom.xml文件[2]。此外,如果使用带有凭据的远程Maven存储库,请根据Maven插件页面配置settings.xml以供KWB访问。
现在,jar的内容可用于规则,与任何Drools代码一样。
[0] http://maven.apache.org/guides/index.html
[2] http://maven.apache.org/plugins/maven-deploy-plugin/usage.html