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

Drools规则检查HashMap键并更新值:运行无错但JSON值未变更

问题分析与解决

核心原因及修复方案

1. 规则逻辑优化与关键修复

原规则存在条件冗余,且未通知Drools工作内存对象变更,导致修改无法被正确同步。以下是修正后的规则:

rule "Update HashMap Value"
when
    // 直接匹配包含目标key的Mobi_Subset对象
    $mobiSubset: Mobi_Subset(fileNameMappings containsKey "templateUUID")
    // 获取该对象持有的Map
    $fileNameMappings: Map() from $mobiSubset.fileNameMappings
then
    $fileNameMappings.put("templateUUID", "metadata.json");
    // 通知Drools工作内存:Mobi_Subset对象已更新
    update($mobiSubset);
end

2. 关键说明

Drools不会自动感知集合(如HashMap)内部的修改操作,因此在修改Map后必须调用update($mobiSubset),让工作内存重新识别对象状态变化,确保修改能被后续流程(如JSON序列化)感知。

3. 额外排查点

如果修改后仍不生效,请确认:

  • JSON反序列化为Mobi_Subset时,fileNameMappings被解析为可变的HashMap(而非不可变Map实现)。
  • 规则执行完成后,是将更新后的Mobi_Subset对象重新序列化为JSON,而非复用原始JSON数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:22:12