首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >您是否已经为DMN规则平台做好了准备?

您是否已经为DMN规则平台做好了准备?

原创
作者头像
Together规则引擎
发布2025-09-15 20:21:10
发布2025-09-15 20:21:10
110
举报

DMN标准主要是为了让主题专家和那些不是程序员的“业务用户”也能轻松使用。DMN保证了不用写代码也能实现可执行的决策逻辑,它通过标准图表(DRD)、标准表格格式(盒装表达式)和对业务人员友好的表达式语言(FEEL)来做到这一点。不过,你可能经常听到有人说这对非程序员来说太难了。其实这不完全对,但确实不是每个业务用户都能做到......就像我们在给很多公司内部的业务用户做DMN培训时看到的,他们都能很快学会DMN的建模方法,并且能把它用到工作中。

要说谁能学会DMN,谁学不会,其实挺难说的。我们以前说过,如果你会用Excel里的“公式”功能,那你就能学会。我们还说过,你需要了解数据类型、表达式和函数这些基本概念。但这听起来可能有点抽象。这里有个简单的测试,看看DMN对你来说有多难。这个测试不需要你已经了解DMN,只需要你能应用一些关于它的知识,就像你在我们的DMN培训中学到的那样。(当然,在培训中,我们会通过实际操作、重复练习和测试来加强这些知识。

DRD

决策需求图描述了决策和支撑决策所需的数据之间的逻辑依赖关系。输入数据(图中的椭圆)是在逻辑执行时提供的值。决策(图中的矩形)包含一个值表达式,这个表达式会根据输入值来计算输出值。决策的输入是由传入的实心箭头连接的决策和输入数据,这叫做信息需求。这些输入是决策值表达式中的变量,只能引用直接信息要求的变量。DRD中的波浪线称为知识源,它代表了决策逻辑的背景信息,而不是信息要求。

Untitled
Untitled

问题1.基于该解释,上图中贷款资格预审的值表达式可能引用了哪些变量?

信用评分、负担能力类别

信用评分、负担能力类别、贷款审批指引

信用评分、首付款、购买价格、月收入、贷款利率pct

信用评分、负担能力类别、首付款、购买价格、月收入、贷款利率 pct

决策表

DMN中最熟悉的盒装表达式类型是决策表,如下所示。

贷款资格预审
贷款资格预审

以下是它们的工作原理。左侧浅蓝色的列是输入。输入名称下方是其数据类型,其中还可能包括对允许值的约束,例如数值范围或枚举值。右侧深蓝色的列是输出。每个编号的行都是一个决策规则。规则中的输入单元格表示对输入的测试,即true或false。例如,对于规则1的第1列,如果信用评分大于 720,则该单元格为true,否则为false。对于规则 1第2列,如果“负担能力类别”为“负担得起”或“勉强负担”,则单元格为真。如果规则中的所有条件单元格都为true,则称该规则匹配,并选择输出列中的表达式作为决策表输出。

如果对于输入值的某种组合,多个规则可能匹配,则称这些规则重叠。在这种情况下,将使用左上角的命中策略代码,此处为A表示Any。命中策略A意味着如果表具有相同的输出值,则它们可能包含重叠的规则。例如,此处的“信用评分”610和“负担能力”类别“负担能力”的组合与具有相同输出值的规则6和7匹配。

还有几件事要提。

条件单元格中的数值范围使用规则2-5中的格式。方括号表示包括端点;括号表示排除终结点。例如,规则2测试大于680且小于或等于720的条件。

条件单元格中的连字符表示输入在此规则中无关紧要;默认情况下,该单元格为true。

问题2.信用评分720,负担能力类别“负担不起”的贷款资格预审输出是多少?

  1. “可能通过审批”
  2. “可能会被批准”
  3. “可能通不过审批”
  4. null(不匹配)

函数

商业知识模型(BKM)是决策逻辑的单元,表述为建模者定义的函数,这意味着其值表达式引用BKM定义中指定的参数。在DRD中,BKM 连接到一个决策,该决策通过称为知识要求的虚线箭头调用它。在调用中,决策将每个参数的值(称为参数)传递给 BKM,BKM 将这些值插入其值表达式并将结果返回给决策。此外,FEEL表达式语言还提供了大量的内置函数,无需知识需求即可调用。

调用由决策的值表达式定义,如前所述,该值表达式只能引用决策的信息要求。具体而言,它包括将决策输入映射到每个参数的表达式。BKM允许建模者创建可重用的决策逻辑,因为不同的决策(通常在不同的DMN模型中)可以向BKM发送自己的特定参数值。

下面您会看到一个名为贷款摊销公式的BKM,它给出了固定利率住房贷款的每月还款额及其文件。在 BKM 定义中,参数名称和数据类型用括号括起来,括号下方是 BKM 的值表达式。该 BKM 的第二个参数是以小数(而不是百分比)表示的贷款年利率。这个公式只是算术,但它很复杂且难以记住,非常适合 BKM。如果你有BKM,你不需要知道如何派生它;您只需要了解其参数即可。

付款计算
付款计算

DRD显示按决定调用BKM贷款摊销公式 每月付款如下所示。输入数据“贷款利率pct” 是以百分比表示的年贷款利率。

Untitled
Untitled

调用表达式的格式为BKM name(arg1, arg2, arg3),其中 arg1、arg2 和 arg3 是每个BKM参数值的表达式。顺序必须与BKM定义中的参数顺序匹配。

问题3.BKM的参数是什么?

  1. 贷款金额、贷款利率、贷款期限
  2. 贷款金额、贷款利率 pct、贷款期限
  3. p、r、n
  4. 本金、利率、月数

问题4.什么是调用表达式?

  1. 贷款摊销公式(贷款金额、贷款利率、贷款期限)
  2. 按揭贷款(p,r,n)
  3. 按揭贷款(p,r/100,n)
  4. 贷款摊销公式(贷款金额、贷款利率 pct/100、贷款期限)

答案

你写下了你对这四个问题的答案吗?如果没有,请立即返回并执行此操作。以下是答案。

问题1.正确答案是 a. 信用评分,负担能力类别。决策的价值表达可能仅引用其直接信息要求,而其中只有两个。

问题2.正确答案是 c.“可能通不过审批”。信用评分 720 适用于规则 2、3 和 7。 负担能力类别“负担不起”适用于规则 6 和 7。因此,唯一匹配的规则是规则 7,“可能通不过审批”。

问题3.正确答案是 c. p, r, n。BKM的参数列在BKM定义的括号中。

问题4.正确答案是d.贷款摊销公式(贷款金额,贷款利率pct/100,贷款期限)。表达式以 BKM 名称开头,而不是以决策名称开头。由于“贷款利率pct”是百分比,因此必须将其除以100才能将其转换为小数,即参数r的格式。

你准备好用DMN了吗?

那么,你怎么看这四个问题呢?如果你都搞定了,那肯定没问题。就算你漏了一个,但只是些小细节,而且你明白了解释,那也行。否则,如果上面的话你还是觉得云里雾里的,可能DMN不太适合你。在我们的DMN培训里,我们会一遍遍地讲,还会让你亲自用这个工具,但你得先弄懂基础。对,得有点数学知识(不过就一点点)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档