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);
}