为 Drools Decision table 中的条件创建别名

Create alias for conditions in Drools Decision table

附件是我的决定 table,其中我在我的情况下多次使用 sv2.SV202_CompMedProcedId.get("SV202-02") .

有什么方法可以为 sv2.SV202_CompMedProcedId.get("SV202-02") 创建一个别名(例如,S ) 并在我的情况下使用该别名而不是每次都使用整行?

条件
sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '70010' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '76499' || sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '76506' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '76999' || sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '77001' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '77032' || sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '77051' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '77059' || sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '77071' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '77084' || sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '77261' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '77999' || sv2.SV202_CompMedProcedId.get(""SV202-02"").Value >= '78000' && sv2.SV202_CompMedProcedId.get(""SV202-02"").Value <= '79999'

其中 sv2 是对象,SV2 是 class

如果这种情况足够频繁,您可以编写并导入静态 Java (!) 函数:

public boolean isInRanges( Comparable value, Comparable... bounds ){
    for( int i = 0; i < bounds.length; i += 2 ){
        if( bounds[i].compareTo(value) <= 0 &&
            value.compareTo(bounds[i+1]) <= 0 ) return true; 
    }
    return false;
}

简单的调用是显而易见的。

您不能使用 DRL 函数:AFAIK,可变参数表示法未实现(但请检查)。

是的,您可以使用别名。将您的条件更改为:

$s : sv2.SV202_CompMedProcedId.get("SV202-02").Value >= '70010' && $s <= '76499' || $s >= '76506' && $s <= '76999' || $s >= '77001' && $s <= '77032' || $s >= '77051' && $s <= '77059' || $s >= '77071' && $s <= '77084' || $s >= '77261' && $s <= '77999' || $s >= '78000' && $s <= '79999'