2010-12-14 75 views
0

1)它們是否應該在模塊中通過任何一套方法實現? 2)他們是否應該在一個特殊的類中實現,每個方法都測試一個特定的業務規則?業務規則應該在哪裏實施?

另外...你能推薦我關於這個問題的任何好的參考書目嗎?

UPDATE:

「業務規則是一個企業,公司或企業的規則,這是定義或約束業務的某些方面始終解析爲真或假的規則。」 Wikipedia definition.

回答

3

首先,您必須對「業務規則」有什麼清晰的定義。有一批候選人:

  1. 有關您的產品的信息。
  2. 有關銷售的規則取決於時間,地點,客戶,產品,月相(即月份的截止日期),季節等。
  3. 用戶角色(例如,正常客戶或優先客戶等)
  4. 規則周圍應付賬款和應收
  5. GAAP規則

你到底是什麼意思?這是一個模糊的問題,如果你願意,它可能會很大。

  1. 數據驅動的,存儲在數據庫中
  2. 表達式在Rete算法規則引擎:

    他們去哪裏在你的代碼有很多的選擇,因爲到。

  3. 如果您正在編寫面向對象的中間層類。
  4. 屬性或配置文件,如果你正在做聲明性編程。
  5. 用類似JavaScript的東西表達可執行規則。
  6. 在您的ERP,MRP,A/P和A/R系統中。
  7. 面向您的應用程序組合在一起的Web服務。

你是否看到你開放的問題?你的問題意味着你有一個明確的問題,並期待一個簡單,整潔的答案。事實是,這是一個廣泛的話題。

+0

其實你向我展示了知道不同可能性的重要一步......這部分是我期待的! – JPCF 2010-12-15 14:52:00

+0

我現在使用維基百科陳述的定義...也許你可以相應地更新你的答案。 – JPCF 2013-10-24 16:38:35

+0

「商業規則是商業,公司或公司的規則」 - 無非就是一種重言式。看看維基百科的含義。 – duffymo 2013-10-24 18:35:49

1

這是一個相當普通的問題,很難回答 - 但我要說看看Behaviour Driven Development作爲開發的心臟保持業務規則的一種方式。

1

我建議你研究MVC範式 - 模型視圖控制器。視圖中不應該有商業邏輯,它應該都在模型中。

+0

關注焦點回答。我沒有談論視圖層。我只詢問任何必須驗證業務規則的業務組件...... – JPCF 2010-12-14 23:41:09

+0

我不確定它是否「不專心」 - 該範例描述了一個設計,其中任何「業務組件」都將是一個獨立模型,因此很容易測試。 – Arafangion 2010-12-15 00:16:18

+2

在我看來,過分簡單化。不是玩具的系統很少適合所有的邏輯,如此整齊地放在少數物體中。 – duffymo 2010-12-15 15:26:14

1

問題的答案取決於多種因素,如

  • 客戶應修改規則?
  • 規則多久改變一次?
  • 是否應該更新規則而不重新啓動應用程序?

如果答案爲是所有這些正上方,然後規則引擎(Drools的,ILOG等)是你在找什麼來實現你的規則

如果你的答案爲否,則另一種方法是,以模型中的代碼記住下面保持

  • 封裝1業務規則在其自己的類的規則,以便它可以進行獨立測試,定製和更新
  • 名稱開展業務的方式提到它的規則(通用語言)
  • 瞭解指定模式(domain driven design)。我認爲這種表達規則的方式非常直觀和明確

E.g.複製自here

EligibleForDiscountSpecification isEligibleForDiscountRule = new EligibleForDiscountSpecification(); 
isEligibleForDiscountRule .IsSatisfiedBy(customer) 
+1

你認爲什麼時候應該使用規範模式?什麼時候不用它? – JPCF 2010-12-15 15:17:34

1

業務規則最佳做法聲明規則應該是可插入組件。最簡單的方法是將其編碼到專用庫中,然後繼續使用依賴注入或反射...也許您應該對Contracts Driven Development進行調查,然後查看www.businessrulesgroup.org/brmanifesto.htm開始。