JBPM4.4中嵌入自己的用户体系

很多时候,JBPM自己提供的用户系统是不够用的,这时候就要求我们自己去扩展自己的用户体系。JBPM允许外挂一个用户体系。

成都创新互联公司从2013年创立,先为海沧等服务建站,海沧等地企业,进行企业商务咨询服务。为海沧企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

如果想嵌入自己的用户体系,只需如下几步:

一:创建MyUserImpl,MyGroupImpl,MyMembershipImpl三个类,分别实现接口User,Group。由于类MyMembershipImpl是独立的,因此没有必要继承或实现其他接口。

MyUserImpl 的主要代码:

Java代码

 
 
 
  1. public class MyUserImpl implements Serializable, User {   
  2.   
  3.     private static final long serialVersionUID = 1L;   
  4.     private long dbid;   
  5.     private String id;   
  6.     private String username;//用户名   
  7.     private String password;//密码   
  8.     private String sex;//性别   
  9.     private int age;//年龄   
  10.     private String tel;//电话号码   
  11.            
  12.     public String getUsername() {   
  13.         return username;   
  14.     }   
  15.     public long getDbid() {   
  16.         return dbid;   
  17.     }   
  18.                 .   
  19.                 .//省略部分setter和getter方法   
  20.                 .   
  21.     public String getId() {   
  22.         return this.id;   
  23.     }   
  24.   
  25. }  

MyGroupImpl 的主要代码:

Java代码

 
 
 
  1. public class MyGroupImpl implements Serializable, Group {   
  2.   
  3.     private static final long serialVersionUID = 1L;   
  4.        
  5.     private long dbid;   
  6.     private String groupName;   
  7.     private String groupType;   
  8.     private MyGroupImpl parentGroup;   
  9.        
  10.     public long getDbid() {   
  11.         return dbid;   
  12.     }   
  13.     public void setDbid(long dbid) {   
  14.         this.dbid = dbid;   
  15.     }   
  16.   
  17.                 //省略部分gettrer和setter方法   
  18.   
  19.     public String getType() {   
  20.         return null;   
  21.     }   
  22.   
  23. }  

MyMembershipImpl 的主要代码:

Java代码

 
 
 
  1. public class MyMembershipImpl implements Serializable {   
  2.   
  3.     private static final long serialVersionUID = 1L;   
  4.        
  5.     protected long dbid;   
  6.     protected User user;   
  7.                 protected Group group;   
  8.                 protected String role;   
  9.       
  10.     public User getUser() {   
  11.         return user;   
  12.     }   
  13.     public void setUser(User user) {   
  14.         this.user = user;   
  15.     }   
  16.     public Group getGroup() {   
  17.         return group;   
  18.     }   
  19.     public void setGroup(Group group) {   
  20.         this.group = group;   
  21.     }   
  22.     public String getRole() {   
  23.         return role;   
  24.     }   
  25.     public void setRole(String role) {   
  26.         this.role = role;   
  27.     }   
  28.     public long getDbid() {   
  29.         return dbid;   
  30.     }   
  31.     public void setDbid(long dbid) {   
  32.         this.dbid = dbid;   
  33.     }   
  34. }  

当然,上面三个类里面的字段可能不满足实际需求,但是没有关系,我们可以添加新的字段。

二:第一步完成了,那么就开始第二步。第二步的主要任务就是将这些类映射到数据库里。由于JBPM的持久层的操作采用的是Hibernate进行的。所以我们必须编写一个Hibernate的映射文件将实体类映射到数据库。这个映射文件可以写在任何位置,但一般建议写到ClassPath路径下面。具体的代码如下:

XML代码

 
 
 
  1. xml version="1.0"?>   
  2. >   
  3.    
  4.        
  5.            
  6.                
  7.          id>   
  8.          property>   
  9.          property>   
  10.          property>   
  11.          property>   
  12.          property>   
  13.          property>   
  14.      class>   
  15.        
  16.        
  17.            
  18.                 
  19.          id>   
  20.          property>   
  21.          property>   
  22.         
  23.                  column="parent"    
  24.                  class="en.estar.jbpm.identify.MyGroupImpl"  
  25.                  foreign-key="FK_GROUP_PARENT"/>   
  26.      class>   
  27.        
  28.        
  29.        
  30.            
  31.              
  32.          id>   
  33.         
  34.                      column="USER_"    
  35.                      class="en.estar.jbpm.identify.MyUserImpl"  
  36.                      foreign-key="FK_MEM_USER"/>   
  37.        
  38.         
  39.                      column="GROUP_"    
  40.                      class="en.estar.jbpm.identify.MyGroupImpl"  
  41.                      foreign-key="FK_MEM_GROUP"/>   
  42.        
  43.            
  44.    class>   
  45. hibernate-mapping>  

上面的代码是仿照JBPM默认的映射文件jbpm.identity.hbm.xml写的。这个文件可以在JBPM的源代码里面找到,导入jar包时,它被封装在jbpm.jar里面。映射文件配置好了之后,只需在hibernate的配置文件jbpm.hibernate.cfg.xml中加上一句话 就行了。当然,resource的路径根据实际情况而定。

三:通过以上两步,就完成了由实体类到数据库的映射,也就是说,当你启动tomcat运行JBPM的时候,数据库里就会多出三张表:JBPM4_MyUser,JBPM4_MyGroup,JBPM4_MyMembership。虽然如此,但是这只是利用了hibernate的自动生成数据表的功能产生了三个表而已,JBPM凭什么知道我需要使用的是我新创建的这三张表,而不会去调用原来的那三张表呢?答案是,他不知道。

所以我们要继续进行配置。找到jbpm的一个配置文件叫:jbpm.cfg.xml。在这个文件里面原来有一句话:

import resource="jbpm.identity.cfg.xml"。我们可以去查看jbpm.identity.cfg.xml 的实际内容,结果里面就一句话: 。有了这句话,就相当于告诉了JBPM,它将会去调用JBPM自带的关于用户体系操作的一个接口IdentitySession。这个类的实现IdentitySessionImpl里就会默认去调用JBPM自带的用户关系管理的数据表。所以为了改变JBPM的这种习惯,我们就必须自己创建一个类,并实现接口IdentitySession。这样JBPM就会去调用我们自己的实现,而不会再去调用它自己的东东。要实现这个只需要把他的配置文件jbpm.identity.cfg.xml 的import resource="jbpm.identity.cfg.xml“注释掉,然后加上一句:

XML代码

 
 
 
  1.    
  2.           
  3.          
  4.          object>   
  5. transaction-context>  

这样就OK了。下面的任务就是去实现MesIdentitySessionImpl中的方法了。不过我认为,里边的方法没有必要全部实现,把几个find开头的方法实现了就行了,其他的诸如,创建用户,创建组,删除用户等等之类的,我们就没有必要实现了,必要的时候我们可以自己单独写方法实现,就不需要放到该类当中了。

当前名称:JBPM4.4中嵌入自己的用户体系
文章转载:http://www.mswzjz.cn/qtweb/news49/281699.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能