Flowable引擎中的DMN决策模型与标记入门指南

Flowable引擎中的DMN决策模型与标记入门指南

flowable-engine A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users. flowable-engine 项目地址: https://gitcode.com/gh_mirrors/fl/flowable-engine

什么是DMN?

决策模型与标记(Decision Model and Notation,简称DMN)是由对象管理组织(OMG)发布的一项标准规范。它提供了一种标准化的方法来描述和组织中的可重复决策过程,确保决策模型能够在不同组织间实现互换。

DMN的核心价值在于:

  1. 使业务决策逻辑可视化
  2. 实现业务规则与技术实现的解耦
  3. 提供标准化的决策建模方法
  4. 支持决策逻辑的复用

DMN定义结构解析

在Flowable引擎中,DMN定义以XML格式存储,其根元素为definitions。每个DMN文件可以包含多个决策定义,但最佳实践建议每个文件只包含一个决策定义,这样更便于后续维护。

典型结构如下:

<definitions xmlns="http://www.omg.org/spec/DMN/20151101"
  namespace="http://www.flowable.org/dmn"
  name="DetermineDiscount">

  <decision id="DET_DISC_1" name="DetermineDiscount">
    <decisionTable id="determineDiscountTable1" hitPolicy="FIRST">
      <!-- 决策表内容 -->
    </decisionTable>
  </decision>

</definitions>

创建DMN决策表实战

1. 决策表编辑器介绍

Flowable提供了直观的决策表编辑器,我们可以通过它来创建和编辑DMN决策表。以下以一个简单的折扣计算场景为例:

业务场景:根据客户类别(青铜、白银、黄金)确定相应的折扣百分比。

2. 命中策略详解

命中策略(Hit Policy)决定了当多个规则匹配时如何确定最终结果。Flowable支持以下7种策略:

单命中策略

  • FIRST:返回第一个匹配的规则结果
  • UNIQUE:确保规则互斥,只能匹配一个规则
  • ANY:匹配规则输出必须一致,否则视为错误
  • PRIORITY:返回优先级最高的匹配规则

多命中策略

  • OUTPUT ORDER:按输出优先级排序返回所有匹配
  • RULE ORDER:按规则顺序返回所有匹配
  • COLLECT:返回所有匹配,并可应用聚合函数(求和、最小值、最大值、计数)

3. 输入输出表达式配置

决策表分为两部分:

  • 蓝色区域:输入表达式,定义规则匹配条件
  • 绿色区域:输出表达式,定义规则执行结果

每个规则由输入条目和输出条目组成。输入条目是JUEL表达式,将与输入变量进行比较;当所有输入条件为真时,对应的输出条目将被执行。

4. 实际案例构建

构建一个完整的折扣决策表:

  1. 设置命中策略为UNIQUE,确保规则互斥
  2. 添加输入表达式customerCat(客户类别)
  3. 添加输出表达式discountPerc(折扣百分比)
  4. 创建规则:
    • 青铜客户 → 5%折扣
    • 白银客户 → 10%折扣
    • 黄金客户 → 20%折扣
    • 默认情况 → 0%折扣(使用空输入条目表示默认规则)

在BPMN流程中集成DMN决策

Flowable的强大之处在于DMN与BPMN的无缝集成。我们可以通过以下步骤在业务流程中使用决策表:

  1. 在BPMN流程中添加决策任务节点
  2. 引用已创建的决策表
  3. 流程变量将自动传递给决策表作为输入
  4. 决策结果将存储为流程变量供后续任务使用

例如,在用户任务中可以通过表达式${discountperc}直接访问决策结果。

DMN XML结构深度解析

完整的DMN 1.1 XML包含以下关键元素:

  1. definitions:根元素,包含命名空间和名称定义
  2. decision:决策定义,包含唯一ID和名称
  3. decisionTable:决策表核心,包含命中策略和规则集
  4. input/output:定义输入输出参数及类型
  5. rule:具体业务规则,包含条件和结果
<definitions xmlns="http://www.omg.org/spec/DMN/20151101" 
             id="definition_78d09dd7" 
             name="Determine Discount" 
             namespace="http://www.flowable.org/dmn">
  <!-- 完整决策表结构 -->
</definitions>

最佳实践建议

  1. 命名规范:为决策和变量使用清晰的业务名称
  2. 规则验证:利用编辑器的验证功能确保规则完整性
  3. 版本控制:决策表变更应纳入版本管理系统
  4. 性能考量:复杂决策表应考虑规则执行顺序
  5. 测试策略:为关键决策表编写自动化测试用例

通过本文的介绍,您应该已经掌握了在Flowable引擎中使用DMN进行业务决策建模的基本方法。DMN的强大之处在于它将业务规则从流程逻辑中解耦出来,使业务专家能够直接参与规则的定义和维护,同时保持与技术实现的良好集成。

flowable-engine A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users. flowable-engine 项目地址: https://gitcode.com/gh_mirrors/fl/flowable-engine

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏鹭千Peacemaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值