我想从 DecisionTable 或类似的东西创建一个动态数据结构。
据我所知,只有静态类型的数据结构是可能的,如下所示:
维基代码:
|should I buy milk|
|cash in wallet|credit card|broke?|
|0 |0 |yes |
这些列必须通过 setter 映射到夹具:setCashInWallet(int cash) 和 setCreditcard(int credit)。
我喜欢做的是更灵活的事情,每列都填充到一个列表中:
List<Map<String, Object>> decisionTable = new ArrayList<Map<String, Object>>();
Map<String, Object> row = new HashMap<String, Object>();
在测试的设置中,我指定了目标对象,例如:com.domain.MoneyIHave。在夹具中,我将通过反射将数据结构转换为 this 的实例。
用于向 drools 会话添加事实(数据结构)的 api 是松耦合的。
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
for( Object fact : facts ) { //<----- loose baby!
ksession.insert( fact );
}
ksession.fireAllRules();
ksession.dispose();
如果可能的话,我可以创建几个不受数据结构更改影响的固定装置。这些固定装置几乎可以处理所有情况。
但我找不到任何这样的例子。
Tnx 提前。