当前位置: 首页 > 知识库问答 >
问题:

口水中的其他情况

李经国
2023-03-14

试图在我的项目中实现Drools规则,并且我试图将许多if-else转换为Drools规则,但我不确定如何在Drools中添加else条件。我的场景是这样的:

if(value.equals("java.lang.Integer")) {
   //Put value into pojo
} else if(value.equals("java.lang.Float")) {

} 
// Similar if-else for other data type
else {
  //Do some action (if it doesn't satisfy all other condition)
}

我当前的drl文件内容是这样的:

rule "When Method Parameter is java.lang.Integer"
   when
       object.getValue().eqals("java.lang.Integer")
   then
       #Set value to another pojo
end

rule "When Method Parameter is java.lang.Float"
   when
       object.getValue().eqals("java.lang.Float")
   then
       #Set value to another pojo
end

rule "Rules if all of the above condition fails"
    # is it possible to have rule just like else, if all
    # of above condition fails, this rule should execute
end

现在我想要一个conditon,如果上面所有条件都失败了,就应该执行它。用口水可以做到这一点吗?如果上述所有条件都失败了,那么其他部分应该执行,我尝试搜索,发现当前drools不支持elseconditon。如果是这种情况,如何实现这种类型的场景?谁能请指导我,因为我是初学流口水。

共有1个答案

华和悦
2023-03-14

最接近建模的方法可能是激活组。对于激活组,该组中只有一个规则将被激发。因此,通过创建一个显著性较低的附加规则,它不限制值,如果组中的其他规则都不触发,它就会触发。

您还可以创建一个规则,与其他规则使用的模式的否定相匹配,或者您可以在RHS上使用一个if-then-else规则。你不应该仅仅因为最后一个感觉不“纯洁”就把它排除在外。根据你的情况,这可能是最干净的方法。

 类似资料:
  • 我在XAMPP中安装了一个apache web服务器,其中安装了PHP和OCI8 for Oracle。 我的默认请求端口是1934,但Apache会自动打开其他端口,有时我必须重新启动才能正确运行它。 在错误日志中,唯一显示的是: 服务器软件是Windows 7上的XAMPP 3.2.1。

  • Interfaces and other types 接口与其它类型 接口 Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here. We’ve seen a couple of simple examples al

  • 除上述接口外Chrome应用还有其他各类丰富的接口,在本章将对其他的接口做以介绍。

  • 问题内容: 我已经阅读了很多有关代码重构和避免if else语句的主题。实际上,我有一堂课,我在使用很多if-else条件。 更多详细信息:我正在使用拉式解析器,并且在我的肥皂响应的每一行上,我都会检查是否有我感兴趣的标签,如果没有,请检查其他标签,等等: 现在,我想使用somethimg,而不是其他条件,但是我不知道是什么。 您能给我一个例子还是一个很好的教程页面? 谢谢。 问题答案: 在这种特

  • 问题内容: 我有两个Java swing应用程序(意味着在两个JVM中运行)。有什么办法可以在它们之间切换吗?通过Java代码激活另一个应用程序的窗口? 问题答案: 您可以尝试使用JNA。我将使用Maven为您提供一些适用于Windows的代码(或多或少适用于其他系统):(对不起,但我无法正确设置格式) 创建Maven项目,并添加依赖项:

  • 5.11. 接口和其他类型 5.11.1. 接口 Go中的接口提供了一类对象的抽象。我们在前面已经看到了关于接口的一些例子。 我们可以给新定义的对象实现一个String方法,这样就可以用 Fprintf输出该类型的值。同样,Fprintf可以将 结果输出到任意实现了Write方法的对象。接口一般只包含一类方法, 并且以ed后缀的方式命名,例如io.Writer接口对应Write 方法实现。 一种类