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

如何在Kogito自定义任务中匹配多自定义对象的输入输出变量

解决多自定义对象输入输出的变量映射问题

1. 在BPMN自定义任务中明确输入输出的映射规则

在BPMN编辑器配置自定义任务时,需显式定义输入对象与对应输出变量的关联关系:

  • 输入参数:给每个自定义对象输入添加关联标识,比如针对输入userInfo,额外添加参数userInfo_outputVar并赋值为目标输出变量名processedUser;同理,输入orderInfo对应添加orderInfo_outputVar赋值为processedOrder。
  • 输出参数:在自定义任务的输出配置中预留好对应变量位,后续由处理器填充值。

2. 在KogitoWorkItemHandler处理器中解析映射并赋值

重写executeWorkItem方法时,从WorkItem中读取输入参数,解析映射关系后将处理结果对应放入返回的Map:

@Override
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
    // 获取所有输入参数
    Map<String, Object> parameters = workItem.getParameters();
    
    // 提取输入对象与对应输出变量名
    UserInfo userInfo = (UserInfo) parameters.get("userInfo");
    String userOutputVar = (String) parameters.get("userInfo_outputVar");
    
    OrderInfo orderInfo = (OrderInfo) parameters.get("orderInfo");
    String orderOutputVar = (String) parameters.get("orderInfo_outputVar");
    
    // 处理自定义对象
    UserInfo processedUser = processUser(userInfo);
    OrderInfo processedOrder = processOrder(orderInfo);
    
    // 按指定输出变量名赋值
    Map<String, Object> results = new HashMap<>();
    results.put(userOutputVar, processedUser);
    results.put(orderOutputVar, processedOrder);
    
    // 完成任务并返回结果
    manager.completeWorkItem(workItem.getId(), results);
}

3. 利用BPMN自定义属性简化映射配置

若不想添加过多冗余参数,可借助BPMN元素的**扩展属性(Extension Elements)**存储映射关系:

  • 在自定义任务的扩展属性中添加JSON格式的映射配置,比如:
    {"userInfo": "processedUser", "orderInfo": "processedOrder"}
    
  • 在处理器中读取并解析该配置,批量处理输入输出:
    // 获取自定义扩展属性
      Map<String, Object> extensions = (Map<String, Object>) workItem.getParameters().get("extensions");
      String mappingJson = (String) extensions.get("input-output-mappings");
      Map<String, String> ioMappings = new ObjectMapper().readValue(mappingJson, new TypeReference<Map<String, String>>() {});
      
      // 批量处理并赋值
      Map<String, Object> results = new HashMap<>();
      for (Map.Entry<String, String> entry : ioMappings.entrySet()) {
          Object inputObj = parameters.get(entry.getKey());
          Object processedObj = processCustomObject(inputObj); // 按对象类型分支处理的通用方法
          results.put(entry.getValue(), processedObj);
      }
    

4. 关键注意点

  • 确保输入对象类型在处理器中能正确强转,或通过类型判断实现通用处理逻辑。
  • 保证流程中所有输出变量名唯一,避免变量覆盖冲突。
  • 调试时可打印workItem.getParameters()的内容,确认映射信息是否正确传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:01:32