1.部署流程定义,这一步在数据库中将操作三张表:(代码可见helloworld)
a. act_re_deployment(部署对象表)
存放流程定义的显示名和部署时间,每部署一次增加一条记录
b. act_re_procdef(流程定义表)
存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。
注意:当流程定义的key相同的情况下,使用的是版本升级
c. act_ge_bytearray(资源文件表)
存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件不是很大,都是以二进制形式存储在数据库中。
2.查看流程定义
/**
* 查询流程定义
*/
@Test
public void test4(){
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey("helloworld")
.list();
for (ProcessDefinition p:list){
System.out.println(p.getName());
System.out.println(p.getKey());
System.out.println(p.getId());
System.out.println(p.getDeploymentId());
System.out.println(p.getVersion());
System.out.println(p.getClass());
System.out.println(p.getDescription());
System.out.println(p.getCategory());
System.out.println(p.getDiagramResourceName());
System.out.println(p.getResourceName());
System.out.println(p.getTenantId());
System.out.println("########################");
}
}
3.删除流程定义
/**
* 删除流程定义
*/
@Test
public void test5(){
//不带级联删除 通过流程部署的id
// processEngine.getRepositoryService().deleteDeployment("12501");
//带级联删除 会删除所有与部署id有关表中的数据
processEngine.getRepositoryService().deleteDeployment("12501",true);
System.out.println("delete success");
}
4.查看流程图
/**
* 查看流程图
*/
@Test
public void test6() throws IOException {
String resourcename="";
List<String> names = processEngine.getRepositoryService().getDeploymentResourceNames("22501");
for (String name:names){
System.out.println(name);
if (name.indexOf(".png")>0){
resourcename=name;
}
}
InputStream inputStream = processEngine.getRepositoryService().getResourceAsStream("22501", resourname);
File file = new File("d:/" + resourcename);
FileUtils.copyInputStreamToFile(inputStream,file);
System.out.println("success");
}