news 2026/8/3 17:21:29

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/8/3 10:39:43

42、系统管理脚本:从网络配置到服务管理的实用指南

系统管理脚本:从网络配置到服务管理的实用指南 1. 网络配置脚本:网络绑定的实现 在系统安装后,进行网络配置是一项重要的任务。其中,网络绑定(Network Bonding)是一种将多个网络接口组合成一个逻辑接口的技术,它可以提供更高的带宽和冗余性。下面我们将详细介绍如何通…

作者头像 李华
网站建设 2026/8/3 1:28:05

XMRig实战:搭建个人Monero挖矿节点全指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式XMRig配置向导程序&#xff0c;引导用户完成以下步骤&#xff1a;1)选择操作系统(Windows/Linux) 2)输入钱包地址 3)选择矿池(提供主流矿池的延迟测试) 4)硬件检测(自…

作者头像 李华
网站建设 2026/8/2 5:06:27

43、CGI脚本与配置文件:原理、应用与安全考量

CGI脚本与配置文件:原理、应用与安全考量 1. CGI协议概述 CGI(Common Gateway Interface)协议发展迅速,RFC 3875(http://www.ietf.org/rfc/rfc3875)对其进行了详细说明。它允许Web服务器通过HTTP协议定义的GET和POST两种方法从浏览器接收额外数据。在REST架构中还有DEL…

作者头像 李华
网站建设 2026/8/3 20:15:42

5分钟用printf实现一个简易计算器界面

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个基于printf的命令行计算器原型。功能包括&#xff1a;1) 使用printf美化输出界面&#xff1b;2) 实现加减乘除基本运算&#xff1b;3) 格式化显示结果&#xff1b;4) 简…

作者头像 李华
网站建设 2026/7/27 19:22:00

KStudio vs 传统IDE:开发效率对比分析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个开发效率对比工具&#xff0c;可以记录和比较使用KStudio与传统IDE完成相同编程任务的时间消耗和代码质量。工具应包含任务计时、代码质量评估&#xff08;如复杂度、重复率…

作者头像 李华
网站建设 2026/8/1 7:56:44

演说能力是老板的加分项?错!它可能是你创业失败的真正原因

你是不是总觉得&#xff0c;只要产品够硬、技术够强&#xff0c;创业就能成功&#xff1f;演说&#xff1f;那不过是锦上添花的东西&#xff0c;能说会道不如埋头苦干。但现实总爱打脸。你有没有发现&#xff0c;那些看起来和你差不多、甚至产品不如你的同行&#xff0c;却能轻…

作者头像 李华