`

jbpm学习,jpbm中流程执行比较重要的类和方法

    博客分类:
  • JBPM
阅读更多

今天继续学习jbpm,汤老师结合例子对jpbm中流程执行比较重要的类和方法进行了讲解,部署流程定义,流程执行,任务实例等。通过今天的学习,基本掌握了jbpm操作流程。

jbpm中要用的jar包,把它们添加进入项目
 
   jbpm-jpdl.jar(核心);
   jbpm-identity.jar(可选,组织机构);
   bsh.jar(BeanShell脚本);
   jboss-j2ee.jar;

   hibernate3.jar(Hibernate);
   antlr-2.7.6.jar(Hibernate);
   asm.jar(Hibernate);
   cglib.jar(Hibernate);
   dom4j.jar(Hibernate);
   commons-collections.jar(Hibernate);
   commons-logging.jar(Hibernate);

   hsqldb.jar(可选,纯Java写的数据库);
   log4j.jar(可选,日志记录);

   Junit4(单元测试);

     添加配置文件(在jbpm-jpdl-3.2.2/config目录中):
   jbpm.cfg.xml;
   hibernate.cfg.xml;
   log4j.properties(可选,log4j配置文件);
修改数据库库连接信息,如果使用的不是HsqlDB数据库,还应添加相应的jdbc驱动。

  生成数据库表。

 编写流程步骤,要实现的功能有:
    a> 部署流程定义。
    b> 启动流程。
    c> 获取任务列表。
    d> 开始任务。
    e> 结束任务。
其中编写流程定义和步骤a是添加流程定义到系统中;步骤b,c,d,e是使用系统中
存在的某个流程定义执行流程;步骤c,d,e是办理一个任务的过程,流程的执行就
是一次次办理任务的过程。
    有两个重要的类:JbpmConfiguration和JbpmContext。JbpmConfiguration是
jBPM的相关配置信息,并有创建JbpmContext的功能,可以把JbpmConfiguration
想像成Hibernate中的Configuration与SessionFactory的结合体。使用
JbpmConfiguration.getInstance()方法创建一个JbpmConfiguration对象,这会
使用默认的jbpm配置文件:在classpath根目录中,并且名字为jbpm.cfg.xml。或
者是使用getInstance(String configFilePath)方法,用指定的配置文件构造。

Jbpm中几乎所有的操作都是通过JbpmContext完成的,可以把他想像成Hibernate
中的Session。他是通过JbpmConfiguration.createJbpmContext()方法创建的,
JbpmContext中包装有一个Hibernate的Session(通过他做的数据库操作)。使用
完JbpmContext后一定要调用他的close()方法,否则所有信息都不会持久化到数
据库当中。因为在调用JbpmConfiguration.createJbpmContext()方法时会创建一
个Hibernate的Session并开始事务;在调用JbpmContext.close()方法时会提交事
务并且关闭所关联的Session。如果在执行JbpmContext.close()之前调用方法
jbpmContext.setRollbackOnly(),则在JbpmContext.close()时会回滚事务。
   部署流程定义
这个过程就是把流程定义的相关信息保存到jBPM的数据库中。
    解析流程定义有三种方式,所使用的方法都在ProcessDefinition中,并且都
是static的:1)parseXmlResource方法,parseXmlInputStream方法和parseXmlReader方法,是解析一个xml的流程定义文件;2)parseXmlString,是解析一个字符串;3)parseParResource与parseParZipInputStream是解析一个par包。
   ProcessDefinition.parseXmlResource(xmlResource)接受的参数是流程定义文件
的路径,这个路径是相对于classpath的根路径的一个相对路径。
    Process archive(par),流程档案文件,是一个zip文件。必须要有一个流程定义文件,名字为processdefinition.xml,流程档案也可以包含其他的相关文件,
如processimage.jpg,gpd.xml或classes(类的字节码文件)等等,(流程定义中
使用到的class要放到classpath中;或者是放到流程档案的/classes文件夹中,
这样就会被流程类装载器来装载)。

   流程定义不应该改变,因为预测流程变化带来的所有可能的影响是非常困难的
(或者说是不可能的)。围绕这个问题,jBPM有一个明智的流程版本机制。版本
机制允许在数据库中多个同名流程定义共存,流程实例以当时的最新版本来启动,并且在它的整个生命周期中将保持以相同的流程定义执行。当一个新的版本被部署,新的流程实例以新版本启动,而老的流程实例则以老的流程定义继续执行。
  部署流程定义时,如果存在同名的流程定义,则版本自动累加(加1);如果不存在,则版本为1。
   在部署到jBPM数据库之后改变流程定义有很多潜在的缺陷,因此非常不鼓励这样做。可以直接部署为一个新的版本。
    执行流程
流程实例可以通过ProcessDefinition.createProcessInstance()方法创建,或者
是使用new ProcessInstance(ProcessDefinition pd)并传递一个流程定义来创建,
总之创建的流程实例一定是要是属于(使用)某个流程定义的。启动流程后不要
忘了使用ProcessInstance.signal()方法离开开始状态。
  注意:流程定义的名字是processdefinition.xml文件中的根元素的name属性的值,不是流程定义文件的名字!
    每个节点都有多个任务,任务列表:当前需要办理(未完成)的任务集合。可以通过TaskMgmtSession获得。
    开始任务的方法为:TaskInstance.start();结束任务为:TaskInstance.end(),
TaskInstance.end(String transitionName);无参的end()方法是使用第一个
transition离开节点;第二个方法是指定完成任务后使用指定的transition离开
节点。一个任务实例只能开始和结束一次(再次开始或结束会抛异常,打印这个任务已经结束了)。

分享到:
评论

相关推荐

    JBPM视屏教程共9节 jBPM 4视频教程06流程驳回

    【标题】"JBPM视屏教程共9节 jBPM 4视频教程06流程驳回"揭示了关于企业级工作流管理系统jBPM的重要学习资源,特别关注了流程的回退操作。jBPM是一个开源的工作流程管理系统,用于设计、执行、管理和监控业务流程。在...

    JBPM中文文档

    例如,通过调用`processInstance.getTaskMgmtInstance.createStartTaskInstance()`创建起始任务,然后使用`taskInstance.end()`来结束起始任务并继续流程执行。 - **参与者**:起始任务的任务实例的参与者自动从...

    myeclipse中安装jpbm插件

    JBPM是一个开源的工作流引擎,基于jBPM项目,它提供了强大的工具来创建、执行和监控业务流程。 #### 安装步骤详解 1. **下载插件** 首先,需要从官方网站或其他可信源下载`jbpm-jpdl-designer-site-3.1.7.zip`...

    JBPM4.4会签实例

    通过学习"CountersignDemo"这个实例,你可以深入了解JBPM4.4的会签实现,包括如何设计流程、创建自定义活动、编写工具类以及如何在实际应用中部署和使用。这将有助于提升你对业务流程管理的理解,使你能更好地为企业...

    jbpm几个重要数据表的详细说明

    通过以上对jbpm流程管理系统中的重要数据表的详细介绍,我们不仅能够了解到这些表在流程定义和运行过程中的核心作用,还能进一步理解jbpm是如何通过这些表实现流程的自动化管理和控制的。这对于开发人员理解和应用...

    工作流jpbm集成在ssh中(非原创)

    工作流(Workflow)系统是企业信息化建设中的重要组成部分,它能够帮助企业规范业务流程,提高工作效率。jBPM(Java Business Process Management)是一个开源的工作流管理系统,用于执行业务流程模型。SSH(Spring...

    深入浅出JPBM 第9章相关源代码

    6. **测试代码**:在源码中可能包含测试用例,用于验证JPBM流程的正确性和性能。这些测试通常使用JUnit或TestNG等框架编写,模拟不同的业务场景,确保流程的各个阶段能按预期工作。 7. **配置与集成**:JPBM通常...

    企业OA 完整的jbpm工作流实例

    在这个名为"企业OA 完整的jbpm工作流实例"的项目中,开发者使用了Java SSH框架来构建了一个集成jbpm的工作流系统,特别适合初学者了解和学习工作流的实现。 SSH框架是Struts、Spring、Hibernate三个开源项目的首...

    JPBM3的安装和一个简单的示例

    - 在测试方法中调用`signal()`方法触发流程的执行,模拟节点间的转移,打印出当前节点名称,以验证流程的正确运行。 运行`Test.java`,你将看到输出: ``` 1 开始 2 毛亮 3 结束 ``` 这表明流程按照预期从开始节点...

    ssh+jbpm整合好的demo

    **JBPM**(Business Process Management)是一个工作流引擎,主要用于定义、执行和管理业务流程。它可以处理流程的启动、流转、任务分配以及监控等功能。JBPM4.4版本提供了流程定义语言(BPMN 2.0)、图形化建模工具...

    jbpm示例 安装步骤

    jbpm(Java Business Process Management)是一款开源的工作流管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。在这个特定的资源中,我们有jbpm示例和安装所需的压缩包,使得用户能够按照提供...

    jbpm开发

    5. **变量**:用于存储流程执行过程中产生的数据。 #### 六、工作流引擎的运转过程 JBPM的工作流引擎是其核心组件,负责解释和执行流程定义。工作流引擎的运行大致遵循以下步骤: 1. **加载流程定义**:从数据库...

    深入浅出JPBM 第7章源代码

    JPBM,全称Java Business Process Management,是一种基于Java技术的BPM框架,它允许开发者设计、执行和监控复杂的业务流程。JPBM的核心特性包括流程建模、工作流引擎、事件处理和规则集成等,这些功能使得JPBM成为...

    jbpm3连上mysql

    jBPM是一个开源的工作流和业务流程管理系统,它允许开发者设计、执行和管理业务流程。在本话题中,我们将探讨如何配置jBPM3以使用MySQL作为其后台数据存储。 首先,我们需要理解jBPM的数据模型和存储需求。jBPM使用...

    自整理Java关于基础和框架的面试题

    - **抽象类**:可以有抽象方法和具体方法,不能实例化。 - **接口**:全部方法都是抽象的,定义了一种行为规范。 ##### 修饰符的作用 - **public**:公开的,任何地方都可以访问。 - **protected**:受保护的,同包...

    java面试知识

    - **方法重载**:同一类中方法名相同但参数列表不同的多个方法。 ##### StringBuffer、StringBuilder与String的区别 - **String**:不可变字符串,适用于频繁读取而很少修改的情况。 - **StringBuilder**:可变...

Global site tag (gtag.js) - Google Analytics