如果想嵌入自己的用户体系,只需如下几步:
第一步:
MyUserImpl 的主要代码:
Java代码
- public
class MyUserImpl implements Serializable, User { -
-
private static final long serialVersionUID = 1L; -
private long dbid; -
private String id; -
private String username;//用户名 -
private String password;//密码 -
private String sex;//性别 -
private int age;//年龄 -
private String tel;//电话号码 -
-
public String getUsername() { -
return username; -
} -
public long getDbid() { -
return dbid; -
} -
. -
.//省略部分setter和getter方法 -
. -
public String getId() { -
return this.id; -
} -
- }
MyGroupImpl 的主要代码:
Java代码
- public
class MyGroupImpl implements Serializable, Group { -
-
private static final long serialVersionUID = 1L; -
-
private long dbid; -
private String groupName; -
private String groupType; -
private MyGroupImpl parentGroup; -
-
public long getDbid() { -
return dbid; -
} -
public void setDbid(long dbid) { -
this.dbid = dbid; -
} -
-
//省略部分gettrer和setter方法 -
-
public String getType() { -
return null; -
} -
- }
MyMembershipImpl 的主要代码:
Java代码
- public
class MyMembershipImpl implements Serializable { -
-
private static final long serialVersionUID = 1L; -
-
protected long dbid; -
protected User user; -
protected Group group; -
protected String role; -
-
public User getUser() { -
return user; -
} -
public void setUser(User user) { -
this.user = user; -
} -
public Group getGroup() { -
return group; -
} -
public void setGroup(Group group) { -
this.group = group; -
} -
public String getRole() { -
return role; -
} -
public void setRole(String role) { -
this.role = role; -
} -
public long getDbid() { -
return dbid; -
} -
public void setDbid(long dbid) { -
this.dbid = dbid; -
} - }
当然,上面三个类里面的字段可能不满足实际需求,但是没有关系,我们可以添加新的字段。
第二步:
XML代码
- <xml
version="1.0"?> -
- <hibernate-mapping>
-
<class name="en.estar.jbpm.identify.MyUserImpl" table="JBPM4_MyUser"> -
<id name="dbid" column="id"> -
<generator class="assigned" /> -
</id> -
<property name="id" column="userId"></property> -
<property name="username"></property> -
<property name="password"></property> -
<property name="age"></property> -
<property name="sex"></property> -
<property name="tel"></property> -
</class> -
-
<class name="en.estar.jbpm.identify.MyGroupImpl" table="JBPM4_MyGroup"> -
<id name="dbid" column="id"> -
<generator class="assigned" /> -
</id> -
<property name="groupName"></property> -
<property name="groupType"></property> -
<many-to-one name="parentGroup" -
column="parent" -
class="en.estar.jbpm.identify.MyGroupImpl" -
foreign-key="FK_GROUP_PARENT"/> -
</class> -
-
-
<class name="en.estar.jbpm.identify.MyMembershipImpl" table="JBPM4_MyMembership"> -
<id name="dbid" column="id"> -
<generator class="assigned"/> -
</id> -
<many-to-one name="user" -
column="USER_" -
class="en.estar.jbpm.identify.MyUserImpl" -
foreign-key="FK_MEM_USER"/> -
-
<many-to-one name="group" -
column="GROUP_" -
class="en.estar.jbpm.identify.MyGroupImpl" -
foreign-key="FK_MEM_GROUP"/> -
-
<property name="role" column="name" /> -
</class> - </hibernate-mapping>
上面的代码是仿照JBPM默认的映射文件jbpm.identity.hbm.xml写的。这个文件可以在JBPM的源代码里面找到,导入jar包时,它被封装在jbpm.jar里面。映射文件配置好了之后,只需在hibernate的配置文件jbpm.hibernate.cfg.xml中加上一句话就行了。当然,resource的路径根据实际情况而定。
第三步:
XML代码
- <transaction-context>
-
<hibernate-session current="true"/> -
<object class="en.estar.jbpm.identify.MesIdentitySessionImpl"> -
</object> - </transaction-context>
这样就OK了。下面的任务就是去实现MesIdentitySessionImpl中的方法了。不过我认为,里边的方法没有必要全部实现,把几个find开头的方法实现了就行了,其他的诸如,创建用户,创建组,删除用户等等之类的,我们就没有必要实现了,必要的时候我们可以自己单独写方法实现,就不需要放到该类当中了. 注:在编写的过程中,如果需要使用我们自己定义的接口,则获得接口的方法与通过Spring注入时获得的方法不同,需要使用EnvironmentImpl.getFromCurrent方法获得。
如:private