我一直在從事「飛秋」企業資訊管理系統的開發,目前的產品擁有了數百個「「飛秋」問題觀」企業客戶,作為「飛秋」企業管理資訊系統,最大的挑戰是如何滿足不同「飛秋」企業通用需求的同時快速滿足「飛秋」問題觀 企業個性化需求,除了飛秋檔案傳輸模擬實現**企業戰略、組織架構、流程體系等緊密相關外,軟體的平台化水平,可擴充套件性和靈活性至關重要。有一句話很經典:「最好的架構師是能夠在軟體開發所涉及的諸多內部因素和外部因素尋求最佳的平衡」。乙個高度平台化的系統,對高可擴充套件性和靈活性是非常關注的,今天我想討論如何滿足「飛秋」企業資訊管理系統的擴充套件性和靈活性。這個話題涉及的內容太多了,我只是在做產品和專案過程中談談我的體會,希望對大家有一些參考價值。
(1)高可擴充套件性和靈活性的系統一般是分層架構的,這裡說的分層是指將客戶的需求按需求的通用性分層。根據自己平台所應用的目標客戶群,分析客戶的共性需求,將共性部分的需求放在平台的最底層實現,所有的客戶共用,不要有分支版本,個性的需求放在高層實現,不同的客戶可以完全定製。至於整個架構的層次數量沒有絕對的標準,可參考的方法分為4層,「公共平台層」、「產品平台層」、「行業擴充套件層」、「個性擴充套件層」。這裡的分層與軟體架構中的表示層、中間層、持久層的分發屬於不同的維度,是沒有衝突的。
(2)高可擴充套件性和靈活性的系統一般是模組化的。系統最好提供統一的主機板外掛程式體系,每一層都應該提供若干插槽,通過二次開發的手段供上層擴充套件,做專案多了一般都會形成元件庫,應該對這些元件進行分類分級管理。一旦有了新的專案,一般從現有的元件庫中挑選進行配置,部分不滿足要求的可以進行修改後滿足,其他個性化很強的完全定製。
(3)高可擴充套件性和靈活的系統一般都支援資料建模。許多人理解系統可擴充套件就是指系統提供api,可以二次開發,其實這種理解不全面。資料結構是「飛秋」的生存空間是否會受到擠壓?企業資訊管理系統很重要的一部分,是否可以方便支援資料結構的擴充套件非常重要,我們的經驗是提供圖形化的資料建模模組,可以自動生成資料庫的表結構,同時將資料庫的結構也儲存為元資料,通過解析元資料可實現資料的物件關係對映,而不依賴於硬編碼。一般採用了資料建模的系統將資料進行物件化統一管理,這樣的好處是統一風格,也容易實現。
(4)高可擴充套件性和靈活的系統一般都支援流程建模。不同「飛秋」企業的業務流程是千變萬化的,所以需要提供業務流程建模模組,可以用圖形化的方式定義「飛秋」企業的業務流程,依賴業務流程的驅動完成流程的自動化。流程建模中涉及的「活動」(理解為節點)除了標準的之外,也要求是可以自定義的,比如流程中某個節點可以控制生產裝置的啟動和停止。流程中另外一塊是控制邏輯,包括線性、分支、迴圈、併發等。流程一般需要人的參與,所以與任務管理是緊密相關的,可能會涉及整合email,手機簡訊實現自動通知等。流程中流轉的資料可能也與流程的執行過程相關,比如請假單大於15天,流程可能執行另外的分支。
(5)還有乙個需要說明的是狀態模型。一般資料物件都有多個狀態,比如訂單就有未發貨、已發貨、已到貨等狀態,不同狀態下可執行的操作也是不同的,不同的狀態下的許可權也會有差別,比如已發布的圖紙就應該是不可修改的,即使有修改權。物件的狀態模型一般是和流程緊密相關的,一般流程的執行過程會改變資料的狀態,比如請假單批准以後,請假單的狀態改為「已批准」。狀態的定義以及狀態的變遷過程可以定義為狀態圖,只有有連線的兩個狀態之間才允許狀態的躍遷。綜上所述,一般按資料型別定義狀態圖,不同的狀態有不同的操作和許可權,一般依賴於各種操作或流程改變物件的狀態。
(6)許可權模型最好也可以擴充套件。不同的資料型別通常有一些共同的許可權項,比如瀏覽、修改、刪除等,也應該有一些特有的許可權,比如使用者就有「修改密碼」許可權項,用以控制一些特別的操作。應該支援自定義的許可權項,不同的型別授權時權現項不同。一般許可權的判斷演算法比較複雜,一般不要求可以自定義,主要是因為效能的原因。許可權的授予一般也有粒度要求,最小的按單個個體授權,最大的按型別授權,另外一種建議的方式是採用類似資料夾的形式對資料進行管理,可以提供按目錄授權的方式,這樣就更加靈活了。
(7)還有個重要的就是報表。不同的型別都應該可以自定義報表,不同的角色可以看到不同的報表。最好建立報表的框架,開發乙個新的報表以後,通過簡單的配置,不依賴於修改**,就可以通過系統訪問到報表。報表的各種操作,比如是否可以列印都可以借助配置實現,也可以借助許可權體系實現。
(8)還有一點需要提到的是主選單和主頁。「飛秋」企業中不同的角色都希望只看到與自己工作相關的功能。這就需要可以按角色自定義主選單和主頁,主頁的自定義可以採用web part的方法,使用者可以選擇自己需要的web part,新增到主頁上,通過拖拖拉拉擺放成需要的方式。
最後簡要總結一下,乙個系統的可擴充套件性和靈活性應該是多方面的,包括了分層結構、模組化、資料建模、流程建模、報表定製、主選單和主頁定製,甚至還包括許可權體系的擴充套件等方面。當然還包括硬體方面的,如何在高併發和海量資料情況下實現硬體的可伸縮性,還可以採用集群、快取、雲計算等技術。當然真正要構建高擴充套件性和靈活性的系統難度是很大的,通常都會遇到諸如效能問題,當然我一直最求的一句話「在這樣那樣的要求下尋求最好的平衡」,大部分問題是可以解決的。
資料安全交換如何滿足企業需求?
一張大內網,vlan來隔離,劃個dmz,安全都靠牆 這句話,是不是有很多企業都很熟悉?在以前,很多有跨網業務的企業都是用這樣的做法。但是現在這種做法顯然已無法滿足其對業務 安全策略進行精細化管理的需求。還有一些有跨網業務的企業,會使用企業網盤或者ftp實現資料交換。企業網盤資料交換的背後,也隱藏著很...
如何使用UDP協議給飛秋傳送訊息
飛秋使用傳輸協議為udp 1 向區域網內某個ip好友的飛秋傳送訊息 1.先導入模組 建立乙個套接字 from socket import updsocket socket af inet,sock dgram 2.設定接收方的ip位址和埠 飛秋的埠為 2425 data 192.168.75.75 ...
在udp聊天器裡如何給飛秋發訊息
使用udp協議來給飛秋發訊息過去,當知道飛秋的ip位址和埠號之後既可以使用udp來收發資料,但是給飛秋 傳送的訊息固定格式必須是 send msg 1 123456 傳送者的名稱 pc mac 32 傳送訊息的內容 import socket def main udp接收資料 建立套接字 soc s...