2009-08-22 119 views
4

如何從業務流程中外化業務規則,以便我可以添加規則而不觸及業務流程邏輯?將業務規則與業務流程分離

例如,我有兩個業務流程,說「添加產品」和「更新產品」,也有一些共同的規則,這些2個進程共享,規則可以讓以後獲取添加。我打算編寫一次業務流程,該流程執行特定流程的所有可用規則,如果未拋出異常,則繼續成功完成業務流程。

我不打算使用規則引擎,因爲我認爲這對我的架構可能太重了。

感謝和問候,
阿賈伊

+0

規則引擎有什麼問題? – 2009-08-22 07:57:41

+1

這個問題是有效的,但是,把-1的人,你可以顯示你的臉,並寫下評論這個問題最近怎麼了?我給有效問題+1。 – 2009-08-22 08:07:34

+0

我的應用程序域不需要具有取決於上下文等多個參數的非常複雜的規則。所以我覺得規則引擎會在架構上變得臃腫。 – Ajay 2009-08-22 09:54:13

回答

1

回答這個問題是比較複雜的,比我可以寫在這裏。這涉及到您的企業/行業的數據關係,安全性,政策原則和行政限制的科學。

我可能誤解了你的問題,如果你的意思是不是「業務規則」和「經營策略」少模糊的東西。

0

問題相當廣泛,所以我會根據一般模式來回答。

我在很多情況下所做的是定義過程,使得一個在插入的過程中適當階段的各種「守門員」的活動。每個守門員都負責執行業務規則的特定子集。舉例來說,一個這樣的活動可能會強化數據質量。另一個可能會根據業務規則做出路由決策。另一個定價。等等。

實際規則本身在工作流的外部保存,並且可以獨立於其進行修改。訣竅是限制規則評估的「過程後果」,以便人們可以繼續擁有可預測(可測試)的過程。

1

您可以用許多技術將流程中的規則分開。在某種程度的abstarction中,您正在從業務流程的各個角度調用「方法」。這個問題就成爲可以在不改變業務流程本身的情況下修改該方法的機制之一。

可以將方法打包到自己的庫(dll,jar或其他)中,並用新版本替換該jar。更改庫,更改業務規則。

可以根據從數據庫中獲得的可配置參數表示方法中的邏輯。更改數據庫,更改業務規則。

如果複雜度上升得足夠多,您會發現您已經實現了自己的規則引擎。

在某些時候,使用現有的規則引擎而不是重新發明這個輪子會變得更有效率。

欲瞭解更詳細的建議,你需要告訴我們更多關於你在做什麼。