Drools-提取嵌入到地图中的地图 [英] Drools - extract Map embedded inside a Map

查看:14
本文介绍了Drools-提取嵌入到地图中的地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我的数据结构:

public class Premium{

    private Map<String,Map<String,String>> valuesMap = new HashMap<String,Map<String,String>>();
    
    public Map<String, Map<String, String>> getValuesMap() {
       return valuesMap;
    }
}

将出现在此‘valuesMap’中的示例值:

Map<String,String> m1= new HashMap<String,String>();
m1.put("death","100");
m1.put("income","50");

valuesMap.put("Male",m1);
valuesMap.put("Female",m2);
....
因此,我正在苦苦思索的是,如何为";man";提取‘ValuesMap’中嵌入的映射‘m1’? 一旦我能做到这一点,我就可以考虑从‘m1’中提取值

以下是我尝试过的方法,但似乎都不起作用...

rule "rule#7 testing me 001 "
when
    // below line extracts 'valuesMap' from Premium object
    $pr:Premium($masterMap:valuesMap) 

    // no error but does not go into 'then' and print SOP
    //$map :Map(this["Male"]);
    //$map :Map(this["Male"] != null);
    
    // error : java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.Boolean
    //$map : Map(this["Male"] ) from $masterMap
    
    // prints Values Map and not the embedded map for both the below attempts
    //$map : Map(this["Male"] != "") from $masterMap
    //$map : Map(this["Male"] != null ) from $masterMap
    
    // tried java way but getting error : Unable to resolve ObjectType '$masterMap.get' : [Rule name='rule#7 testing me 001 ']
    //$map :  $masterMap.get("Male");
    
    // no error but did not fire then condition and print sop 
    //$map :  Map($masterMap.get("Male"));

    // error : Unable to resolve ObjectType '$masterMap.getGet' : [Rule name='rule#7 testing me 001 ']
    //$map :  $masterMap.getGet("Male");

    //error : Unable to resolve ObjectType '$masterMap.get' : [Rule name='rule#7 testing me 001 ']
    //$map :  $masterMap.get("Male")  from $masterMap
then   
    System.out.println("rule#7 map " + $map);
end

推荐答案

$pr: Premium( $masterMap: valuesMap )
Map( $male: this["Male"] ) from $masterMap

您真的应该尝试并避免在规则中使用地图。坦率地说,这种嵌套的地图结构总体上是糟糕的做法。在规则中,地图是非常糟糕的--很多年前(10多年前)它是S.O.P.通过地图成为规则,但后来我们发现它有多糟糕。;)

这篇关于Drools-提取嵌入到地图中的地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