2017-07-06 46 views
2

我试图编写一个规则来基于条件计算保险产品的价格。在'何时'我使用的是名为AdditionalDriver的对象,其中包含除保单持有人以外的其他驱动程序的详细信息。由此看来,不同的价格可以根据额外的驱动程序是否是父母,朋友,爱人等见下文计算:Drools - 运行一个空物体的规则

when 
    AdditionalDriver($relToProp : relationToProposer) 
then 
    String relToProp = $relToProp; 

    if(!relToProp.equals("P")) 
    { 
     //prices 
    } 
end 

“P” =父。

此规则在添加了附加驱动程序时起作用。但是,如果没有其他驱动程序,则该对象为空,因此该规则不会运行。即使对象为空,我还需要做些什么才能运行此规则?

在此先感谢。

+0

什么是“空物体”?存在一个对象,其中的字段由其类代码,构造函数和初始化定义,或者它不存在。 – laune

+0

感谢您的问题。我想我的意思是它不存在。有些政策会有额外的驱动因素,有些则不会,问题发生在后者,因为规则不会触发。 – ASnape

回答

0

你应该写一个规则,每个亲戚或熟人类:被请求

when 
    PolicyHolder($phid: id) 
    AdditionalDriver(relationToProposer == "P", belongsTo == $phid) 
then 
    //prices 
end 

无需任何额外的驱动程序,编写规则

when 
    PolicyHolder($phid: id) 
    not AdditionalDriver(belongsTo == $phid) 
then 
    // cheaper prices 
end 

不要在使用条件语句您进一步区分事实的后果。这是一种代码味道。