很多时候,JBPM自己提供的用户系统是不够用的,这时候就要求我们自己去扩展自己的用户体系。JBPM允许外挂一个用户体系。
如果想嵌入自己的用户体系,只需如下几步:
一:创建MyUserImpl,MyGroupImpl,MyMembershipImpl三个类,分别实现接口User,Group。由于类MyMembershipImpl是独立的,因此没有必要继承或实现其他接口。
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;
- }
- .
-
.
- .
-
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;
- }
-
-
-
-
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;
- }
- }
当然,上面三个类里面的字段可能不满足实际需求,但是没有关系,我们可以添加新的字段。
二:第一步完成了,那么就开始第二步。第二步的主要任务就是将这些类映射到数据库里。由于JBPM的持久层的操作采用的是Hibernate进行的。所以我们必须编写一个Hibernate的映射文件将实体类映射到数据库。这个映射文件可以写在任何位置,但一般建议写到ClassPath路径下面。具体的代码如下:
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的路径根据实际情况而定。
三:通过以上两步,就完成了由实体类到数据库的映射,也就是说,当你启动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代码
- <transaction-context>
-
<hibernate-session current="true"/>
-
<object class="en.estar.jbpm.identify.MesIdentitySessionImpl">
-
object>
- transaction-context>
这样就OK了。下面的任务就是去实现MesIdentitySessionImpl中的方法了。不过我认为,里边的方法没有必要全部实现,把几个find开头的方法实现了就行了,其他的诸如,创建用户,创建组,删除用户等等之类的,我们就没有必要实现了,必要的时候我们可以自己单独写方法实现,就不需要放到该类当中了。
转载:http://developer.51cto.com/art/201103/248633.htm
相关推荐
资源名称:JBPM4.4视频教程(22集附源码)资源目录:【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)...
jBPM 4.4用户手册 翻译官方文档 JBoss jBPM Teams 4.4 译者: Lingo 首页: http://www.family168.com/ 论坛: http://old.family168.com/bbs EMAIL: lingosurf168@gmail.com 2009年11月1日 1. 导言 1.1. 许可...
jbpm4.4开发指南,jbpm4.4用户指南
父项目中,根据Maven的规范,配置了相关依赖包的引用,包括:Jbpm4.4的引用包引用、Junit4.9的测试包引用,hibernate的引用包,以及应用服务器Jboss的Client引用等。 接口中,提供了部署流程、创建实例、获得当前...
jBPM 4.4 用户手册 中文版 PDF格式
jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载
jbpm4.4中文开发指南 ,官方翻译,新手必读!
jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd
jbpm4.4下载地址
jBPM4.4开发指南 开发手册 JBPM4.4 开发
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
jBPM4.4入门开发实例
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
jBPM4.4课程文档
JBPM4.4之HelloWorld示例
JBPM4.4学习文档.ppt
jbpm4.4+ssh配置
jBPM4.4数据库表简单介绍
jbpm4.4 ibatis-spring 整合
jBPM 4.4开发指南,翻译官方文档 JBoss jBPM Teams