Camunda工作流引擎使用经验记录

在Camunda BPM中,第一步就是将对应的流程设计图进行部署,部署完成后,意味着流程将会定义。本次记录流程部署后,流程定义状态激活和挂起的含义。

激活和挂起的含义

  1. 激活(Active)

    • 含义:流程定义处于激活状态时,系统可以基于该定义启动新的流程实例,且已经启动的流程实例可以继续执行。
    • 特点
      • 可以启动新的流程实例。
      • 已经运行的流程实例可以继续执行。
  2. 挂起(Suspended)

    • 含义:流程定义处于挂起状态时,不能基于该定义启动新的流程实例,且已经启动的流程实例将暂停执行,不能继续进行任何操作,直到流程定义被重新激活。
    • 特点
      • 不能启动新的流程实例。
      • 已经运行的流程实例将暂停,不能继续执行。

默认行为

当在Camunda中部署一个新的流程定义时,默认情况下它是处于激活状态的。即系统可以立刻基于这个新的流程定义启动流程实例,并且这些实例会按设计正常运行。

激活和挂起的操作

可以通过Camunda的管理接口(例如REST API、Java API)来手动激活或挂起某个流程定义或者流程实例。

  • 挂起流程定义:阻止基于该定义启动新的流程实例,并暂停所有已经运行的实例。
  • 激活流程定义:允许基于该定义启动新的流程实例,并恢复所有已经挂起的实例。
  • 挂起流程实例:暂停该实例的执行。
  • 激活流程实例:恢复该实例的执行。

同时在Camunda引擎中,操作流程定义和流程实例时使用的ID不同。

  • 流程定义ID(Process Definition ID)

    • 这是与某个特定流程定义相关的ID。它标识了一个流程模型的版本。在部署新版本的流程模型时,Camunda会生成一个新的流程定义ID。
    • 当希望激活或挂起某个流程定义时,使用的就是流程定义ID。这会影响基于该定义的所有流程实例。
  • 流程实例ID(Process Instance ID)

    • 这是与某个特定流程实例相关的ID。它标识了某个具体的流程运行实例。
    • 当希望激活或挂起某个特定的流程实例时,使用的就是流程实例ID。这只会影响该特定实例,不会影响其他基于同一流程定义的实例。
  • 基于Java spring boot下,使用方法如下:
    • /** 挂起指定流程定义 **/    
      public void suspendProcessDefinition(String processDefinitionId) {
          repositoryService.suspendProcessDefinitionById(processDefinitionId);
      }
      /** 激活指定流程定义 **/  
      public void activateProcessDefinition(String processDefinitionId) {
          repositoryService.activateProcessDefinitionById(processDefinitionId);
      }
      /** 挂起指定流程实例 **/  
      public void suspendProcessInstance(String processInstanceId) {
          runtimeService.suspendProcessInstanceById(processInstanceId);
      }
      /** 激活指定流程实例 **/  
      public void activateProcessInstance(String processInstanceId) {
          runtimeService.activateProcessInstanceById(processInstanceId);
      }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值