我剛開始寫Drools的規則,以及與此想出了:這個流口水的規則可以寫得更簡單嗎?
rule "Premium to high."
when
PricingResponse($netPremium : this.getTotalNetPremium(),
$paymentTerm : this.getPaymentTerm().getMonths());
$newPremium : BigDecimal() from $netPremium.multiply($paymentTerm);
$currentPremium : BigDecimal();
BigDecimal($newPremium.divide($currentPremium, MathContext.DECIMAL128) > 1.2B);
then
insert(new Validation("New premium " + $newPremium + " (" + $netPremium +
" * " + $paymentTerm + ") " +
" is larger than 120% of the current premium " +
$currentPremium, Department.K_EN_A));
end
Drools的排除上述工作。然而,LHS對於我正在解決的問題似乎有點複雜,所以我的問題是它可以寫得更簡單嗎?如果是這樣,怎麼樣?
將PricingResponse
和BigDecimal
對象插入到KieSession
中。在規則被解僱後,所有Validation
對象被檢索。我認爲是一個非常標準的規則問題。在PricingResponse
對象中有一個BigDecimal totalNetPremium
屬性和一個'PaymentTerm paymentTerm'屬性。我想驗證paymentTerm和totalNetPremium的乘積是否大於原始保費的120%,插入爲BigDecimal
。 PaymentTerm
類是enum
,它具有BigDecimal month
屬性。