2017-07-06 45 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 

不要在使用條件語句您進一步區分事實的後果。這是一種代碼味道。