所需工具列表:
jbpm-4.4.zip
apache-ant-1.7.0.zip
apache-tomcat-6.0.29.zip
myeclipse-7.5.0-win32.exe
我的目录结构
D:\\apache-ant-1.7.0
D:\\jbpm-4.4
步骤一:配置ant环境变量
解压apache-ant-1.7.0.zip
ANT_HOME D:/ant 1.6
在系统变量path中加入:%ANT_HOME%\\bin
(如果是第一个,则以“.”开始,否则以“;”分隔)
在系统变量classpath中加入 %ANT_HOME%\\lib
(如果环境变量都不会配,那从java学起)
在cmd窗口中运行ant命令,如果不是显示:
'ant' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
说明ant环境变量配置成功。
步骤二:安装jbpm
Cmd控制台进入 jbpm_home\\install目录下
1 安装数据库
1)MySQL中创建一个库,库名:jbpmdb
2)修改install\\build.xml
3)修改\\install\\jdbc\\mysql.properties中的数据库配置(有时候安装别的数据库时缺少相应的jar包,需要将相应的jar包copy到jbpm-4.3\\lib目录下
4)ant create.jbpm.schema
查看mysql的jbpmdb数据库:
2.安装服务器
1)把apache-tomcat-6.0.20.zip(解压版)放进jbpm-4.3\\install\\downloads目录下(不用似乎也可以)
2)安装tomcat :ant install.tomcat(似乎也可以不用)
3)ant install.jbpm.into.tomcat:把jBPM安装到tomcat中,这时候在jbpm-4.3目录下生成apache-tomcat-6.0.20,将下面的文件与目录copy到已经安装tomcat下即可.
4)ant load.example.identities:读取实例用户和用户组数据到mysql数据库.生成用户名与密码:
用户名 密码
alex password
mike password
peter password
mary password
步骤三:测试
启动tomcat,打开http://localhost:8080/jbpm-console
如果出现下图,说明成功:
步骤四:配置myeclipse
安装myeclipse7.5
安装jbpm插件的方法:
1)
2)
点击add
点击add archive
找到 D:\\jbpm-4.4\\install\\src\\gpd\\jbpm-gpd-site.zip
然后next,finish
重启myeclipse
注意:jbpm4.0以后安装插件不会再有新建jbpm项目了,只有在新建文件时有
新建JBPM4 Process Definition。
第二篇 helloworld示例
1)New java project helloworld
2)把D:\\jbpm-4.4\\examples\\src下的东东都copy到helloworld->src下
3)在src下新建一个process definition
4)修改jbpm.hibernate.cfg.xml配置文件
我的mysql数据库配置如下:
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
一般来说都是按照这样几个步骤来做的
1.新建项目
2.src下新建JBPM4 Process Definition命名为hello,会生成hello.jpdl.xml的文件
3.添加依赖库【eclipse或者MyEclipse中右键build path-->add External Archives然后添加jbpm.jar和lib下的所有jar】
4.添加JPBM必须配置文件,进入D:\\jbpm-4.4\\examples\\src 将该目录下所有配置文件拷贝到项目src下
Helloworld.jpdl.xml配置文件:
package com.jbpm;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
public class HelloWorldTest {
/**
* @param args
*/
private static ProcessEngine processEngine;
private static ExecutionService executeServices ;
public static void setUpBeforeClass() throws Exception {
System.err.println(processEngine);
processEngine = Configuration.getProcessEngine();//通过单列模式获得流程引擎
System.err.println(processEngine);
executeServices = processEngine.getExecutionService();
}
public void setUp() throws Exception {
}
public void testDeployProcess(){
//RepositoryService功能:主要对流程文件进行发布,查看,删除等!
RepositoryService repositoryService = processEngine.getRepositoryService();
//因为helloword.jpdl.xml文件在 classpath目录下就可以直接这样写,如果不在的话应该加上包名
//返回已经发布的流程的id
String processId = repositoryService.createDeployment().addResourceFromClasspath("helloworld.zip").deploy();
//查看已经发布流程的列表
List System.out.println("已经发布的流程数量为:"+list.size()); for(ProcessDefinition pd:list){ System.out.println("发布流程的名称:"+pd.getName()+发布流程id"+pd.getId()); } repositoryService.createProcessDefinitionQuery(); //根据流程id来删除已经发布的流程 //repositoryService.deleteDeployment(processId) //repositoryService.deleteDeploymentCascade("processId"); //repositoryService.suspendDeployment(processId);这个等价于删除一个流程 //System.out.println("已经发布的流程数量为:"+repositoryService.createProcessDefinitionQuery().list().size()); } public void testProcessInstance(){ ProcessInstance processInstance = executeServices.startProcessInstanceByKey("helloworld"); List for(ProcessInstance pi:list){ System.out.println("流程实例名称:"+pi.getName()+流程实例key:"+pi.getKey()+流程实例version:"+pi.getState()+":"); } //结束流程实例 //executeServices.endProcessInstance(processInstance.getId(), "cancel"); //删除流程实例 //executeServices.deleteProcessInstance(processInstance.getId()); //System.out.println(executeServices.createProcessInstanceQuery().list().size()); System.out.println(processInstance.isActive("state1")); executeServices.signalExecutionById(processInstance.getId()); } InputStream is; public void loadPic() throws IOException{ RepositoryService repositoryService = processEngine.getRepositoryService(); byte[] pic = new byte[1024]; int len = -1; while( (len=is.read(pic))!=-1 ){ long_file.write(pic, 0, len ); } } public static void main(String args[]) throws Exception{ HelloWorldTest world=new HelloWorldTest(); world.setUpBeforeClass(); world.testDeployProcess(); // world.loadPic(); } }