jbpm java节点_JBPM工作流

一.开发环境的搭建

1.下载Jbpm4.4

1.1下载地址:

1.2解压后的目录

8b54e9df9fd8333682454c40c416bf0f.png

2.安装GPD插件(eclipse图形化流程设计器)

2.1打开eclipse--------选择help--------选择install new software

adc6bae37904f782c8cb59b9a9633073.png

2.2选择add添加插件:

ccd4a061c084dd9e47a6fb08462aafa9.png

点击Archive选择插件目录:

插件目录所在位置就是下载的解压后的路径中找jbpm-4.4\install\src\gpd

0e98ad1da99cbab9548742080e7046d9.png

89176b64a22a0aea9e93b8dd1ddeb9b6.png

2.3选择插件

6a44de40f91b290594d3273af5528f20.png

后续直接下一步就行,等待安装插件。

1.配置运行时的环境

打开eclipse-------------preference

9778e0aa27932022b9605ad3af3d5cad.png

1ef0b398c227a42101043531b186caae.png

584978d49ceefd6ca2d37c7b8fcb3270.png

dc9867ffe8a530f72f8be7ae68939f83.png

1.配置JPDL xml的schema dtd

4.1目的

有时在建jpdlxml文件的时候没有节点的提示,我们配置一下这个schema dtd,就有提示了。

4.2配置步骤

打开eclipse-------------preference

9d470cf6de14d67efe848667a1c586c4.png

c1c236b2cdeb5c3dd5df707a65612a40.png

二.JBPM简介

2.1什么是jbpm

JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。

2.2为什么用jbpm

业务分析师和开发人员使用的是同一种语言来交谈,大大降低了开发的风险,如果要开发一个项目,速度也更快了,因为开发人员不用再将用户需求转化成软件设计了。其次,JBPM采用的不是一般的开发工具,而是自己的图形化开发工具,非常方便随时了解和掌握运行的进程。最后,JBPM的流程框架非常灵活,使用起来也非常安全,它经过了安全认证,因此可以保证一些商业机密不被泄露。

三.开发步骤

1.引入jar包

在jbpm4.4的解压包中根目录Jbpm的jar包还有lib文件夹中除report-engine,war包外所有jar包

注:因为Jbpm4.4是用Mysql作为DB的,如果要用Oracle作为DB需要引入相应的驱动包。

2.创建配置文件

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

org.hibernate.dialect.Oracle10gDialect

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@localhost:1521:orcl

jbpm

jbpm

update

true

3.画流程图

新建jpdl.xml文件

3a163d637e2e65bf55f7c8807a2e0a1f.png

c9acd780d90df4b76cd26a2d5d71d300.png

4.创建表结构

/*** 创建表结构:有18张表*/@Testpublic voidcreateTable(){//读取配置文件

new org.hibernate.cfg.Configuration().configure("jbpm.hibernate.cfg.xml").buildSessionFactory();

}

18张表的含义:

http://www.cnblogs.com/a757956132/p/4774188.html

755a96176a2a6a995a077403e2281ed8.png

68e42f84ceb9d8674e580161acf7176c.png

5.获取工作流引擎

//获取工作流引擎//ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();//获取工作流引擎

ProcessEngine processEngine=Configuration.getProcessEngine();

6.部署流程定义

//获取工作流引擎//ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();//获取工作流引擎

ProcessEngine processEngine=Configuration.getProcessEngine();

7.启动流程实例

//获取工作流引擎//ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();//获取工作流引擎

ProcessEngine processEngine=Configuration.getProcessEngine();

8.查询任务

@Testpublic voidselectMyStack(){//根据指定的人员去查看他的任务

List stacks= processEngine.getTaskService().findPersonalTasks("部门经理");

System.out.println("经理的任务");for(Task task : stacks) {

System.out.println("任务ID:"+task.getId()+"\t任务名称:"+task.getName()+"\t任务的办理人:"+task.getAssignee());

}

}

9.查询当前任务所在节点

@Testpublic voidgetActivity(){

String name=processEngine.getExecutionService().createProcessInstanceQuery().processInstanceId("jbpm01.10001").uniqueResult().findActiveActivityNames().toString();

System.out.println("当前任务所在节点:"+name);

}

