drools drl验证是为Object而不是pojo实例完成的

时间:2017-08-18 18:44:29

标签: java drools

在大多数drools示例中,我看到Pojo实例作为事实传递给drools环境,可以流口水环境采取对象而不是pojo ??

根据评论添加更多信息:

Object object= new ObjectMapper().readValue(json,
 Class.forName("com.EnrichmentService.EsRootDoc"));

可以将上面的Object实例(对象)提供给drl,并将其自己的downcast对象实例上的droolmentService.Thread72.EsRootDoc实例,因为它需要调用getter方法,我相信只能在EsRootDoc(在运行时创建的pojo类)而不是Object实例。

1 个答案:

答案 0 :(得分:2)

是的,绝对的。 Drools检查所提供事实的实际类和接口层次结构。

例如,如果有规则:

rule X
when
    Person()
then
    ...

以下两个代码段会提供相同的结果:

Person p = new Person();
ksession.insert(p);
ksession.fireAllRules();
Object p = new Person(); 
ksession.insert(p);
ksession.fireAllRules();