activiti部署与流程删除相关
最近学习完activiti的基本知识,做⼀些流程相关的东西,在删除部署信息以及流程实例时出现问题
报错显⽰不能删除,并且链接了⼀些外键,因此查了原因,需要级联删除;
Activiti 删除部署与流程实例介绍: 
  很多新⼿在刚接触的Activiti的时候,当想删除该流程的时候会感到头痛吧!当然包括我也⼀样,想删除,那么多表也不知道从哪⾥删除,瞎弄了好久还是⽆法删除完。Activiti 删除部署,就是删除上传的流程。删除流程实例,就是删除startProcessInstanceByKey()保存成功的任务。
Activiti 删除部署:
  删除部署需要获取到部署Id(有多种⽅式):
      Task ateTaskQuery() // 创建任务查询
                .taskId(taskId) // 根据任务id查询
                .singleResult();
      String ProcessDefinitionId(); // 获取流程定义id
      /**
      *  createProcessDefinitionQuery() // 创建流程定义查询
      *  processDefinitionId(processDefinitionId) // 根据流程定义id查询   
      **/
      ProcessDefinition ateProcessDefinitionQuery()
                                .processDefinitionId(processDefinitionId)
                                .singleResult();
      String deploymentId =  DeploymentId();  //部署id
      或者:   
      /**
      *  .createHistoricProcessInstanceQuery() //对应历史的流程实例表
      *  processInstanceBusinessKey(key)  //key表⽰的是业务的BusinessKey 
      **/
      HistoricProcessInstance hpi = ateHistoricProcessInstanceQuery()
                          .processInstanceBusinessKey(key)
                          .singleResult();
      ProcessDefinition processDefinition= ateProcessDefinitionQuery()                 
                               .ProcessDefinitionId())
                               .singleResult();
      String deploymentId =  DeploymentId();  //部署id
  删除部署信息:
      repositoryService.deleteDeployment(部署id); //普通删除,如果当前部署的规则还存在正在制作的流程,则抛异常
      repositoryService.deleteDeployment(部署id,boolean值);  //级联删除,如果 boolean值为true时,会删除所有和当前部署的规则相关的信息,包括历史的信息。
Activiti 删除流程实例:
  获取该流程的实例id:   
      /**
      *  .createHistoricProcessInstanceQuery() //对应历史的流程实例表
      *  processInstanceBusinessKey(key)  //key表⽰的是业务的BusinessKey 
      **/ 
      HistoricProcessInstance hpi = ateHistoricProcessInstanceQuery()
                          .processInstanceBusinessKey(key)
                          .singleResult();
      String processInstanceId = Id(); //流程实例ID
  判断该流程实例是否结束,未结束和结束两者删除表的信息是不⼀样的。
      ProcessInstance pi = ateProcessInstanceQuery()//
                        .processInstanceId(processInstanceId)// 使⽤流程实例ID查询
                        .singleResult();     
      if(pi==null){
        //该流程实例已经完成了
        historyService.deleteHistoricProcessInstance(processInstanceId);
createprocessa      }else{
        //该流程实例未结束的
        runtimeService.deleteProcessInstance(processInstanceId,"");
        historyService.deleteHistoricProcessInstance(processInstanceId);//(顺序不能换)
      }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。