流口水比较操作需要兼容类型(从 5.1.1 -> 5.5.0 升级)



我有一些流口水规则在流口水 5.1.1 中运行良好,但在升级到 5.5.0 时中断。下面是一个示例:

when
    Map( $limit: this["FailureLimit"] ) 
    activity: LimitExceededActivity( failureRate > $limit)
then
    ...

我收到此错误:

[Error: Comparison operation requires compatible types. Found float and class java.lang.Object]
[Near : {... failureRate > $limit ....}]

本例中的映射是 HashMap<String,>。我知道Drools不一定知道这一点,因为擦除,但我如何说服它$limit是一个数字?

不是太花哨,但这里有一个解决方案:

when
    $m: Map(this["FailureLimit"] != null) 
    LimitExceededActivity( $f: failureRate)
    $limit: Number(floatValue < $f) from $m["FailureLimit"]
then

根据您的用例,可以删除第一种模式中的"this["FailureLimit"] != null。

此解决方案背后的想法是让"from"模式为您进行转换。

希望对您有所帮助,

事实证明,答案只是在比较中投。

Map( $limit: this["FailureLimit"] ) 
activity: LimitExceededActivity( failureRate > (Float) $limit)

最新更新