Myeclipse8.6搭建jbpm4.4的开发环境
选择“add site”,弹出如下对话框:

选择“Add from Archive File”,弹出如下对话框:

选择“打开”,弹出如下对话框:

选择“OK”,出现如下对话框:

3)、一个一个选中jpd下面的文件,点击右击“add to profile”即可!
4)、点击右下角“apply change”按钮即可!(注:在更新的时候一定要断开网络。我在没断开网络的前提下,装了好几遍,装完Myeclipse下创建web工程的栏目就不见了)。
安装完成后会重启Myeclipse,重启后在新建项目里会多出一项“JBoss jBPM”,如下图所示:


a)、先打开mysql数据库新建一个数据库比如jbpm(create database jbpm);
b)、打开${jbpm_home}\install\src\db\create 下面,找到mysql的表脚本!
c)、全部复制过来粘贴到mysql命令行上(当然也可以source ***.sql方式),
4、helloWorld程序新建一个java project? 项目名称为helloJbpm
a:首先导入相应的jar包(导入$(jbpm_home)\lib目录下面的所有jar包和$(jbpm_home}下面的jbpm.jar包到项目中去)
b:导入配置文件(导入${Jbpm_home}\examples\src目录下面的所有配置文件到项目导入src目录下面,然后修改jbpm.hibernate.cfg.xml里面的driver,用户名,密码,数据库名(可以参考${JBPM-home}\install\jdbc目录下面的mysql.properties文件))
c:设计流程文件
选择new-->jbpss jbpm--->jbpm4 process definition文件即可
xml代码:
Java代码
d:写一个测试类
Java代码
package com.baihe.jbpm;???
??
import java.util.List;???
import org.jbpm.api.Configuration;???
import org.jbpm.api.Execution;???
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;???
import org.junit.Before;???
import org.junit.BeforeClass;???
import org.junit.Test;???
??
public class HelloWorldTest {???
??? private static ProcessEngine processEngine;???
??? private static? ExecutionService executeServices ;???
???????
??? @BeforeClass??
??? public static void setUpBeforeClass() throws Exception {???
??????? processEngine = Configuration.getProcessEngine();//通过单列模式获得流程引擎???
??????? executeServices = processEngine.getExecutionService();???
??? }???
??
??? @Before??
??? public void setUp() throws Exception {???
??? }???
???????
??? @Test??
??? public void testDeployProcess(){???
??????? //RepositoryService功能:主要对流程文件进行发布,查看,删除等!???
?????? RepositoryService? repositoryService = processEngine.getRepositoryService();???
??????? //因为helloword.jpdl.xml文件在? classpath目录下就可以直接这样写,如果不在的话应该加上包名???
??????? //返回已经发布的流程的id???
??????? String processId = repositoryService.createDeployment().addResourceFromClasspath("hello.jpdl.xml").deploy();???
??????? //查看已经发布流程的列表???
??????? List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().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());???
??????????
???????????
??? }????
?? @Test??
??? public void testProcessInstance(){????????
??????????
??????? ProcessInstance processInstance = executeServices.startProcessInstanceByKey("helloworld");???
??????? List<ProcessInstance> list = executeServices.createProcessInstanceQuery().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());???
??????????
??? }???
????????????
}?? ?