Oracle神谕

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  284 随笔 :: 9 文章 :: 106 评论 :: 0 Trackbacks

(org.jbpm.identity)身份包包含有如下几个类:
一、Entity 实体类:这个类作为users<用户>groups<组>和memberships<成员>的超类,用来管理名称和权限的增加删除和获取。其中用到了jdk的Permission类。目前还不知道这个对具体权限的控制有什么作用?
二、Group组类:这个类是Entity的继承子类,这个类主要用于区分层次组、安全角色和其他。  
  (1)主要包含以下几个Filed:
     protected String type = null;
     protected Group parent = null; //父就是自己
     protected Set children = null; //子是一个集合,其中的元素也是Group
     protected Set memberships = null; //会员
   (2)JBpm的类内部方法的命名还是很不错的:
    public Set getUsersForMembershipName(String membershipName) 很容易理解为通过membershipName来获得所有的用户。 这个内不仅仅是简单的JavaBean的setter和getter,而是进行一些引申的操作,例如获取用户以及addXXX等操作。
   (3)与之相对应的hibernate Mapping文件Group.hbm.xml其中也有几个地方,值得注意,其实这个在Jbpm中是大量使用的:
           table="JBPM_ID_GROUP"
         discriminator-value="G">
    ....
 
  这里表示的是在JBPM_ID_GROUP表中的CLASS_字段等于G的为Group的影射对象。这里我们在使用一个表的不同类型(一个字段对应不同的值)就可以表示不同的类型对象。这一点很值得我们学习的。其他值得我们关注的是它采用的集合类型的操作方式,在我们以前的开发中这种做法并值得采用的。
三、Membership成员类:它是用户和组之间的一个联系的桥梁。会员的名称代表角色的名称。一个会员可能是一个组织的位置,所以权限往往于会员联系。会员的名字能用来做角色的名字。不同的会员来担当不同的角色。
protected  String role = null;
protected Group group = null;
protected User user = null;
 这个类没有采用传统的构造子复用的方式,而是用很了很多的create()方法,有些方法让人感觉有些茫然不知所措,不过直接相关的代码,也就明白了。
  其中影射文件也使用了discriminator(鉴别者)的功能,以及many-to-one和set集合的做法
四、User类:包含有三个字段:password email  以及Set memeberships。
  以下是通过两种方式获得Groups的方法,一个是通过组的类别,一种是通过成员名称(角色名称)
  public Set getGroupsForGroupType(String groupType)
  public Set getGroupsForMembershipName(String membershipName)

  通过观察,我们发现这里其实有以下几个对象:Entity Group Memebership User Permission。其中Group、Memebership、User都是Entity都是子类和父类的关系。Entity和Permission是一对多的关系,表示一个实体拥有各种不同的权限,同样其他的Group等子类,也与Permission都是一对多的关系。Group 和Memeber是一对多的,一个组具有不同的角色(成员)。Membership与User和Group是多对一的关系。User和Membership之间是一对多的关系。

其中涉及的表有:
jbpm_id_group;
jbpm_id_membership;
jbpm_id_user;

posted on 2005-09-17 21:33 java世界畅谈 阅读(1238) 评论(0)  编辑  收藏 所属分类: JBPM

只有注册用户登录后才能发表评论。


网站导航: