所以,這是一個有點誇大其詞,但我還沒有看到一個業務規則引擎很好地工作在生產環境中。唯一一次我看到它們工作正常的時候,他們被視爲完全像他們正在替換的代碼庫。
他們需要遵循一個SDLC,通過需求收集,開發(與工程師),質量保證,並最終推廣到生產。
規則引擎通常作爲繞過開發,測試和源代碼管理成本的方式出售給商業人士。這些系統通常很快就會崩潰。規則是編程邏輯,它們從某個數據庫加載而不是從文件系統加載的事實不會改變任何內容。作爲編程邏輯,最適合開發他們的人是......程序員。
當商務人士嘗試寫這些東西時,他們傾向於在系統不能阻止流程陷入邏輯漏洞時相當快地感到沮喪。程序員習慣於思考的東西。
這確實只是一個保真問題。您正在交易高保真編程語言(java,c,python),以實現低保真語言。你不是神奇地使決策點的數量變小。你只是用一種必然更加約束的語言來表達它們。當你用低保真語言來表達你的更復雜的問題時,你最終會創造一個怪物。數百或數千條規則串聯在一起。只有一兩個人能夠理解它,它很快就會成爲組織的巨大責任。
也許你的公司是不同的,但我已經看到這種情況發生了幾次,通常唯一的出路就是報廢和重建。我見過業務工作流引擎工作得很好。以相當高級的方式協調低層邏輯塊的事情。但是將所有真正的決策留給較低級別的機器。這些也是,需要保持在他們的位置,並有可行的推廣,卡瓦爾等。
如果我能投這個答案了10倍,我會。我唯一想改變的將是第一句話,「但我還沒有看到商業規則引擎在生產環境中工作。「 – dbugger
我不能同意更多,如果你需要BRE,請讓程序員(理解REET和規則衝突)編寫規則,並且明白你需要像核心代碼一樣單元測試規則另外,根據經驗,無論您的規則是從哪裏加載的,請確保它們受版本控制。 – EverPresent