Drools 5.5.0实例化两种不同的对象类型

时间:2016-06-01 10:03:32

标签: java datatable drools

我有两个POJO课程(合同和帐户)。使用如下图所示的DecisionTable,我想实例化一个Account对象,并根据一些契约条件设置不同的属性。 Drools Decision Table Example

我不明白为什么没有调用Account()构造函数,而是触发了Contract()构造函数。 我尝试使用printlns(在Account和Contract构造函数中)进行调试,如下所示:

public Account() {
    super();
    System.out.println("Account created @ " + new Date());
}

public Contract() {
    super();
    System.out.println("Contract created @" + new Date());
}

唯一的输出是:

[6/1/16 12:39:51:501 FET] 000002a2 SystemOut     O Contract created @Wed Jun 01 12:39:51 FET 2016

我无法找到实例化*$account *对象的解决方案(我不需要条件)。我还尝试使用VARIABLES Account $帐户声明变量,但在尝试调用 setBankAccount($param) 时会抛出 NullPointerException

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

编写测试事实属性的规则不会调用与模式中指定的事实类型匹配的任何Java类的构造函数。您应该在某些Java代码中创建Account和Contract对象,插入它们然后调用fire所有规则。给定匹配约束,规则将触发。