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

          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作為框架,開發(fā)一些嚴肅的應用(我并沒有說,用其它框架開發(fā)的應用就不嚴肅^_^)。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作為整個系統(tǒng)的出入口。而 其余流量的權限控制則由類似于Servlet Filter機制的Pipeline控制。

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



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

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

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

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

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

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

          用戶可以根據模型,提供不同的實現(xiàn),比如,用內存結構中實現(xiàn),用數據表結構實現(xiàn),與Windows NT權限驗證機制結合,與OSWorkflow的權限控制模型結合,等等。其中,用數據表結構實現(xiàn),又可以選擇用Torque實現(xiàn),或者用 Hibernate實現(xiàn)。(Torque是Turbine的O/R Mapping子項目)
          例如,F(xiàn)alcrum.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



          這說明,權限控制實現(xiàn)由數據庫提供,需要根據權限模型創(chuàng)建如下數據表:

          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架構的開源的客戶管理系統(tǒng)。基于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

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


          網站導航:
           
          主站蜘蛛池模板: 嘉禾县| 亳州市| 东乡| 中西区| 屏边| 綦江县| 永和县| 宿松县| 沙坪坝区| 吉木乃县| 荃湾区| 开原市| 揭东县| 株洲市| 惠州市| 遂宁市| 高青县| 池州市| 安丘市| 襄汾县| 太白县| 定陶县| 通州市| 巴楚县| 寻乌县| 南开区| 凤凰县| 泽州县| 扶绥县| 安国市| 富源县| 双辽市| 博白县| 堆龙德庆县| 中山市| 罗江县| 江城| 乌什县| 北京市| 黄浦区| 永兴县|