我刚开始写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
属性。