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

Red Hat Decision Manager中DMN+FEEL实现一对多关系的方法咨询

在Red Hat Decision Manager中用DMN+FEEL实现一对多值映射

核心方案:决策表输出列设为列表类型,直接用FEEL列表语法定义多值

你遇到的问题本质是把决策表的输出从单值改成列表(List)类型,结合FEEL原生的列表语法就能实现客户到多值集合的映射,具体步骤如下:

  1. 定义数据类型

    • 输入:创建ClientIdentifier类型(字符串,取值为"A"/"B"/"C")
    • 输出:创建MatchingValuesList类型(列表,内部元素类型根据你的值类型选择,比如Number)
  2. 配置决策表

    • 输入列:绑定到客户标识符变量,类型选择ClientIdentifier,条件单元格直接写"A"、"B"、"C"
    • 输出列:绑定到结果列表变量,类型选择MatchingValuesList,规则行的输出单元格直接用FEEL列表语法赋值:
      • 客户A对应的输出:[1, 2, 5]
      • 客户B对应的输出:[6, 9, 22]
      • 客户C对应的输出:如果是允许任意数值,可写range(1, 1000)(生成1到1000的整数列表);如果是业务上允许所有可能值,也可以根据实际场景用[*](需结合上下文的取值范围),或者直接定义一个包含所有合法值的列表
  3. 替代方案:FEEL上下文+case表达式
    如果不想用决策表,也可以直接用FEEL的case表达式实现映射,更灵活:

    case client_identifier
      when "A" then [1, 2, 5]
      when "B" then [6, 9, 22]
      when "C" then range(1, 100) // 按需调整范围
      else [] // 处理未匹配的客户
    end
    

为什么之前的方法无效?

  • Context不合适:Context更适合定义结构化数据,若未将其与决策表的输入输出正确绑定,无法直接实现动态映射
  • 逗号分隔字符串:FEEL不会自动将字符串拆分为列表,需要额外用split()函数解析(比如split("1,2,5", ",")),但解析后是字符串列表,还需转成对应类型,远不如直接用列表类型高效

内容的提问来源于stack exchange,提问作者Apixio-wwells

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:55:10