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下