Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 701|回复: 0

jBPM 的使用,例子

[复制链接]

该用户从未签到

发表于 2011-10-29 08:14:23 | 显示全部楼层 |阅读模式
import junit.framework.TestCase;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;
public class TestJbpm_02 extends TestCase {
  
//jbpmConfiguration对象的创建
static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
  
public void testJbpm(){
   
  //然后我们把processDefinition里面相关的对象持久化到数据库里面去。
  //流程定义文件里面有很多个概念,他有node,有transition,还有processDefinition,那么我们不需要一个
  //一个保存,jbpm把保存这么多对象的方法封装成一个接口,叫做deployProcessDefinition。我们只要调用这个
  //方法,传一个processDefinition对象,我们就能将他们存入到数据库里面去。
   
  //这个首先第一步我们要得到一个processDefinition对象,然后我们把他部署到流程中去。
  ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml");
  //我们要存就必须获得一个session对象,而jbpm已经把session对象封装到一个JbpmContext对象里面了。
  //那么这个jbpmContext对象是怎么得到的呢,我们要先有一个jbpmConfiguration对象,我们要对数据库进行
  //操作的时候一定要有jbpmConfiguration这个对象,用他来创建一个类似于hibernate当中的session一样的
  //对象——jbpmContext。他是我们对数据库所有的操作的一个接口。
  JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  try{
  //然后部署的操作已经由jbpmContext给我们创建好了,我们只需要调一下他的一个方法就可以了。
  jbpmContext.deployProcessDefinition(processDefinition);
  }finally{
  //最后我们还要对他close一下,就像我们用hibernate的时候要close session一样。
  jbpmContext.close();
  }
}
}

第二步我们也做完了,那么现在我们开始做第三步,也就是说,我们流程定义文件写好了,现在我们的系统当中有了这样一个报销流程。
  那么就开始实际的去用她吧,一个人小报销了,那么她就要写一个报销的申请,但是这个 报销的申请写完了存到数据库当中了还不能算完了,应该和我们的这个流程关联起来啊,那么她应该怎么去关联呢,我们在建立这个申请单这个类的时候应该定义一 个processInstanceId属性,她是一个long型的。
  记录这我们的这个流程实例的id,那么什么是流程实例 (processInstance)呢,她是我们工作流当中第二重要的概念,他和流程定义的关系就相当于对象和类之间的关系,类是一个抽象的东西,她定义 完了是什么也干不了的,要想用她内部定义的东西我们就要new出一个实例来,当然这个里面也是这样的。
  那么也就是说,当我们创建这个报销申请的时候我们就要先根据这个流程‘new’出一个流程实例来存到数据库当中,然后在把她的id传给报销申请对象然后再将这个报销申请对象存到数据库当中。那么这个代码是这样的:
package com.jbpm.test;
import junit.framework.TestCase;
import org.hibernate.Session;
public class TestJbpm_03 extends TestCase {
  
public void testJbpm(){
  Session session = null;
  try{
  session = HibernateUtil.getSession();
  session.beginTransaction();
   
  Document doc = new Document();
  doc.setTitle("title3");
  doc.setContent("this is content3");
  session.save(doc);   
  session.getTransaction().commit();
  }catch(Exception e){
  e.printStackTrace();
  session.getTransaction().rollback();
  }finally{
  HibernateUtil.closeSession(session);
  }
}
}

  这段代码是在网上找得,好像其他人都运行出来了,我粘贴上去怎么就又错误啊!!大家帮我解决一下,至以最诚挚的感谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-6-17 20:05 , Processed in 0.577505 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表