商務規則管理(Business Rules Management,簡稱BRM)
在一個企業實體中同樣存在著各種各樣的規則,像管理制度、業務手冊、工藝流程、操作規範、收費標準、促銷策略等都是規則,甚至一些沒有形成文字的慣例,也是企業規則的一部分。因為是與業務相關,所以又稱它們為商務規則。
商務規則分散在企業的各個角落,就算企業的決策者也很難說清楚自己的企業內部到底有多少商務規則在使用。
大部分的商務規則存在於業務人員的大腦中,或是為數不多的工作手冊、操作規範等非結構化的文檔上。作為描述企業最重要特徵的商務邏輯沒有被有效地管理和使用,導致好的經驗無法積累,差的經驗無法總結。即使企業使用了電腦系統,業務處理邏輯也總是被看成一個個過程寫進了程式碼中,當某些需求和商務規則發生變化時,必須修改原有代碼,修改和維護的成本都相當高。
商務規則管理(Business Rules Management,簡稱BRM)技術的出現徹底改變了以過程形式處理商務邏輯的方式,它將商務規則的實現從具體的程式碼中抽取出來,以結構化的商務規則資料來表示企業的業務行為,使得商務規則與企業的資料資訊一樣成為企業的重要資產。與此同時,軟體開發的習慣也開始因BRM 而改變。商務規則像資料一樣獨立於程式之外,業務人員可以使用行業術語而不是專業程式設計語言來編寫規則,從而使企業的業務系統真正面向業務人員。
資料庫把程式與程式所處理的資料進行了分離,它的出現使得資料不依賴於程式而獨立存在,軟體系統的升級無需對資料庫系統進行改動,併產生了關係資料模型、資料庫操作語言、資料庫查詢語言等新概念,以及資料庫系統分析員、資料庫開發人員、資料庫系統管理員等新角色。
與資料庫的出現相對應,把商務邏輯從程式碼中分離出來也將對軟體的開發方式、軟體的體繫結構甚至軟體開發的組織圖都產生深遠的影響。
商務規則管理將商務邏輯當做結構化的對象進行處理,使複雜的商務邏輯變成一條條簡單的商務規則,而將商務規則之間的複雜邏輯關係交給規則引擎去處理,因此產生了商務規則引擎、商務規則庫、商務規則開發方法學、商務規則管理系統等新概念,以及商務規則系統分析員、商務規則開發人員商務規則系統管理員等新角色。
商務規則管理系統的引入,使應用系統結構及其維護方式發生了巨大的改變:基於商務規則方法將大大縮短系統的開發時間;更加適應系統商務邏輯的變化;開發人員可以直接使用商務規則的技術而無需瞭解過多的實現細節;大大減少了編程的工作量,減少了編程錯誤,使開發人員更加關注系統本身的業務需求;基於商務規則的開發方法還模糊了系統需求分析、設計和編程的界限;商務規則庫介於使用者介面和資料庫之間,系統具有更好的靈活性;基於商務規則的系統開發比定製開發更能節省費用,同時能滿足使用者的個人化需求。
不少軟體開發商已經開始利用商務規則管理技術來開發商用軟體,它們不僅能夠為使用者搭建規則庫,讓使用者隨意添加自己的商務規則,而且會在一些針對行業的應用中,將自己的行業經驗以商務規則的形式加進去,為使用者提供最佳實務經驗。
分層和複用是當今軟體開發的兩大技術方向。分層技術解決了系統的複雜性問題,降低了系統內的耦合性;複用技術解決了開發的效率和可靠性。商務規則管理技術恰恰與這兩大技術的特點相吻合,綜合體現了分層和複用所帶來的好處,並且很好地融合了資料庫技術和物件導向技術的優勢。
商務規則最基本的組成成份是用於表示它的語言,業務術語是人們用於定義事物的工具,例如術語表。一個組織的本質和運行結構可以用相關的術語來描述,如“客戶下一個訂單”。類似“資料不可以更新”這樣的規則則能夠限定和控制企業的某些行為。此外,利用商務規則可以從一種知識推匯出另一種知識。
商務規則的屬性包括名稱、狀態(被提議的、有效、被核準的、存檔的)、有效日期和終止日期、商務規則描述、運算式、觸發事件等。其主要形式有決策表、決策樹、規則語言和指令碼。
● 決策表: 以表格的形式表示商務規則,每一行表示一條規則,列表示條件或動作,當所有條件滿足時,執行動作。
● 決策樹:將一組商務規則以樹型結構來表示,每一個分支表示一條決策路徑,葉子節點表示結果或動作。
● 規則語言:使用類似自然語言的句法描述規則。目前有很多種規則語言,每種語言適合解決其特定領域的問題,可以提供較好的效能,但比圖形化的表示難於維護。
● 指令碼(模板):用於描述過程性的商務邏輯,是決策表、決策樹、規則語言的基礎。如:
IF...THEN ...ELSE...。
商務規則的應用特性如下:
● 商務規則的非“固化性”
固化在程式碼中的策略和規則必然是僵硬的。客戶的多態性和市場的多變性決定了商務規則和策略的變化必然
很頻繁,如果規則的每次改變都要求對系統程式進行“傷筋動骨”式的修改,那麼系統的維護和升級必然代價昂貴,
甚至難以維持。
● 商務規則的“邏輯性”
商務規則具有邏輯性,每條約束行為的商務規則至少包含兩個部分:條件部分和執行部分;規則的條件涉及到對
業務資料作用的判定,規則的執行涉及到對業務資料的處理。所以規則不是簡單的業務資料。
● 商務規則的“非過程性”
每條規則只能定義對一種現象的判斷和操作,複雜的商務邏輯應該由多條規則協同處理。規則的“非過程性”帶
來的好處是:每條規則的制定變得非常單純,可以“就事論事”,將複雜的過程處理平攤成一個個有條件的執行單
元,實現了從簡單到複雜的知識積累過程。
● 商務規則的“事件觸發性”
商務規則會根據相應的條件被觸發執行,觸發規則執行的“事件”就是業務資料本身。比如一套信用分析的規則
集合,一旦客戶信用記錄資訊進入系統處理,這組規則將會被啟用,並啟動相應的分析過程。
● 商務規則的“非技術性”
商務規則是屬於業務人員的,業務人員應該使用行業語言而不是專業技術語言(如程式語言、資料庫語言、指令碼
語言等)編寫規則。