MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Turbine 介紹

          Posted on 2009-12-29 04:46 leekiang 閱讀(720) 評論(0)  編輯  收藏 所屬分類: struts
          轉自http://davidwang.javaeye.com/blog/83952(此文思路相當清晰,值得一看)

          http://jakarta.apache.org/turbine/

          Turbine是一個提供了完善權限控制的堅實框架(Fulcrum子項目是其基石)。Turbine的個人用戶不多,但不少公司用戶選擇 Turbine作為框架,開發一些嚴肅的應用(我并沒有說,用其它框架開發的應用就不嚴肅^_^)。Portal開源項目JetSpeed建立在 Turbine上。

          Turbine用RunData來傳遞輸入輸出數據。如同Maverick的ControllerContext,RunData是整個 Turbine框架的數據交換中心。除了request, response等基本信息,RunData直接包括了User/ACL等權限控制相關的屬性和方法,另外還包括Action Name和Target Template Name等定位屬性。

          Module是Turbine里面除了RunData之外的又一個核心類,是Turbine框架的基本構件,Action是 Module,Screen也是Module。Turbine提供了LoginUser和LogoutUser兩個Action作為整個系統的出入口。而 其余流量的權限控制則由類似于Servlet Filter機制的Pipeline控制。

          Turbine Pipeline的編程模型和Servlet Filter一模一樣:Turbine Pipeline的Valve就相當于Servlet Filter,而ValveContext則相當于Filter Chain。還有更相近的例子,Tomcat源代碼里面也有Valve和ValueContext兩個類,不僅編程模型一樣,而且名字也一樣。



          權限控制貫穿于Turbine框架的始終。要用好Turbine,首先要通曉子項目Fulcrum 的Security部分的權限實現模型。

          Fulcrum Security的權限實體包括四個-- User, Group, Role, Permission。

          實體之間包含{Role,Permission}和{ Group, User, Role}兩組關系。

          {Role,Permission}是多對多的關系,一個Role可以具有各種Permission;{ Group, User, Role}之間是多對多的關系,一個Group可包含多個User,并可以給User分配不同的Role。

          權限模型的實現同樣采用Peer模式,Entity -> EntityPeer, Entity -> ManagerPeer。

          Entity和EntityManger代表抽象的模型概念,而EntityPeer和ManagerPeer代表具體的實現。

          用戶可以根據模型,提供不同的實現,比如,用內存結構中實現,用數據表結構實現,與Windows NT權限驗證機制結合,與OSWorkflow的權限控制模型結合,等等。其中,用數據表結構實現,又可以選擇用Torque實現,或者用 Hibernate實現。(Torque是Turbine的O/R Mapping子項目)
          例如,Falcrum.property配置文件包含如下Security相關選項:

          # -------------------------------------------------------------------

          # S E C U R I T Y S E R V I C E

          # -------------------------------------------------------------------

          services.SecurityService.user.class=org.apache.fulcrum.security.impl.db.entity.TurbineUser

          services.SecurityService.user.manager=org.apache.fulcrum.security.impl.db.DBUserManager

          services.SecurityService.secure.passwords.algorithm=SHA

          # -------------------------------------------------------------------

          # D A T A B A S E S E R V I C E

          # -------------------------------------------------------------------

          services.DatabaseService.database.newapp.driver=org.gjt.mm.mysql.Driver

          services.DatabaseService.database.newapp.url=jdbc:mysql://127.0.0.1/newapp

          services.DatabaseService.database.newapp.username=turbine

          services.DatabaseService.database.newapp.password=turbine



          這說明,權限控制實現由數據庫提供,需要根據權限模型創建如下數據表:

          TURBINE_USER,TURBINE_ROLE,TURBINE_GROUP,

          TURBINE_PERMISSION,TURBINE_ROLE_PERMISSION,

          TURBINE_USER_GROUP_ROLE

          Turbine表單處理中的中文:http://dev.csdn.net/article/70476.shtm

          使用turbine的項目:
          1)http://www.campware.org的Cream CRM
          2)http://scarab.tigris.org/
          3)Ohioedge 是采用B/S架構的開源的客戶管理系統。基于Jetspeed/Turbine技術
          ? http://www.ohioedge.com/

          參考資料:
          http://turbine.apache.org/fulcrum/fulcrum-osworkflow-example
          http://www.itpub.net/thread-306279-1-1.html
          http://dev.csdn.net/article/19/19994.shtm

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 巨鹿县| 商洛市| 微山县| 镇巴县| 南宫市| 逊克县| 德保县| 恩施市| 嘉义县| 武平县| 东乡族自治县| 靖州| 石嘴山市| 龙胜| 蒲城县| 南开区| 静乐县| 丰宁| 简阳市| 福建省| 屯留县| 西安市| 梁河县| 辉南县| 金湖县| 青河县| 丰城市| 同德县| 天长市| 江油市| 古浪县| 三明市| 祥云县| 陵水| 襄汾县| 卫辉市| 龙山县| 马关县| 策勒县| 两当县| 游戏|