设为首页 | 收藏本站
18515218668

解读DMN盒装函数

发表时间:2026-04-02 18:04作者:Together规则引擎
文章附图

在DMN规范中,盒装函数(正式名称为Boxed Function Definition)是一种用于表示参数化决策逻辑的图形化符号。

3.png

它主要用于定义业务知识模型(Business Knowledge Model,BKM)内的可重用逻辑,使得一套复杂的规则或计算公式可以被多个不同的决策调用。

以下是关于盒装函数的详细解析:

1.图形结构

一个盒装函数由三个核心单元格(Cells)组成,通常垂直排列:

l   类型(Kind):位于顶部的单元格,指明函数的实现方式。可选值包括:FEEL、ONNX、PMML或Java。

如果该单元格留空或标识为FEEL,则表示这是一个标准FEEL函数。

l   参数(Parameters):在括号内列出零个或多个以逗号分隔的参数名称。这些参数定义了函数执行所需的输入变量。

l   主体(Body):一个盒装表达式,代表函数的具体逻辑。它可以是一个简单的FEEL表达式、一个决策表,甚至是另一个嵌套的盒装上下文。

2.函数的分类与映射

盒装函数支持多种后端实现,通过“类型”单元格进行区分:

l   FEEL函数:主体是一个引用了上述参数的FEEL表达式。

l   外部定义函数(Java,PMML,ONNX):这类函数的主体是一个包含映射信息的上下文。

Java:需要在主体中提供类名(class)和公共静态方法的签名(methodsignature)。

ONNX:包含指向模型文件的file IRI以及定义了张量类型和维度的functionsignature。

PMML:包含指向PMML文档的documentIRI和可选的model名称。

3.元模型定义(Metamodel)

在DMN的抽象语法层,盒装函数对应于FunctionDefinition类。

l   它继承自Expression基类,这意味着它可以作为其他表达式的一部分被嵌套使用。

l   它的主要属性包括一组FormalParameter(形式参数,类型为InformationItem)和一个body(主体表达式)。

l   它通过kind属性来区分是原生FEEL逻辑还是对外部AI模型(如ONNX)的调用。

4.执行语义

在执行层面,盒装函数被视为一个具有词法闭包的Lambda表达式。当该函数被调用时,系统会执行一个绑定(Binding)过程:将调用方提供的实际参数值赋给函数内部的形式参数,然后在这一语境下评估主体表达式的值并返回结果。

示例应用:

在规范提供的示例中,计算“每月还款额”的PMT逻辑就是一个典型的盒装函数。它定义了rate(利率)、term(期限)和amount(金额)三个参数,主体则是执行具体金融计算的数学公式。

文章分类: DMN建模
分享到:
精选文章
公众号
关于我们
联系方式
让您的业务更自动化、智能化!
联系邮箱:   zhangyi@rongtek.com      wangyilong@rongtek.com
咨询热线:185 1521 8668        183 3562 2627
电话:010-8200081