1 抽离连接数据库的代码
2 实现 根据资源文件部署流程定义、zip部署流程定义、根据id删除、查询列表、根据id查询
一 数据库连接工具类
package utils;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
public class DbUtils {
private static String jdbcUrl ="jdbc:mysql://localhost:3306/activit";
private static String username ="root";
private static String password ="root";
private static String driverClass ="com.mysql.jdbc.Driver";
public static ProcessEngine getProcessEngine(){
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
configuration.setJdbcUrl(jdbcUrl);
configuration.setJdbcDriver(driverClass);
configuration.setJdbcPassword(password);
configuration.setJdbcUsername(username);
configuration.setDatabaseSchemaUpdate("true");
//是否启用任务调用
configuration.setJobExecutorActivate(false);
ProcessEngine processEngine= configuration.buildProcessEngine(); // 通过默认方法构建流程引擎对象
return processEngine;
}
}
二 新建流程定义测试类
package activity002;
import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.repository.Deployment;
import org.junit.Test;
import utils.DbUtils;
public class Activt002 {
/**
* 需求 :
* 1 部署流程
* 2 流程查询
* 3 删除流程
*/
/**
* 流程部署
* @Description: TODO(用一句话描述该文件做什么)
* @author guochao
* @date 2018年6月3日
*
*/
@Test
public void addProcess(){
ProcessEngine processEngine = DbUtils.getProcessEngine(); // 获得流程引擎对象
Deployment deploy = processEngine.getRepositoryService().createDeployment().name("申请流程").addClasspathResource("helloworld.bpmn")
.addClasspathResource("helloworld.png").deploy();
//
System.out.println("部署流程ID"+"\t"+deploy.getId());
System.out.println("部署名"+"\t"+deploy.getName());
}
/**
* 根据zip文件部署流程
* @Description: TODO(用一句话描述该文件做什么)
* @author guochao
* @date 2018年6月3日
*
*/
@Test
public void addByZip() throws Exception{
// 从类加载目录 获得指定文件的输入流
InputStream in = this.getClass().getClassLoader().getResourceAsStream("helloworld.zip");
ProcessEngine processEngine = DbUtils.getProcessEngine(); // 获得流程引擎对象
Deployment deploy = processEngine.getRepositoryService().createDeployment().name("申请流程")
.addZipInputStream(new ZipInputStream(in)).deploy();
System.out.println("部署流程ID"+"\t"+deploy.getId());
System.out.println("部署名"+"\t"+deploy.getName());
in.close(); // 关不输入流
}
/**
* 查询部署流程列表
* @Description: TODO(用一句话描述该文件做什么)
* @author guochao
* @date 2018年6月3日
*
*/
@Test
public void getProcessList(){
ProcessEngine processEngine = DbUtils.getProcessEngine(); // 获得流程引擎对象
List<Deployment> list = processEngine.getRepositoryService().createDeploymentQuery()
.list();
if(list!=null && list.size()>0){
for (Deployment deployment : list) {
System.out.println("部署ID"+"\t"+deployment.getId()+"\t"+"流程名称:"+"\t"+deployment.getName());
}
}
}
/**
* 根据id查询部署流程信息
*/
@Test
public void selectByProcessId(){
String deployId ="801";
ProcessEngine processEngine = DbUtils.getProcessEngine(); // 获得流程引擎对象
Deployment singleResult = processEngine.getRepositoryService().createDeploymentQuery()
.deploymentId(deployId).singleResult();
System.out.println("部署ID"+"\t"+singleResult.getId()+"\t"+"流程名称:"+"\t"+singleResult.getName());
}
/**
* 根据id删除 部署的流程信息
* @Description: TODO(用一句话描述该文件做什么)
* @author guochao
* @date 2018年6月3日
*级联删除 act_ge_bytearray 和 act_re_deployment
*/
@Test
public void deleteById(){
String deployId ="801";
ProcessEngine processEngine = DbUtils.getProcessEngine(); // 获得流程引擎对象
processEngine.getRepositoryService().deleteDeployment(deployId, true); //
}
}
流程定义增删改查操作就完成了。
总结 流程定义操作 的数据表为act_re_deployment
1 获得流程引擎对象
2 获得 RepositoryService 实例 通过调用该实例的方法完成流程定义的CRUD操作
补充:所有的流程定义文件 均放在与src目录同级的 resource下