Activiti表的操作测试

本文详细介绍使用Activiti流程引擎进行流程定义的查询、启动、任务处理及删除等操作,包括流程部署信息、流程定义数据的查询,流程图查看,个人任务查询与完成,以及流程定义的删除。

查询流程部署信息表
表 act_re_deployment

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;

public class Text6 {
    //act_re_deployment 	部署信息表
    public static void main(String[] args) {
        //查询部署的流程定义
        ProcessEngine pe=
                ProcessEngines.getDefaultProcessEngine();
        //查询部署对象的信息
        Deployment d=pe.getRepositoryService()
                .createDeploymentQuery()
                .list().get(0);
        System.out.println(d.getId()+","+d.getName()+","+d.getDeploymentTime());


    }
}

查询流程定义数据表

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;

public class Text61 {
    //act_re_procdef      流程定义数据表
    public static void main(String[] args) {
        //查询部署的流程定义
        ProcessEngine pe=
                ProcessEngines.getDefaultProcessEngine();

        //查询流程定义的信息
        ProcessDefinition definition=
                pe.getRepositoryService()
                .createProcessDefinitionQuery()
                //.deploymentId("1") //根基id查找
                //.processDefinitionKey("myProcess_1")//通过流程定义的key值进行查询,只能得到一个值,是数据库最先查到key
                .processDefinitionKeyLike("%1%")//通过流程定义的key模糊查询
                .orderByProcessDefinitionVersion().asc()
                //.orderByProcessDefinitionVersion().desc()
                .list().get(0);
        System.out.println("流程定义的id:"+definition.getId());
        System.out.println("流程定义的key"+definition.getKey());
        System.out.println("流程定义的name"+definition.getName());
        System.out.println("流程定义的资源文件:"+definition.getResourceName());
        System.out.println("流程定义的图片文件:"+definition.getDiagramResourceName());
        System.out.println("流程定义的版本:"+definition.getVersion());

    }
}

删除流程定义
act_re_deployment 部署信息表

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;

public class Text63 {
    //删除流程定义
    public static void main(String[] args) {
        ProcessEngine pe= ProcessEngines.getDefaultProcessEngine();
        //act_re_deployment 	部署信息表
        pe.getRepositoryService().deleteDeployment("1");
        System.out.println("删除");
    }
}

查询key值相同的多版本流程定义

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;

import java.util.List;

public class Text64 {
    //查询同key的多版本流程定义
    public static void main(String[] args) {
        ProcessEngine pe=ProcessEngines.getDefaultProcessEngine();
        List<ProcessDefinition> list=pe.getRepositoryService()
                .createProcessDefinitionQuery()
                .processDefinitionKey("myProcess_1")
                .list();
        for(ProcessDefinition definition:list){
            System.out.println("流程定义的id:"+definition.getId());
            System.out.println("流程定义的key:"+definition.getKey());
            System.out.println("流程定义的name:"+definition.getName());
            System.out.println("流程定义的资源文件:"+definition.getResourceName());
            System.out.println("流程定义图片文件:"+definition.getDiagramResourceName());
            System.out.println("流程定义的版本:"+definition.getVersion());

        }
    }
}

删除key值相同的多版本流程定义

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;

import java.util.List;

public class Text65 {
    //删除同key的多版本流程定义
    public static void main(String[] args) {
        //查询部署的流程定义
        ProcessEngine pe=
                ProcessEngines.getDefaultProcessEngine();
        //删除同key的多版本流程定义
        List<ProcessDefinition> list= pe.getRepositoryService()
                .createProcessDefinitionQuery()
                .processDefinitionKey("myProcess_1")
                .orderByProcessDefinitionVersion().desc()
                .list();
        for (ProcessDefinition definition : list) {
            System.out.println("版本:"+definition.getVersion());
            pe.getRepositoryService()
                    .deleteDeployment(definition.getDeploymentId());
        }
    }
}

查看流程图

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

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

