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

如何在Drools DMN/Kogito中基于父决策表调用子决策表?

基于DMN实现按年龄分组调用对应决策表的方案

1. 先做年龄分组决策表

创建名为AgeGroupDecision的决策表,核心逻辑如下:

  • 输入:Age(数值类型)
  • 输出:AgeGroup(字符串类型,可选值OLD/YOUNG)
  • 规则:
    • 当Age > 50时,输出OLD
    • 当Age < 50时,输出YOUNG
    • (可选补充)当Age = 50时,输出自定义值(比如UNKNOWN),避免无匹配规则导致流程中断

2. 定义两个业务决策表

分别创建对应不同年龄组的业务决策表:

  • OldPersonDecision:实现针对OLD群体的业务逻辑,输入输出根据实际业务需求定义(可复用Age或新增其他输入)
  • YoungPersonDecision:实现针对YOUNG群体的业务逻辑,输入输出同理匹配业务需求

3. 实现分支调用逻辑

通过DMN的决策引用能力,创建顶层决策FinalDecision来串联逻辑,有两种常用方式:

方式一:用决策表实现分支

创建FinalDecision决策表:

  • 输入:AgeGroup(来自AgeGroupDecision的输出)、Age(若子决策表需要)
  • 输出:业务结果(与两个子决策表的输出类型一致)
  • 规则:
    • 当AgeGroup = OLD时,直接引用OldPersonDecision的结果作为输出
    • 当AgeGroup = YOUNG时,直接引用YoungPersonDecision的结果作为输出

DMN引擎会自动识别决策引用,先执行被引用的决策表,再返回结果。

方式二:用上下文决策实现分支

如果偏好结构化分支,可使用DMN的**上下文(Context)**决策类型:

  1. 上下文输入为AgeGroup和Age
  2. 定义两个上下文条目:
    • 条件:AgeGroup = OLD,执行OldPersonDecision并返回其结果
    • 条件:AgeGroup = YOUNG,执行YoungPersonDecision并返回其结果
  3. 上下文的输出即为对应分支的业务结果

4. 组装决策服务

将AgeGroupDecision、OldPersonDecision、YoungPersonDecision和FinalDecision打包成一个决策服务,指定执行顺序:先运行AgeGroupDecision,再根据结果触发对应子决策,最终返回FinalDecision的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:01:00