You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flowable处理CMMN案例时能否切换至另一模型并生成独立案例?

在Flowable CMMN中切换至独立的新CMMN案例:实现方案

嘿,作为Flowable的新手,你的这个需求其实非常常见,而且完全可以实现!下面我就给你详细拆解怎么操作:

核心结论

你完全可以在一个CMMN案例(比如贷款请求)的处理过程中,触发创建另一个完全独立的CMMN案例(比如捐赠请求),两者拥有各自独立的生命周期,互不干扰。

具体实现步骤

1. 触发新案例的创建

你可以通过两种方式来触发新案例的启动:

  • 人工触发:在原贷款案例的某个人工任务节点(比如“突发情况处理”),由处理人操作启动新的捐赠案例。
  • 自动触发:在原案例的某个自动节点(比如监听特定异常事件的节点),系统自动启动新案例。

不管哪种方式,核心都是调用Flowable的CmmnRuntimeService来启动新案例,Java代码示例如下:

// 获取Flowable引擎的CmmnRuntimeService实例
CmmnRuntimeService cmmnRuntimeService = processEngine.getCmmnRuntimeService();

// 准备传递给新案例的变量(比如原贷款案例的ID、用户信息等)
Map<String, Object> caseVars = new HashMap<>();
caseVars.put("originalLoanCaseId", "LOAN-CASE-123"); // 原贷款案例的实例ID
caseVars.put("applicantName", "张三");
caseVars.put("donationAmount", 5000.0);

// 启动独立的捐赠案例
CaseInstance donationCase = cmmnRuntimeService.createCaseInstanceBuilder()
    .caseDefinitionKey("donation-request") // 你的捐赠CMMN模型定义的key
    .variables(caseVars)
    .start();

2. 处理原案例的状态

根据你的业务需求,原贷款案例可以选择:

  • 终止:如果贷款请求已经完全转为捐赠,直接终止原案例:
    cmmnRuntimeService.terminateCaseInstance("LOAN-CASE-123");
    
  • 暂停:如果后续可能还需要恢复处理,可暂停原案例:
    cmmnRuntimeService.suspendCaseInstance("LOAN-CASE-123");
    
  • 标记状态:给原案例添加一个caseStatus变量标记为“已转捐赠”,方便后续查询统计。

3. 案例间的关联(可选)

如果需要后续能追溯两个案例的关联关系,可以在两个案例的变量中互相存储对方的实例ID:

  • 在启动捐赠案例时,把原贷款案例ID存入捐赠案例变量(如上面代码的originalLoanCaseId)
  • 同时更新原贷款案例的变量,存入新捐赠案例的ID:
    cmmnRuntimeService.setCaseInstanceVariable("LOAN-CASE-123", "relatedDonationCaseId", donationCase.getId());
    

关键注意点

  • 两个案例是完全独立的:各自有自己的实例ID、执行日志和生命周期,一个案例的状态变化不会影响另一个。
  • 权限控制:要确保执行创建新案例操作的用户有对应的Flowable权限(比如CREATE_CASE_INSTANCE权限)。
  • 数据一致性:传递变量时要确保关键数据的准确性,避免业务信息丢失。

这样就能完美实现你需要的“贷款请求转独立捐赠请求”的业务场景啦!

内容的提问来源于stack exchange,提问作者Sara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:38:12