工作流的基本操作
创建数据库表
部署流程定义
流程定义查询
流程定义删除
流程资源文件的查询
package com.hyq;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.junit.Test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;
/**
* Created byq on 2017/7/1.
*/
public class Main {
/**获取流程引擎*/
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 创建数据库表
*/
@Test
public void createDb(){
String source = "activiti.cfg.xml";
ProcessEngineConfiguration configuration = ProcessEngineConfiguration.
createProcessEngineConfigurationFromResource(source);
ProcessEngine processEngine = configuration.buildProcessEngine();
System.out.print(processEngine);
}
/**
* 部署流程定义-方式一
*/
@Test
public void deployProcess(){
System.out.print(processEngine);
RepositoryService repositoryService = processEngine.getRepositoryService();
String bpmn = "/diagram/purchasingflow01.bpmn";
String png = "/diagram/purchasingflow01.png";
InputStream bpmn_inputStream = this.getClass().getResourceAsStream(bpmn);
InputStream png_inputStream = this.getClass().getResourceAsStream(png);
Deployment deployment = repositoryService.createDeployment()
.addInputStream(bpmn, bpmn_inputStream)
.addInputStream(png, png_inputStream)
.name("我的流程部署")
.deploy();
String id = deployment.getId();
String name = deployment.getName();
System.out.print("部署id:"+id);
System.out.print("部署name:"+name);
}
/**
* 通过zip压缩包的方式部署
*/
@Test
public void deployByZip(){
RepositoryService repositoryService = processEngine.getRepositoryService();
InputStream inputStream = this.getClass().getResourceAsStream("/diagram/diagram.zip");
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
Deployment deploy = repositoryService.createDeployment()
.addZipInputStream(zipInputStream).deploy();
System.out.print(deploy.getId());
}
/**
* 流程定义的查询
*/
@Test
public void queryProcessDefinetion(){
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
//设置查询条件:流程定义的id组成:流程定义key+版本号+流水号
// processDefinitionQuery.processDefinitionId("purchasingflow:2:104");
processDefinitionQuery.processDefinitionKey("purchasingflow");
List<ProcessDefinition> processDefinitions = processDefinitionQuery.list();
for(ProcessDefinition pd : processDefinitions){
System.out.println("============================================");
System.out.println("流程定义id:"+pd.getId());
System.out.println("流程部署id:"+pd.getDeploymentId());
System.out.println("流程定义的key:"+pd.getKey());
System.out.println("资源名:"+pd.getDiagramResourceName());
System.out.println("流程定义名称:"+pd.getName());
System.out.println("流程定义的版本:"+pd.getVersion());
}
}
@Test
/**
* 流程文件的删除
*/
public void deleteProcess(){
RepositoryService repositoryService = processEngine.getRepositoryService();
String processDefinitionId = "purchasingflow:2:104";
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
repositoryService.deleteDeployment(processDefinition.getDeploymentId());
// repositoryService.deleteDeployment(processDefinition.getDeploymentId(),true);
}
@Test
/**
* 流程资源文件的查询
*/
public void queryFlowResource() throws Exception {
String depolymentId = "1";
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(depolymentId).singleResult();
String resourceName_bpmn =processDefinition.getResourceName();
String resourceName_png =processDefinition.getDiagramResourceName();
InputStream diagramStream = repositoryService.getResourceAsStream(depolymentId,resourceName_bpmn);
InputStream resourcStream = repositoryService.getResourceAsStream(depolymentId,resourceName_png);
byte[] buf = new byte[1024];
int line = -1;
File file_bpmn = new File("d:"+resourceName_bpmn);
File file_png = new File("d:"+resourceName_png);
FileOutputStream fileOutputStream_bpmn = new FileOutputStream(file_bpmn);
FileOutputStream fileOutputStream_png = new FileOutputStream(file_png);
// while((line=resourcStream.read(buf))>0){
// fileOutputStream_bpmn.write(buf,0,line);
// }
while((line=diagramStream.read(buf,0,1024))!=-1){
fileOutputStream_png.write(buf,0,line);
}
fileOutputStream_png.flush();
diagramStream.close();
fileOutputStream_png.close();
}
}