我們將要爲客戶實施使用Drools的規則引擎,其中一個要求是能夠說規則與特定的法律要求相關聯。是否可以將自定義屬性添加到流口水規則?
例如,法律規定,駕駛執照只能頒發給某人18歲以上,所以我們有:
rule "Driving Licence: Age >= 18"
when
$applicant: Applicant(age < 18)
$application: Application()
then
$application.setValid(false);
end
或個稅的總計算
rule "Tax: Top bracket"
when
$return: Return(income > 44000)
then
$application.setTopBracket(true);
end
或類似的。
一個解決方案是在名稱的法律要求:
rule "Driving Licence: Age >= 18: Section 103 RTA 1988"
的問題是:這將是實現這一目標的最佳途徑?名字是唯一的方法嗎?有沒有辦法將自定義屬性添加到規則?如果是這樣,它可以是強制性的嗎?我也可以使用評論,但我寧願避免這種情況。
如果在規則軌跡中我們也可以看到這些屬性的軌跡,那將會很好,但這並不重要。
請注意,我不想改變規則邏輯,我只想說'這個規則來自這個規律'。規則的決定並不重要。我不希望更改setValid setter。
在閱讀您的評論後,我有兩個問題:您想在哪裏使用/查看此信息以及以何種格式存儲您的規則(DRL | XML | excel文件| Guvnor)? – pgras 2011-04-08 13:32:25
正如我在這個問題中所說的,我希望在編輯規則時看到這一點。在追蹤中也會很好,但並不重要。對於格式,目前沒有定義的格式,系統仍在定義中。 – 2011-04-08 13:38:50