`
zybing
  • 浏览: 456051 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jBPM4:接在现有的系统上,需要更换用户体系

阅读更多

在现有的应用上,接入jBPM,要修改的就是jBPM的用户体系。

 

jBPM的用户体系,在数据库中有以下几张表:

JBPM4_ID_USER        : jBPM的用户表

JBPM4_ID_GROUP     : jBPM的用户组表

JBPM4_MEMBERSHIP : 用户和用户组之间的关系

 

JBPM4_TASK                  : 任务表,其中的assignee_表示这个任务有谁来完成

JBPM4_PARTICIPATION  : 可选的用户或者用户组,一个任务可以有一些用户/用户组中的成员来完成,记录在这个表中

JBPM4_SWIMLANE          :泳道,现在还未仔细的看

 

-----------------------------------------------------------

jBPM4对外服务的时候,和用户、用户组相关的服务,都有IdentityService来进行(具体有IdentityServiceImpl来实现)。

 

通过Command模式,交由下层来进行具体的实现

具体的实现都是交给接口IdentitySession来进行的,

具体的实现有2个:IdentitySessionImpl,JBossIdmIdentitySessionImpl。

现在自己程序中,一般都有IdentitySessionImpl来进行处理。

 

-----------------------------------------------------------------

接入到自己的系统:

 

一般情况下,如果在自己的系统中,明确的每个任务都是由指定的人员来完成,或者在进入Task的时候,在AssignmentHandler中能够直接确定工作者,就不需要修改jBPM了。

 

如果需要使用到jBPM的taskService的findGroupTasks,或者需要通过jBPM的自动发邮件的功能,则需要对jBPM做一些修改,将jBPM获取用户的方式转接到自己的系统来。

 

现在考虑具体的实现,就是更换掉jBPM的 IdentitySessionImpl,用自己原有的方式来替换它。

----- 原来考虑替换 IdentityServiceImpl,看了一下jBPM内部的一些代码,发现在pvm中,有地方是直接获取IdentitySession的,所以替换IdentityServiceImpl不能实现要求。

 

获取接口IdentitySession,通过以下方式来的:

EnvironmentImpl.getFromcurrent(IdentitySession.class)

或者是:

environment.get(IdentitySession.class)

 

EnvironmentImpl 是保存在 ThreadLocal中的,

 

------------------------------------------------------------------------------------------------------------

jBPM4的IoC的方式见:以下链接:

http://www.opug.org.cn/node/87 或

http://www.iteye.com/topic/381607

 

Jbpm4透过WireParser具备从xml加载的能力,wire的相关配置文件为:jbpm.wire.bindings.xml,其中包含了对IdentitySession的定义:

 

  <binding class="org.jbpm.pvm.internal.wire.binding.IdentitySessionBinding" />

 

在jBPM4中,缺省的是绑定:org.jbpm.pvm.internal.wire.binding.IdentitySessionBinding

 

 

  public Object parse(Element element, Parse parse, Parser parser) {
    ObjectDescriptor objectDescriptor = new ObjectDescriptor(IdentitySessionImpl.class);
    objectDescriptor.addTypedInjection("session", Session.class);
    return objectDescriptor;
  }

 

IdentitySession的实现是: IdentitySessionImpl.class

同时给该类的session属性,注入Session.class

 

public class IdentitySessionImpl implements IdentitySession {

  protected Session session;
 

如果要替换,只要自己继承IdentitySession,实现一个其功能的类。

同时自己在完成一个binding类,修改jBPM的配置即可。

 

 

---------

在identitySession中,使用到User和group接口(都在org.jbpm.api.identity),而且这个接口相对简单,如果自己要使用,可以在几个基础上再进行继承。

 

 

 

 

 

 

别人的文章:

1 

 

 

 

 

分享到:
评论

相关推荐

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jbpm4服务接口方法汇总

    ### jbpm4服务接口方法汇总 #### Process Engine与Service组件概览 在JBPM框架中,`ProcessEngine`是核心的工厂类,负责提供一系列的服务接口。这些接口为流程管理和控制提供了必要的支持。通过初始化`...

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    JBPM4.4所需要的包.rar

    在JBPM中,这可能用于触发基于邮件的通知或工作流步骤,比如当某个任务完成或者需要用户介入时发送提醒。 这些JAR文件的组合表明,这个压缩包是为了支持JBPM 4.4的运行环境或者开发环境准备的。开发者或系统管理员...

    jBPM4工作流应用开发指南.pdf

    - **jBPM4:** jBPM4 是一款轻量级的工作流管理系统,支持业务流程的建模、执行、监控和管理。它采用了一种基于Java的流程定义语言(jPDL),以及适合复杂和动态业务流程的图形化流程编辑器。 - **开发指南:** 该...

    基于JBPM工作流的OA办公系统

    在实施基于JBPM的OA办公系统时,开发人员需要完成以下步骤: - **流程设计**:使用BPMN工具设计流程图,定义流程节点、转换条件、参与者角色等。 - **代码实现**:编写Java服务实现业务逻辑,与流程引擎交互,如...

    JBPM4 表 详细介绍

    **JBPM4_VARIABLE** - 上下文表 - **描述**: 存储流程执行过程中的变量信息。 - **字段说明**: 包括变量名、值、类型等。 - **操作信息**: 创建或修改变量时,此表新增或更新记录。 #### 11. **JBPM4_HIST_DETAIL*...

    JBPM4与JBPM5工作流系统技术可行性分析

    - **架构简介**:JBPM5基于Drools Flow构建,是JBPM系列的新版本,相较于JBPM4在架构上有较大的改变。它同样支持BPMN标准,并引入了规则引擎,提高了灵活性。 - **优势**: - 引入规则引擎,更好地应对业务规则...

    jBPM4用户指南入门教程

    **jBPM4用户指南入门教程** jBPM4是一个基于Java的企业级工作流管理系统,它为业务流程管理(BPM)提供了全面的解决方案。本教程将引导您逐步了解如何安装配置、使用流程设计器、部署业务归档以及利用服务和jpdl...

    jbpm4基本jar包

    【jbpm4基本jar包】是企业级工作流管理系统Jboss Business Process Management Suite(简称jbpm)的一个核心组件集合。jbpm4是一个开源的工作流程管理框架,它提供了强大的业务流程建模、执行和监控能力,使得开发...

    jbpm4案例源码

    jbpm4是一个开源的工作流程管理系统,它为企业的业务流程自动化提供了强大的支持。这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发...

    jBPM4入门基础环境配置

    - **Java Development Kit (JDK)**:确保你的系统上安装了JDK 1.6或更高版本,因为jBPM4需要这个版本或以上来运行。 - **Eclipse IDE**:推荐使用Eclipse IDE,因为它有jBPM4的插件支持,可以方便地进行流程设计和...

    JBPM4与Spring整合例子代码

    1. **Spring配置JBPM4**:首先,我们需要在Spring的配置文件中声明对JBPM4的依赖,包括数据源、事务管理器以及JbpmContext的bean。数据源用于连接数据库存储的流程实例信息,事务管理器确保流程操作的原子性,而...

    JBPM4环境搭建

    3. **设置环境变量**:为了方便后续的开发和调试,需要在系统环境变量中添加JBPM的相关路径。例如,可以设置`JBPM_HOME`指向解压后的目录,并将`PATH`变量包含`%JBPM_HOME%\bin`,以便于执行jbpm相关的命令。 4. **...

    jBPM4完整例子

    这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常适合初学者了解如何在实际项目中运用jBPM4进行工作流开发。 首先,我们来详细了解一下SSH框架。SSH是Java Web...

    JBPM4 开发文档 实例 流程

    JBPM4(Java Business Process Management 4)是一个轻量级的开源工作流管理系统,基于J2EE架构,旨在帮助开发者实现复杂的业务流程自动化。该项目于2004年10月18日发布2.0版本,并随后成为JBoss企业中间件平台的一...

    jBPM4工作流示例jbpmDemo

    **jbPM4工作流示例jbpmDemo**是一款基于jBPM4的工作流管理系统实例,旨在帮助用户深入了解和掌握jBPM4工作流引擎的使用方法。jBPM4是一款强大的开源工作流管理系统,它提供了流程建模、执行以及监控等功能,广泛应用...

    jbpm4web-JBPM4的一个web版本的Demo

    在jbpm4web中,用户还可以进行流程控制操作,如驳回任务回到上一步骤,或者在某些情况下终止流程。这些控制功能有助于适应业务变化,确保流程的灵活性。 5. **流程监控**: 为了评估流程效率和找出改进点,jbpm4...

    JBPM4 学习使用总结

    3. **持久化管理(Persistence)**:JBPM4利用Hibernate进行数据持久化,保证流程实例在系统重启后能够恢复。 4. **监听器(Listeners)**:允许在流程生命周期的不同阶段添加自定义行为,如开始、结束、任务分配等...

Global site tag (gtag.js) - Google Analytics