activiti:流程定义管理 ProcessDefifinition
上文链接:https://www.cnblogs.com/wangshaoyun/p/17150560.html
部署好流程定义后,则可以进行查询、激活(启动)、挂起(暂停)、删除流程定义数据(上面讲的删除流程定义部署信息就是),下载流程定义对应的 xml文件和 png 文件。
按条件分页查询流程定义数据
@Autowired
RepositoryService servcie;
//查询的是act_re_procdef表
@Test
public void getProcDefList() {
ProcessDefinitionQuery query = servcie.createProcessDefinitionQuery();
String name = "请假";
if (StringUtils.isNotBlank(name)) {
query.processDefinitionNameLike("%" + name + "%");//条件查询
}
query.latestVersion()//如果多个相同的key,只查询最新版本的流程定义
.orderByProcessDefinitionKey().desc();//按照key降序
int current = 1;//当前页
int size = 5;//每页显示的条数
int firstResult = (current - 1) * size;//当前页第一条数据的下标
List<ProcessDefinition> pages = query.listPage(firstResult, size);
for (ProcessDefinition page : pages) {
System.out.println("流程部署id:" + page.getDeploymentId());
System.out.println("流程定义id:" + page.getId());
System.out.println("流程定义key:" + page.getKey());
System.out.println("流程定义名称:" + page.getName());
System.out.println("流程版本号:" + page.getVersion());
System.out.println("流程状态:" + (page.isSuspended() ? "挂起" : "激活"));
}
long count = query.count();
System.out.println("满足条件的总记录数:" + count);
}
激活或挂起流程定义
@Autowired
RepositoryService servcie;
//查询的是act_re_procdef表 挂起之后,所有流程实力不允许继续往后流转,激活之后可以继续流转 (SUSPENSION_STATE_:1,激活;2,挂起)
@Test
public void updateProcDefState() {
String processDefinitionId = "leave:1:8dc3d29b-b66b-11ed-8ced-38f3abe10e1d";
ProcessDefinition processDefinition = servcie.createProcessDefinitionQuery()
.processDefinitionId(processDefinitionId)
.singleResult();
//判断是否挂起,true:挂起 false:激活
if (processDefinition.isSuspended()) {
//挂起 -> 激活
//参数说明:参数1,流程定义id 参数2,是否激活 参数3,什么时候激活,如果为null则立即激活,如果为具体时间,则到达此时间后激活
servcie.activateProcessDefinitionById(processDefinitionId,true,null);
}else {
//激活 -> 挂起
servcie.suspendProcessDefinitionById(processDefinitionId,false,null);
}
}
下载流程定义的xml和png文件
@Autowired
RepositoryService servcie;
@Test
public void exportProcDefFile() throws Exception {
String id = "leave:1:19095e64-b70f-11ed-beb7-38f3abe10e1d";
//查询流程定义数据
ProcessDefinition processDefinition = servcie.getProcessDefinition(id);
//获取的是xml和资源名
String resourceName = processDefinition.getResourceName();
//获取png图片资源名
resourceName = processDefinition.getDiagramResourceName();
//查询到相关的输入流
InputStream input = servcie.getResourceAsStream(processDefinition.getDeploymentId(), resourceName);
File file = new File("C:/study/activiti/" + resourceName);
FileOutputStream output = new FileOutputStream(file);
IOUtils.copy(input, output);
input.close();
output.close();
System.out.println("流程定义资源文件导出成功:" + resourceName);
}
标签:定义,activiti,流程,System,servcie,ProcessDefifinition,println,out
From: https://www.cnblogs.com/wangshaoyun/p/17164959.html