轉自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
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