news 2026/4/16 15:24:17

ruoyi-vue2集成DMN规则引擎实现Dish智能出餐决策

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ruoyi-vue2集成DMN规则引擎实现Dish智能出餐决策

前言

DMN决策引擎的核心价值在于将复杂的业务决策逻辑从程序代码中剥离出来,通过标准化的模型进行可视化管理和执行。它在实战中的应用非常广泛,特别是在需要频繁调整业务规则、追求流程自动化与智能化的场景中。

具体应用场景有:
金融与风控​: 信贷审批、金融风险评估、反洗钱检查、
供应链与生产​: 保险定价、供应链管理、生产调度
营销与客户服务​: 客户分群、精准营销
其他创新场景​: 教育分班、智能餐饮

今天我们以一个经典的案例智能餐饮来讲解实战中的用法。

决策规则

请点击这个Dish查询规则建模,以下我们拆解一下这个DMN规则表的含义。

这个Dish决策表规则是根据当前的气温(tempeature)和日期类型(dayType)决策上什么餐食。主要有三个决策表构成, 核心是Dish-Decision表。 Season Dicision和Guest Count 以输出结果传递给Dish Decision决策表。 Season Dicision规则描述: tempeature>30, 得到season: Summary tempeature<10, 得到season: Winter tempeature=[10..30] 得到season: Spring Guest Count规则描述: dayType="Weekday", 客人数量(guestCount): 4 dayType="Holiday", 客人数量(guestCount): 10 dayType="Weekend", 客人数量(guestCount): 15 Dish-Decision规则描述: season=winter, guestCount<=8, desiredDish='Spareribs' season=winter, guestCount>8, desiredDish='Pasta' season=Summer, guestCount>10, desiredDish='Light salad' season=Summer, guestCount<=10, desiredDish='Beans salad' season=Spring, guestCount<10, desiredDish='Stew' season=Spring, guestCount>=10, desiredDish='Steak'

流程建模

  • 需求描述
我们现在模拟一个流程, 用户输入当天的气温和日期类型(工作日,假期,周末), 系统决策提供什么类型的餐食。
  • 模型结构

  • 模型定义
<?xml version="1.0" encoding="UTF-8"?><bpmn:definitionsxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"xmlns:camunda="http://camunda.org/schema/1.0/bpmn"xmlns:di="http://www.omg.org/spec/DD/20100524/DI"id="Definitions_1"targetNamespace="http://bpmn.io/schema/bpmn"><bpmn:processid="Process_8887"name="出餐决策"isExecutable="true"><bpmn:startEventid="Event_1i7sxll"><bpmn:outgoing>Flow_1rzb9vm</bpmn:outgoing></bpmn:startEvent><bpmn:sequenceFlowid="Flow_1rzb9vm"sourceRef="Event_1i7sxll"targetRef="Activity_0fzwoab"/><bpmn:userTaskid="Activity_0fzwoab"name="就餐信息"camunda:assignee="${startUser}"><bpmn:extensionElements><camunda:formData><camunda:formFieldid="temperature"label="气温"type="long"/><camunda:formFieldid="dayType"label="日期"type="string"/></camunda:formData></bpmn:extensionElements><bpmn:incoming>Flow_1rzb9vm</bpmn:incoming><bpmn:outgoing>Flow_0v0zyja</bpmn:outgoing></bpmn:userTask><bpmn:sequenceFlowid="Flow_0v0zyja"sourceRef="Activity_0fzwoab"targetRef="Activity_08c0387"/><bpmn:businessRuleTaskid="Activity_08c0387"name="决策规则"camunda:resultVariable="desiredDish"camunda:decisionRef="dish-decision"camunda:mapDecisionResult="singleEntry"><bpmn:incoming>Flow_0v0zyja</bpmn:incoming><bpmn:outgoing>Flow_1ajvk92</bpmn:outgoing></bpmn:businessRuleTask><bpmn:sequenceFlowid="Flow_1ajvk92"sourceRef="Activity_08c0387"targetRef="Activity_0jobe9d"/><bpmn:serviceTaskid="Activity_0jobe9d"name="出餐程序"camunda:delegateExpression="${dishTask}"><bpmn:incoming>Flow_1ajvk92</bpmn:incoming><bpmn:outgoing>Flow_0r2ykge</bpmn:outgoing></bpmn:serviceTask><bpmn:endEventid="Event_0x2ftot"><bpmn:incoming>Flow_0r2ykge</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlowid="Flow_0r2ykge"sourceRef="Activity_0jobe9d"targetRef="Event_0x2ftot"/></bpmn:process></bpmn:definitions>
  • 运行结果

运行结果解释: 用户输入的气温15度,根据Season Dicision可以得到是=Spring 用户输入的日期类型weekday, 根据Guest Count可以得到客人数量=4 根据season=spring, guestCount=4,根据Dish Decision可以得到=stew 完全符合预期!

访问若依工作流点击顶部,演示系统立即体验!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 7:42:42

44、系统管理中的配置文件与锁机制

系统管理中的配置文件与锁机制 在系统管理中,配置文件和锁机制是两个非常重要的概念。配置文件可以用来存储默认值,而锁机制则可以确保在同一时间只有一个进程能够访问特定的资源,避免资源冲突和数据不一致的问题。 配置文件的使用 配置文件是一种简单而有效的存储默认值…

作者头像 李华
网站建设 2026/4/16 7:43:46

45、系统管理与太空游戏脚本技术解析

系统管理与太空游戏脚本技术解析 1. 锁机制在系统管理中的应用 锁是一种实用的机制,可确保运行代码的一个实例与其他实例区别对待,因为它是唯一持有锁的实例。一旦获得锁,这种独占权限的用途不受限制,例如可用于文件写入,以避免多个并发进程同时写入同一文件。 以下是锁…

作者头像 李华
网站建设 2026/4/16 12:52:38

47、数据存储、检索与数字处理技巧

数据存储、检索与数字处理技巧 数据存储与检索 在数据存储和检索方面, plot-graph.sh 对数据的格式化比 grab-meminfo.sh 稍好,这使得 stat.sh 的任务也相对轻松。在处理内存和交换空间数据时,每个 Memory 行后面都跟着一个 Swap 行。在 while 循环中,会进行…

作者头像 李华
网站建设 2026/4/16 10:13:30

1小时打造个性化Windows快捷键提醒工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个轻量级Windows快捷键提示工具&#xff0c;要求&#xff1a;1. 实时检测活动窗口类型&#xff08;资源管理器/浏览器等&#xff09;2. 浮动显示当前窗口适用的快捷键列表 3.…

作者头像 李华
网站建设 2026/4/16 9:20:13

21、雾网络中基于多臂老虎机学习和匹配的分布式任务卸载

雾网络中基于多臂老虎机学习和匹配的分布式任务卸载 1. 引言 雾计算已广泛应用于物联网和网络物理系统中,作为云计算的扩展,它位于云层和用户设备层之间,能为用户设备提供类似云的服务,可提升系统在服务延迟、节能和服务成本方面的性能。然而,要实现这些优势,需要高效的…

作者头像 李华
网站建设 2026/4/16 9:20:26

5分钟原型:验证ARM编译器兼容性方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个快速验证工具原型&#xff0c;允许用户&#xff1a;1) 选择或输入目标ARM平台要求的编译器版本 2) 选择或检测当前使用的编译器版本 3) 一键生成兼容性测试项目 4) 自动运行…

作者头像 李华