系統設計其實很有趣–從商務邏輯談起

來源:互聯網
上載者:User

對於什麼是商務邏輯,每個人都有自己的看法,我就講講我自己的想法,歡迎大家討論。

我想判斷某個部分是不是商務邏輯,一個最簡單的方法就是與另一個完全不同的系統進行比較,如果該問題在另一個系統中不存在了,則它就是這個系統的商務邏輯,否則就不是。

商務邏輯應該是一個系統區別於另一系統的本質所在。

例如,一個現金報銷單的審批程式,不同人員對不同金額的審批許可權明顯就是屬於商務邏輯的範疇,因為請假審批程式則不會有此問題存在。

一張請假單必須註明代理人和代理的事項,便是請假審核程式的商務邏輯。

商務邏輯同時還包括:

請假單必須註明請假人,請假時間,原因,假別等

請假單有四種狀態:草稿,審核中,已核准和已拒審

滿一年才有年假,五年以內七天,十年以內十天

病假一年最多三十天,超過只能作為事假請

只有草稿狀態的請假單才可以刪除

事假超過二十天需要總經理批准

只有人事主管才可以查看所有部門的請假資料

部門主管只可以查看本部門的資料

任何系統使用者只能看到自己的請假單。

請假單核准後,將資料轉入公司的考勤系統

...

像這些業務對象的描述,規則,許可權,流程等等都應該屬於商務邏輯的範疇。

而與之相對的,則是屬於非商務邏輯部分,是所有系統設計時都應該考慮的:

1.如何?資料訪問(以及事務的處理)

2.異常處理

3.日誌和追蹤如何?

4.緩衝策略的設計

5.對象的動態組裝和更新替換

6.以何種UI呈現

7.UI與系統服務如何銜接

8.系統如何分層,各層之間如何銜接

...

上面這些我想是一個系統的基本架構,是系統的底層架構。

 

因此整個系統分為2個問題域

1.商務邏輯:與系統如何?無關,例如是C#還是Java,B/S 還是 WinForm,Oracle還是Sql Server。

2.底層架構:與商務邏輯無關,大多與軟體實現方式相關。

 

使用者大部分時候比較關心商務邏輯,當然他可能要求要Oracle以及web方式實現。如果是這樣,則底層架構的設計會依賴在某一具體平台之上。

 

很多時候,UI也是有商務邏輯的。

如對於不同類別請假單顯示為不同顏色,這其實也屬於商務邏輯的一部分。

if(核准) 

  color = "綠色"

else if(拒審)

  color = "紅色"

else if(審核中)

  color = "藍色"

else

  color = "黑色"

 

因為當哪天需求發生變更,又多了一種狀態(如退回),也要修改此UI程式。

 (PS:這裡講的商務邏輯是與基礎架構相對應的,和園子裡其它朋友劃分UI層,商務邏輯層,資料訪問層的外延不一致)

 

識別出了商務邏輯,那設計時應該如何?這些商務邏輯了。

最傳統的方法就是結構化分析與設計了,即SA(Structure Analysis)和SD了

當然還有現在流行的物件導向分析與設計,即OOA和OOD

其實無論是哪種方式,商務邏輯的實現基本上分為一個靜態表示,和動態行為了。

如請假申請

則是要建立一個請假單的實體(或對象),在建立過程中,可能通過程式控制其商務規則的實現,如必須填寫請假開始和結束日期。

建立的這個請假單,原則上是永遠存在於這個系統了(當然是在沒刪除的情況下),然後只要你看到一個這樣的對象或一筆這樣的資料,你就能通過這個對象知道當初某某某寫了這樣的一張請假單,這就是這個請假單實體(或對象)所代表的意義。也即商務邏輯的靜態表示。

與之對應的就是動態行為了,通過系統的運行(經常是人與系統的互動),這類邏輯得以隱含實現,如

系統拒絕了一個訪問者對於他沒有許可權的請假單的查看請求。

系統將一張事假超過了20天的請假單送給了總經理審核。

系統授予了總經理在登入之後審核特殊請假單許可權的許可。

 

對於這些邏輯的實現,系統一般不會留下痕迹,但它確實做了這部分工作。

  

無論是區分底層架構還是識別各種各樣的商務邏輯,一個終級目的--就是為了重用。

只有重用才讓我們的工作變得有意義起來。

 

將商務邏輯中關於許可權的需求提取出來,提供一個可重用的許可權解決方案。

將商務邏輯中的流程部分提取出來,提供一個通用的工作流程方案。

將商務邏輯中對於資料的驗證提取出來,提供一個通用的驗證方案。

將商務邏輯對於多國語言的要求提取出來,提供一個通用的多語言解決方案。

將商務邏輯對於UI的相同或相似要求提取出來,提供一個通用的UI解決方案。

等等。。。

 

從底層架構到通用的商務邏輯解決方案,這些工作做得越多,具體系統開發時就會做得越少,這其中如何把握平衡,則是系統架構者的能力體現了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.