springboot整合activity6_Activiti流程定义查询,删除,流程定义“修改(无废话版)--------------------------------------------(四)

1.源码地址:https://github.com/heidaodageshiwo/springbootactivity

流程定义的查询,本质的话就是通过Activiti框架提供的API对act_re_procdef进行查询操作;            

这里我们通过流程定义的KEY查询返回一个集合。然后我们输入流程定义表的部分关键字段;

 

/**
   * 查询流程定义 返回流程定义集合 ---对应act_re_procdef
   */
  @Autowired
  RepositoryService repositoryService;

  @RequestMapping("/procdef_list")
  public String getlist(){
    List<ProcessDefinition> pdList = repositoryService // 获取service类
        .createProcessDefinitionQuery() // 创建流程定义查询
        .processDefinitionKey("myFirstProcess") // 通过key查询
        .list(); // 返回一个集合
    for (ProcessDefinition pd : pdList) {
      System.out.println("ID_:" + pd.getId());
      System.out.println("NAME_:" + pd.getName());
      System.out.println("KEY_:" + pd.getKey());
      System.out.println("VERSION_:" + pd.getVersion());
      System.out.println("===================");
    }
    return "procdef_list";
  }

 

 

当然我们也可以通过流程定义ID来查询某个流程定义;单个返回结果;

 

 @RequestMapping("/procdef_id")
  public String procdef_id(){
    List<ProcessDefinition> pdList = repositoryService // 获取service类
        .createProcessDefinitionQuery() // 创建流程定义查询
//        .processDefinitionKey("myFirstProcess") // 通过key查询
        .processDefinitionId("myFirstProcess:2:7504")
        .list(); // 返回一个集合
    for (ProcessDefinition pd : pdList) {
      System.out.println("ID_:" + pd.getId());
      System.out.println("NAME_:" + pd.getName());
      System.out.println("KEY_:" + pd.getKey());
      System.out.println("VERSION_:" + pd.getVersion());
      System.out.println("===================");
    }
    return "procdef_id";
  }

 

删除:

  /**
   * 删除流程定义
   */
  @RequestMapping("/procdef_delete")
  public void delete(){
    repositoryService
        .deleteDeployment("12501"); // 流程部署ID
    System.out.println("delete OK!");
  }

 

删除失败!

 

本质的话,就是数据库里的数据 有主外键关联,不能删除;

我们实际情况的,假如一个流程定义都不需要了。那那些活动的流程实例也直接了当的级联删除;

所以我们这里要搞级联删除;上代码;

@RequestMapping("/procdef_deleteCascade")
public void procdef_deleteCascade(){
  repositoryService
      .deleteDeployment("12501",true); // 流程部署ID
  System.out.println("delete OK!");
}

 

 

 

 

这时候 任何情况都能直接删除流程定义; 我们开发的时候就用这种;

 

修改:

首先说下结论,流程定义是不能修改的;

这里举例子,假如一个流程定义的流程实例在活动运行中。假如可以修改,

本来要流转到A这个节点,因为流程定义修改了,流转到B这个节点。就不符合当时这个流程实例的初衷了;

所以一般开发的话,不能修改流程定义,我们是通过增加版本号的方式。来实现“修改”的;

 

在设计流程图的时候,这里的Id 对应到数据库里的就是那个Key值  只要Id相同。就算是同一个流程定义;

比如我们可以发布多次,Id一样,到数据库表那边 Key作为版本属性 值会增加;

我们一般启动流程实例的时候,我们用Key来启动。这样启动的时候 就是用的最新版本的流程定义来启动流程实例的;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值