activiti学习之部署流程实现流程定义增删改查

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下

猜你喜欢

转载自blog.csdn.net/Master_chaoAndQi/article/details/80558418