public class Text70 {
    //查看流程图
    public static void main(String[] args) {
        //获得流程引擎
        ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
        try {
            //得到流程定义
            ProcessDefinition processDefinition=
                    processEngine.getRepositoryService()
                    .createProcessDefinitionQuery()
                    .deploymentId("2501")
                    .list().get(0);
            String name=processDefinition.getDiagramResourceName();
            System.out.println("流程定义的图片:"+name);
            File f=new File("e:\\"+name);

            //通过名字得到输入流,参数:部署id和文字
            InputStream
                    inputStream=processEngine.getRepositoryService().getResourceAsStream("2501",name);

                FileUtils.copyInputStreamToFile(inputStream,f);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

启动流程定义

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.runtime.ProcessInstance;

public class Text80 {
    public static void main(String[] args) {
        ProcessEngine pe= ProcessEngines.getDefaultProcessEngine();

        //启动流程自定义
        //查看act_ru_exection 查看流程信息
        //查看act_ru_task任务
        ProcessInstance instance=
                pe.getRuntimeService()
                .startProcessInstanceByKey("myProcess_1");
        System.out.println(instance.getName()+","+instance.getId());

    }
}

查询个人任务
act_ru_task 运行时任务节点表


import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.task.Task;

import java.util.List;

public class Text90 {
    //act_ru_task
    public static void main(String[] args) {
        ProcessEngine pe=ProcessEngines.getDefaultProcessEngine();
        //查询个人任务
        List<Task> list=

        pe.getTaskService()
        .createTaskQuery()
        .taskAssignee("张三")
        .list();
        for (Task task : list) {
            System.out.println(task.getId()+","+task.getCreateTime()+","+task.getExecutionId()+"," +
                    task.getProcessDefinitionId());
        }

    }
}

完成个人任务
act_ru_execution 运行时流程执行实例表
act_ru_task 运行时任务节点表

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;

public class Text92 {
    //完成个人任务
    //act_ru_execution 任务执行时的表
    //act_ru_task  任务表
    public static void main(String[] args) {
        ProcessEngine pe=
                ProcessEngines.getDefaultProcessEngine();
        //pe.getTaskService().complete("10004");//ru_task 的 id
        pe.getTaskService().complete("12502");
        System.out.println("完成任务");
    }

}

查看个人完成任务历史

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.history.HistoricTaskInstance;

import java.util.List;

public class Text91 {
    //act_hi_taskinst
    public static void main(String[] args) {
        //查询个人的历史任务
        ProcessEngine pe=
                ProcessEngines.getDefaultProcessEngine();
        List<HistoricTaskInstance> list=
                pe.getHistoryService()
                .createHistoricTaskInstanceQuery()
                .taskId("10004")// .taskAssignee("张三")//.executionId("10001")
                .list();
        for (HistoricTaskInstance historicTaskInstance:list) {
            System.out.println(historicTaskInstance.getStartTime()
                    +","+historicTaskInstance.getProcessDefinitionId());

        }
    }
}

设置任务变量

### 清空Activiti工作流引擎数据库的安全方法 为了安全地清空Activiti工作流引擎的数据库,建议遵循以下步骤来确保不会影响现有业务逻辑和数据一致性: #### 1. 停止新流程实例启动 在清理之前停止任何新的流程实例启动是非常重要的。这可以通过禁用应用程序中新流程实例的创建功能实现。 #### 2. 完成或终止现有的流程实例 确保所有正在运行的流程实例都已经完成或者被显式终止。未处理完毕的工作项可能会导致数据不一致或其他问题[^2]。 对于仍在`ACT_RU_EXECUTION`、`ACT_RU_IDENTITYLINK`、`ACT_RU_TASK`以及`ACT_RU_VARIABLE`中存在的记录,应当先通过API调用来结束对应的流程实例。 ```java runtimeService.deleteProcessInstance(processInstanceId, "清除原因"); ``` #### 3. 删除历史数据 一旦确认没有活跃的流程实例存在,则可以考虑删除历史数据。注意,在某些情况下可能希望保留这些信息作为审计追踪的一部分;因此,此操作需谨慎评估后再决定是否执行。 ```sql DELETE FROM ACT_HI_PROCINST; DELETE FROM ACT_HI_ACTINST; DELETE FROM ACT_HI_VARINST; -- 继续删除其他相关的历史格... ``` #### 4. 清理通用和其他临时 最后一步是对那些不属于特定流程定义的部分进行清理,比如`ACT_GE_BYTEARRAY`中存储的文件资源等。同样需要注意是否有依赖关系需要维护。 ```sql TRUNCATE TABLE ACT_GE_BYTEARRAY CASCADE; -- 使用CASCADE选项自动处理外键约束 ``` 以上SQL语句仅作示范用途,请根据实际情况调整具体命令并测试其效果再应用于生产环境。 #### 警告事项 - **备份重要数据**:在执行上述任一动作前务必做好完整的数据库备份。 - **验证脚本准确性**:确保所使用的SQL语句适用于当前版本的Activiti及其配置方式。 - **了解后果**:清楚理解每条指令的影响范围,特别是涉及到永久性删除的数据不可恢复。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值