10.办理任务

@Testpublic voidsaveTask(){

processEngine.getTaskService().completeTask("80002");

System.out.println("任务办理成功");

}

四.流程管理

4.1部署流程

4.2查看所有流程定义的信息

@Testpublic voidfindAll(){

List list =pe.getRepositoryService().createProcessDefinitionQuery().list();for(ProcessDefinition pd : list) {/*** id的格式 name-版本号

* name:jbpm.cfg.xml文件中根据点的name属性值

* key,如果在配置文件中指定了,那么就是根据点中的test的 值,如果不指定默认是name的值

* version版本号,同一个名称的第一个为1后续的自增*/System.out.println("id:"+pd.getId()+"\tname:"+pd.getName()+"\tkey"+pd.getKey()+"\t版本号:"+pd.getVersion()+"\t部署的id:"+pd.getDeploymentId());

}

}

4.3删除指定id流程信息

@Testpublic voiddeleteByid(){

pe.getRepositoryService().deleteDeploymentCascade("100001");

System.out.println("删除成功");

}

4.4删除指定key的所有流程信息

@Testpublic voiddeleteByids(){//01.取出当前key对应的版本信息

List list = pe.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey("jbpmtest").list();for(ProcessDefinition pd : list) {

pe.getRepositoryService().deleteDeploymentCascade(pd.getDeploymentId());

}

System.out.println("删除成功");

}

4.5获取流程图

@Testpublic void getImage() throwsException{

String deploymentId="10001";

String resouceName="jbpmtest.png";//根据id去查询所有对应的资源名

Set resourceNames =pe.getRepositoryService().getResourceNames(deploymentId);for(String item: resourceNames){

System.out.println("资源名称:"+item);

}

InputStream in=pe.getRepositoryService().getResourceAsStream(deploymentId, resouceName);

OutputStream os=new FileOutputStream("D:\\1.png");int a=in.read();while (a!=-1) {

os.write(a);

a=in.read();

}

in.close();

os.close();

System.out.println("成功");

}

4.6部署zip格式的资源

public voidaddZipResource(){

InputStream is=this.getClass().getClassLoader().getResourceAsStream("two.zip");

ZipInputStream zs=newZipInputStream(is);

String id=pe.getRepositoryService().createDeployment().addResourcesFromZipInputStream(zs).deploy();

System.out.println("部署成功:deploymentid:"+id);

}

4.7找到所有最新版本的流程定义

@Testpublic voidfindNewVersionInfo(){//查询所有

List list = pe.getRepositoryService().createProcessDefinitionQuery()//.orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)

.list();

Map map=new java.util.HashMap();for(ProcessDefinition item : list) {

map.put(item.getKey(),item);

}for(ProcessDefinition pd : map.values()) {

System.out.println("id:"+pd.getId()+"\tname:"+pd.getName()+"\tkey"+pd.getKey()+"\t版本号:"+pd.getVersion()+"\t部署的id:"+pd.getDeploymentId());

}

}

4.8设置流程变量

public voidsetVariable() {

pe.getExecutionService().setVariable("jbpm01.90001", "请假天数", 18);

}

@Testpublic voidgetVariable() {

Integer days= (Integer) pe.getExecutionService().getVariable("jbpm01.90001", "请假天数");

System.out.println(days);

}

五.JBPM和SSH整合

目的:整合jBPM的目的就是能够通过注入的方式得到ProcessEngine实例,因为ProcessEngine是jbpm的核心.

1.关于jar包

在Tomcat/lib目录下添加jBPM软件包里的下列三个jar包,删掉Tomact/lib下的el-api

297aead833908608f0a1069c35e4ac58.png

2.关于配置文件

修改jbpm.cfg.xml文件

修改applicationcontext.xml文件<?xml version="1.0" encoding="UTF-8"?>

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

">

classpath:jdbc.properties

org.hibernate.dialect.Oracle10gDialect

true

true

update

org.springframework.orm.hibernate3.SpringSessionContext

jbpm.repository.hbm.xml

jbpm.execution.hbm.xml

jbpm.history.hbm.xml

jbpm.task.hbm.xml

jbpm.identity.hbm.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值