很多时候,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
相关推荐
5. **规则集成**:通过与Drools(一个规则引擎)的集成,JBPM4.4允许在流程中嵌入决策逻辑,使得流程可以根据业务规则自动执行不同的路径。 6. **监控和报表**:JBPM4.4提供了监控工具,可以跟踪流程实例的执行状态...
4. **规则集成**:jbpm集成了Drools规则引擎,允许在流程中嵌入复杂的业务逻辑和决策规则。这样,流程可以根据特定条件动态调整其行为。 5. **事件处理**:jbpm 4.4引入了对事件处理的支持,如信号事件和时间事件,...
【jbpm4.4用户手册中文版】是针对企业级工作流管理系统的详细介绍,主要针对jbpm 4.4版本。这个手册旨在帮助开发者、系统管理员以及业务分析师理解和使用jbpm来实现工作流程自动化。jbpm是一个开源的业务流程管理...
在这个入门开发实例中,我们将探讨如何利用jBPM4.4进行业务流程的建模、部署和执行。 **一、jBPM4.4核心概念** 1. **流程定义(Process Definition)**:使用jBPM的流程定义语言(BPML或BPMN)来描述业务流程。...
在【描述】中提到,由于文件大小的限制,jbpm4.4开发包被分成了多个部分,这里提供的是其中一个部分,另一个部分可以通过链接在CSDN下载。这表明jbpm4.4的完整安装可能需要组合多个压缩包来获取所有必要的文件。CSDN...
这个压缩包中的文件很可能是jbpm4.4lib的组成部分,包括jar文件和其他必要的库,它们对于构建和运行基于jbpm4.4的工作流应用程序是至关重要的。由于列表中只有一个"1",这可能意味着文件名不完整,实际的zip文件可能...
在JBPM4.4的帮助文档中,主要包含以下几个关键知识点: 1. **工作流引擎**:JBPM的核心是一个强大的工作流引擎,它负责解析流程定义文件(BPMN 2.0 XML),执行流程实例,以及管理任务和事件。开发者可以通过API与...
4. **规则集成**:通过与Drools(一个开源决策管理引擎)的集成,JBPM4.4允许在流程中嵌入业务规则,实现动态决策。 5. **监控与报表**:JBPM4.4提供了一套监控工具,可以实时查看流程实例的运行状态,分析性能指标...
**jbpm4.4中文用户手册** jbpm4.4是一款功能强大的业务流程管理(BPM)和工作流系统,适用于构建和管理复杂的业务流程。该中文用户手册是官方提供的翻译版本,对于初学者来说是一份非常有价值的参考资料,旨在帮助...
jBPM4.4提供了强大的脚本支持,允许在流程中嵌入JavaScript、Groovy等多种脚本语言,增强了流程的灵活性和扩展性。 ### 配置与管理 - **配置文件**:包括对邮件服务、数据库连接等系统资源的配置。 - **控制台工具...
jbpm4.4用户指南是针对企业级工作流管理系统jbpm的一个详细教程,主要面向开发者,旨在帮助他们理解和使用jbpm 4.4版本进行业务流程管理(BPM)的开发工作。jbpm是一个开源的Java平台,它提供了一套完整的工具集,...
### jBPM 4.4 开发指南 #### 一、引言 ##### 1.1 目标读者 本书面向对jBPM框架有一定了解的开发者,特别是那些希望深入了解jBPM 4.4版本特性和技术细节的读者。 ##### 1.2 概述 jBPM 4.4是一款开源的业务流程管理...
4. **业务规则引擎**:jbpm集成了Drools规则引擎,允许在流程中嵌入复杂的业务决策逻辑。规则可以独立于流程代码进行管理和更新,实现了业务规则和流程逻辑的解耦。 5. **持久化机制**:jbpm-4.4使用Hibernate作为...
jBPM 4.4 是一个功能强大且灵活的工作流引擎,可以运行在独立的服务器上或者嵌入任何 Java 应用中。该用户指南提供了从安装、部署、使用、开发到原理和机制的全面的工作流教程。 jBPM 概述 jBPM 是一个基于流程...
3. **集成工作流定义**:将工作流定义(如流程图、规则文件)嵌入到项目中,可以通过jBPM提供的API来启动、监控和管理流程实例。 4. **业务逻辑集成**:将工作流引擎与业务逻辑层(通常是Spring管理的Bean)进行集成...
jBPM4.4与Red Hat的另一开源产品Drools紧密集成,允许在流程中嵌入决策逻辑。Drools是一个强大的规则引擎,可以处理基于条件的业务决策。 7. **事件处理** 流程中可以定义各种类型的事件,如信号事件、边界事件和...
### jBPM 4.4 用户手册中文版关键知识点概览 #### 1. 引言 - **浏览器推荐**:官方建议使用 Firefox 浏览器以获得最佳体验,使用 Internet Explorer 可能会遇到一些兼容性问题。 - **许可证**:jBPM 采用 GNU ...
- jBPM与Drools规则引擎紧密集成,允许在流程中嵌入业务规则,实现动态决策。 - 使用Drools工作流API,可以在流程中执行规则,并根据规则结果改变流程路径。 3. **事件处理** - 支持系统事件(如任务完成、流程...
**jBPM 4.4 用户指南** jBPM(Java Business Process Management)是一个开源的工作流管理系统,专注于业务流程管理(BPM)和工作流自动化。版本4.4是其历史上的一个重要里程碑,提供了丰富的功能和改进,以帮助...