Turbine 介绍

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

你可能感兴趣的:(Turbine 介绍)