数据表介绍

部署对象和流程定义相关的表:

SELECT * from ACT_RE_DEPLOYMENT WHERE ID_ in (45001, 47501); #部署对象表
SELECT * FROM ACT_RE_PROCDEF WHERE DEPLOYMENT_ID_ in (45001, 47501); #流程定义表
SELECT * FROM ACT_GE_BYTEARRAY WHERE DEPLOYMENT_ID_ in (45001, 47501); #资源文件表
SELECT * FROM ACT_GE_PROPERTY; #主键生成策略表

package com;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.FileUtils;

/**
 * @author 黑子
 * @Date 2018/2/23 15:53
 */
public class ProcessDefinitionManager {

    private static final String PROCESS_DEPLOY_ID = "42501";

    public static void main(String[] args) {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        deploymentProcessDefinition(engine);
        //findProcessDefinition(engine);
        //removeProcessDefinition(engine);
        //lastVersionProcessDefinition(engine);
    }

    // 添加部署流程定义:类路径下/zip都可以部署
    private static void deploymentProcessDefinition(ProcessEngine engine) {
        Deployment deployment = engine.getRepositoryService().createDeployment().name("流程定义")
            .addClasspathResource("diagrams/practice.bpmn").deploy();
        System.out.println("部署ID: " + deployment.getId());
        System.out.println("部署名称: " + deployment.getName());
    }

    // 查询流程定义
    private static void findProcessDefinition(ProcessEngine engine) {
        List<ProcessDefinition> processDefinitions = engine.getRepositoryService()
            .createProcessDefinitionQuery()//创建一个流程定义查询
            .deploymentId(PROCESS_DEPLOY_ID)
            //.processDefinitionId("process_2:1:37504")
            //.processDefinitionKey("process_2")//返回的是结合
            //.processDefinitionNameLike("")//模糊查询
            //.count()结果数量
            //.orderByProcessDefinitionId().desc()//排序
            //.singleResult()//返回一个结果
            .list();//返回一个集合
        //.listPage(firstResult, maxResults)分页查询
    }

    // 删除流程定义
    private static void removeProcessDefinition(ProcessEngine engine) {

        engine.getRepositoryService()
            //.deleteDeployment("37501");//非级联删除:只能删除未启动的流程,否则抛异常
            .deleteDeployment(PROCESS_DEPLOY_ID, true);//级联删除:无论流程是否启动,都能删除
        System.out.println("删除成功!");
    }

    // 查看流程图
    private static void viewPic(ProcessEngine engine) throws IOException {
        *//*将生成的图片放到文件夹下*//*
        List<String> resourceNames = engine.getRepositoryService()
            // 获取资源文件名称
            .getDeploymentResourceNames(PROCESS_DEPLOY_ID).stream().filter(v -> {
                v.endsWith(".png")
            }).collect(Collectors.<String>toList());
        InputStream inputStream = engine.getRepositoryService().getResourceAsStream(PROCESS_DEPLOY_ID,
            resourceNames.get(0));
        File file = new File("d:/resource.png");
        FileUtils.copyInputStreamToFile(inputStream, file);

    }

    // 查询最新版本的流程定义
    public static void lastVersionProcessDefinition(ProcessEngine engine){
        List<ProcessDefinition> definitions = engine.getRepositoryService().createProcessDefinitionQuery()
            .orderByProcessDefinitionVersion().asc().list();
        Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();
        if(definitions != null && !definitions.isEmpty()){
            for(ProcessDefinition def : definitions){
                map.put(def.getKey(), def);
            }
        }
        List<ProcessDefinition> list = new ArrayList<ProcessDefinition>(map.values());
        System.out.println(list);

    }

    // 删除key下面的所有的流程定义
    public static void deleteProcessDefinitionsByKey(ProcessEngine engine){
        String ProcessDefinitionsByKey = "process_2";
        List<ProcessDefinition> definitions = engine.getRepositoryService()
            .createProcessDefinitionQuery()
            .processDefinitionKey(ProcessDefinitionsByKey)
            .list();

        for(ProcessDefinition definition : definitions){
          engine.getRepositoryService().deleteDeployment(definition.getDeploymentId(), true);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值