2013-04-24 152 views
3

的管理費用我看了幾個帖子在用例使用規則引擎的討論。其中許多人說你不應該將它用於工作流程管理。爲什麼不使用規則引擎?或規則引擎

帖子我提到:

  1. Pros and Cons of Rule Engine
  2. When you should not use the Rule Engine
  3. Guidelines on using Rule Engine

但我現在還沒有什麼所有費用的任何簡單的解釋並不規則引擎添加到系統時,用過的?

如果我使用它的工作流程管理是什麼?它會成爲內存開銷嗎?

有人可以把一些重點呢?

我也會把中,我們將使用規則引擎的情景:

我們有它的輸入頻繁變化的業務分析師預測的基礎上,投標引擎。因此,簡單地說,我們將採取行動對付根據規則提供的一些價值。例如:如果業務分析師將價值設置爲2美元,則Rule引擎將決定發送給客戶的出價值。

+0

第二個鏈接緊密匹配您的「爲什麼不使用」的問題。顯而易見的答案是:如果對某些情況不利,請不要使用,因爲您會拍攝腳。請更正您的問題標題以匹配您似乎關注的「開銷」,也許它會停止「不具有建設性」的投票。但是,即便如此,「whatifs」也會鼓勵辯論.. – quetzalcoatl 2013-04-24 12:18:29

+0

@quetzalcoatl我認爲增加「管理費用」是有道理的。 – Sam 2013-04-24 12:22:59

回答

1

因爲沒有標準的規則引擎,並同時實施和執行的後果很可能取決於語言和平臺,你正在使用的是充滿變數,這是不可能直接回答你的問題。不過,我會盡力爲你投下一盞燈。

規則引擎的作用是提供一種方法來實現代碼中的一組條件,或者更重要的是,允許條件在代碼之外設置並由其解釋,以便其他利益相關者可以更改根據需要制定規則。

你需要看看你試圖解決的確切問題,你試圖解決它的平臺,然後決定在這個特定的情況下,規則引擎是否是最好的解決方案。相關問題在這方面提供了一些很好的指導。請記住,如果您有可以通過這種方式解決的問題,或者可以通過其他方式解決問題,那麼每個解決方案都會產生一些開銷,其中一些可能會影響性能,另一些則會影響開發時間或可維護性。您需要決定什麼對您的用戶而言對您的系統很重要,並允許您指導您尋找解決方案。

+0

我們使用Java作爲編程語言。我們確實有使用它的有效案例。你的回答並不回答我的問題。 – Sam 2013-04-24 12:28:09

+0

@Sam:請告訴我,我想我應該使用java.lang.String類。它會增加我的商業智能系統的開銷嗎?我希望你明白。每一個工具**在你開始使用它的時候都會增加開銷。即使是純String,即使是Java,如果使用不當,也會導致應用程序無法使用。使用更復雜的工具更容易濫用它們。這一切都不取決於工具本身,而是取決於你最終使用它的方式。你詢問有關開銷,但你不知道你想如何使用它。這是我認爲你的問題仍然太模糊。 – quetzalcoatl 2013-04-24 12:32:13

+1

那麼爲什麼不在問題中加入呢?您提供的細節越多,獲得的細節就越多。我的回答儘可能與您提供的信息一致。如果您提出模糊的問題,您應該期望模糊的答案。 – glenatron 2013-04-24 12:37:23

3

簡而言之:規則引擎來做出決定;工作流程用於運行流程。

您需要一個rues引擎來替換編譯代碼中的部分或全部「IF」和「ELSE」,並使用「軟」邏輯來更改,而無需更改/重新編譯主代碼。你提供了一條規矩和(所謂的「事實對象」或「源對象」)數據和引擎計算,對這一規則的數據。這是規則引擎的唯一目的。大多數引擎可以將規則評估的輸出返回爲True或False,或者調用「action」(代碼中的方法)來進一步處理數據。

您使用工作流程來運行工廠,或wharehouse或軍事設施。工作流程允許您停止傳送帶並等待事件發生,或者如果老闆簽名,則可以繼續審批流程。等等。通常情況下,工作流在內部使用規則引擎作爲其核心的一部分來決定接下來要做什麼。

希望這澄清了事情有點:)

+0

你沒有完全回答「使用或不使用規則引擎」的問題:) :) – MTG 2013-04-24 14:21:20

+1

@MTG是的,我的錯。我想說如果你知道你需要一個規則引擎而不是一個工作流程,那麼是否使用引擎的決定取決於你的業務邏輯的複雜程度以及它被改變的頻率。我不會因爲一些開關語句或幾個IF可能每年改變一次而處理新技術的額外開銷。對於更嚴重的事情,我會考慮一個規則引擎。如果商業人士想要自己管理規則,還需要考慮另一點。一些引擎帶有優秀的用戶界面,可以做到這一點。 – Kizz 2013-04-24 14:50:06

0

在充分披露的利益,我爲InRule技術,這是一個業務規則管理系統供應商合作。

在其中一篇鏈接文章中提到了一個觀點,即當您使用任何第三方解決方案時,當然會有開銷。規則引擎也不例外。然而,關鍵是通過仔細規劃和建模(1)將傳遞到規則引擎的對象和數據以及(2)規則本身的複雜性來最大化規則引擎執行的效率。

但是,如果您在代碼而不是規則引擎中執行此操作,開銷並沒有什麼不同。在低端,對象/數據和規則的複雜程度適中,我們將這些分類爲短期決策,並且如預期的那樣,開銷最小。隨着數據和/或這些規則的複雜性增加,執行時間將增加。然而,就性能而言,我們所看到的指標沒有引起任何注意。