【分享】一個通用強大的主數據管理系統(架構設計講解及源碼下載)


轉自:http://www.cnblogs.com/kudy/archive/2011/11/07/2237802.html

這篇文章要講主數據管理系統(Master Data Management System),是本人創業的其中一個項目,用於管理公司的內部所有系統、系統用戶、系統角色、系統權限、服務器管理、系統日志等數據。項目開發只用了1個多月時間,全部由一個人完成的,目前只是個初版本,只滿足了初期的需求,如果沒時間看下面的架構設計,可以直接下載源碼。

 

點擊下載源碼

 

在線demo:  http://mdms.kudystudio.com/

用戶/密碼:test1/test1     test2/test2     (注:同一用戶在另一瀏覽器登錄,另一用戶在session失效后會被逼下線)

 

不少朋友下載源碼后不怎么知道運行,請看這里補充的說明:

項目使用vs2010打開,數據使用sql server2005/2008


一、數據庫創建與初始化數據

新建名為 Db_MDMS 的數據庫

然后按順序執行目錄 Documents\MDMS.Documents\DB 1.0\Scripts 里的sql

1_tables.sql
2_functions.sql
3_stored-procedures.sql
4_init_data.sql


二、修改數據庫連接信息
在目錄 build\MSH 里修改 MSH.exe.config 的配置節點 MDMS.Db_ConnectionString 的值

三、
在vs2010中運行Web項目 MDMS.Web 或右鍵選擇 default.aspx 頁面點擊在瀏覽器中瀏覽,然后打開目錄 build\MSH ,雙擊MSH.exe運行之


這時,你可以用默認用戶/密碼 admin/admin888 登錄系統了

 

  主數據管理問題存在的根源
  對於大多數的企業都存在主數據管理的問題,個人以為這是由於業務發展的漸進性以及IT技術發展的漸進性造成的,正是由於這種漸進性,各大企業的業務系統從經歷了從無到有,從簡單到復雜,從而形成了一個又一個的業務豎井。從根本上來說,不可能只使用一個業務系統就能覆蓋企業的所有業務,即便對一些國際大型的公司提供的套件來說也是一個不可能完成的任務(即便對套件來說,經常也存在一個跨國企業在不同的國家或地區部署多個實例的現象,也就是沒有集中部署該套件,而是在很多地方分散部署了該套件)。對企業來說,業務系統的構建更多是以項目為中心,從下而上的構建系統,而不是至上而下的構建系統——這必然缺乏整個企業范圍內的統一規划,從而使得一些需要在各個業務中共享的數據(主數據)被分散到了各個業務系統進行分別管理。由於分散管理的主數據不具備一致性、准確性、完整性,使得各個企業普遍存在着產品管理不力、供應商管理不力、訂單管理不力等現象。解決這一問題的根本方法就是引入主數據管理(MDM),主數據不光指需要共享的數據,更包含需要共享的業務規則和策略。

一、主要功能需求

  1.公司內部系統的管理,包括管理系統信息、系統權限定義、系統角色、系統角色擁有的權限等等。

  2.統一的用戶管理,包括管理用戶信息、登錄系統的限制、個人在各個系統的角色、個人在各個系統的永久與臨時權限等等。

  3.各系統的日志記錄與查看。

  4.服務器的管理。(說明一下,這里只是管理服務器的信息,數據是提供給一個專門管理服務器遠程登錄的子系統的)

   ...其它擴展需求(多語言目前不需要,但MTV框架已實現了)

 

二、主要界面展示

1.主界面

 2.用戶列表

3.個人登錄限制

4.個人角色管理

5.個人永久權限

6.個人臨時權限

7.系統列表

 8.系統權限定義列表

 9.添加權限項

 10.系統角色管理

 11.系統角色的權限

12.服務器管理

13.系統日志

 

三、數據表設計

LoginLimit : 用戶在各個系統的登錄限制

LoginState : 用戶在各個系統的登錄情況

OperationLog : 用戶在各個系統的操作日志

PermissionGroup : 系統的權限定義分組

PermissionItem : 系統權限分組里的項

Role : 系統角色信息

Server : 服務器(組)信息

ServerParameter : 服務器參數信息

System : 系統信息

User :用戶信息

UserPermission : 用戶在各個系統的永久權限

UserRoleMapping : 用戶在各個系統的角色關系

UserTempPermission : 用戶在各個系統的臨時權限

詳細設計內容太多,請下載源碼看里面的數據庫設計文檔。

 

三、系統架構說明

 

整個解決方案共20個項目,其中ProviderModules目錄下的13個項目是應用WCF服務向業務層提供數據接口,這么做了為了以后把數據接口和網站開發分開來給團隊獨立管理維護。系統應用了N-tier架構的基本設計模式+WCF服務+MTV框架。其中WCF服務采用了KudySharp里的ModuleFramework,MTV框架也是集成在KudySharp里面的。下面對各個項目作簡單的解說。

 

ModuleFramework相關文章(MTV框架還沒有時間相關的文章):

KudySharp 中的 ModuleFramework(WCF模塊框架) 介紹

 基於KudySharp 中的 ModuleFramework(模塊框架)的ModuleServiceHosting(MSH)模塊服務托管程序介紹與開發實例

 

 

MDMS.Core項目是核心庫,IProvider下是數據操作接口的定義,Models下是數據表實體模型類和其它擴展模型類,Modules下是應用ModuleFramework的相關類。DataProviderFactory用於根據配置產生實現數據接口的實例,而DataProviderManager則是管理這些實例的,下面請看代碼:

(原先設計是把Data、IProvider、Models分別放在獨立項目的,經典多層項目都這么干,但為了減少項目數,本人都放在MDMS.Core項目中了)

DataProviderFactory

 

DataProviderManager

 

 MDMS.SqlServerProvider項目是數據接口sql server實現類庫。里面用了KudySharp里的SqlServerHelper助手類,使數據操作更加簡潔,請看下面的基類和用戶表的數據接口實現類:

ProviderBase

 

UserProvider

.....其它省略....
 

四、子系統怎么與主數據管理系統整合?

 只要繼承 MDMS.UserApiModule 項目里的ServiceContextBase類,就可以很輕松的實現用戶的登錄,退出,添加日志,讀取權限等操作,其中主數據管理系統也作為了其中的一個子系統來管理了,可以參考此系統是怎么整合的,時間問題,不想再多寫解說了。請諒解。

 

 另一文中講解了此系統的權限設計方案:如何給多個子系統設計一個簡單通用的權限管理方案?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM