使用camunda的DMN实现班级决策案例

班级决策

Camunda 支持DMN1.3版本,在BPMN业务活动流程中,可通过业务规则任务调用DMN决策。DMN决策目的是想把业务代码和决策进行解耦,使决策分析人员只需关心决策即可。

需求描述

通过幼儿园学生年龄age和身高height分配不同的班级,决策表可随时修改。校长审核时向流程中传递决策表所需要的流程变量age、height。流程径流决策表后自动提交到相关班级老师审批。
决策规则说明

大于3岁并且身高高于70cm,可上幼儿园小班

大于等于5岁并且身高高于95cm,可上幼儿园中班

大于7岁并且身高高于120cm,可上幼儿园大班

BPMN建模

在这里插入图片描述

设计校长审核并进行分班的流程模型

在这里插入图片描述

规则任务节点的实施设置为DMN,并按照图中进行了配置

XML内容

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns: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:process id="Process_choice_class" name="班级决策" isExecutable="true"><bpmn:startEvent id="StartEvent_1"><bpmn:outgoing>Flow_0fss2gh</bpmn:outgoing></bpmn:startEvent><bpmn:sequenceFlow id="Flow_0fss2gh" sourceRef="StartEvent_1" targetRef="Activity_1nqmntb" /><bpmn:userTask id="Activity_1nqmntb" name="校长审核" camunda:assignee="${customer}"><bpmn:extensionElements><camunda:formData><camunda:formField id="age" label="年龄" type="long" defaultValue="1" /><camunda:formField id="height" label="身高" type="long" defaultValue="0" /></camunda:formData></bpmn:extensionElements><bpmn:incoming>Flow_0fss2gh</bpmn:incoming><bpmn:outgoing>Flow_1w7qdzj</bpmn:outgoing></bpmn:userTask><bpmn:sequenceFlow id="Flow_1w7qdzj" sourceRef="Activity_1nqmntb" targetRef="Activity_02itx7s" /><bpmn:businessRuleTask id="Activity_02itx7s" name="判断哪个班级" camunda:resultVariable="dmnResult" camunda:decisionRef="class-choice" camunda:mapDecisionResult="singleEntry"><bpmn:incoming>Flow_1w7qdzj</bpmn:incoming><bpmn:outgoing>Flow_1hcuyt1</bpmn:outgoing></bpmn:businessRuleTask><bpmn:exclusiveGateway id="Gateway_1c2reel"><bpmn:incoming>Flow_1hcuyt1</bpmn:incoming><bpmn:outgoing>Flow_1oukih7</bpmn:outgoing><bpmn:outgoing>Flow_1dghuqc</bpmn:outgoing><bpmn:outgoing>Flow_1ry0dxl</bpmn:outgoing></bpmn:exclusiveGateway><bpmn:sequenceFlow id="Flow_1hcuyt1" sourceRef="Activity_02itx7s" targetRef="Gateway_1c2reel"><bpmn:extensionElements><camunda:executionListener delegateExpression="${myClassTask}" event="take" /></bpmn:extensionElements></bpmn:sequenceFlow><bpmn:sequenceFlow id="Flow_1oukih7" name="dmnResult==1" sourceRef="Gateway_1c2reel" targetRef="Activity_0jlob3q"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${dmnResult ==1}</bpmn:conditionExpression></bpmn:sequenceFlow><bpmn:serviceTask id="Activity_0jlob3q" name="小班" camunda:delegateExpression="${myClassTask}"><bpmn:incoming>Flow_1oukih7</bpmn:incoming><bpmn:outgoing>Flow_121bph1</bpmn:outgoing></bpmn:serviceTask><bpmn:sequenceFlow id="Flow_1dghuqc" name="dmnResult==2" sourceRef="Gateway_1c2reel" targetRef="Activity_08vymo7"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${dmnResult ==2}</bpmn:conditionExpression></bpmn:sequenceFlow><bpmn:serviceTask id="Activity_08vymo7" name="中班" camunda:delegateExpression="${myClassTask}"><bpmn:incoming>Flow_1dghuqc</bpmn:incoming><bpmn:outgoing>Flow_0bzrgdf</bpmn:outgoing></bpmn:serviceTask><bpmn:sequenceFlow id="Flow_1ry0dxl" name="dmnResult==3" sourceRef="Gateway_1c2reel" targetRef="Activity_16865do"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${dmnResult ==3}</bpmn:conditionExpression></bpmn:sequenceFlow><bpmn:serviceTask id="Activity_16865do" name="大班" camunda:delegateExpression="${myClassTask}"><bpmn:incoming>Flow_1ry0dxl</bpmn:incoming><bpmn:outgoing>Flow_0wftu8w</bpmn:outgoing></bpmn:serviceTask><bpmn:endEvent id="Event_1tksyrl"><bpmn:incoming>Flow_121bph1</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_121bph1" sourceRef="Activity_0jlob3q" targetRef="Event_1tksyrl" /><bpmn:endEvent id="Event_1u2u83d"><bpmn:incoming>Flow_0bzrgdf</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0bzrgdf" sourceRef="Activity_08vymo7" targetRef="Event_1u2u83d" /><bpmn:endEvent id="Event_0gq7hhn"><bpmn:incoming>Flow_0wftu8w</bpmn:incoming></bpmn:endEvent><bpmn:sequenceFlow id="Flow_0wftu8w" sourceRef="Activity_16865do" targetRef="Event_0gq7hhn" /></bpmn:process>
</bpmn:definitions>

DMN建模

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:camunda="http://camunda.org/schema/1.0/dmn" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" exporter="Camunda Modeler" exporterVersion="4.11.1" expressionLanguage="https://www.omg.org/spec/DMN/20191111/FEEL/" id="Definitions_appoaprif5r90c" name="DRD" namespace="http://camunda.org/schema/1.0/dmn" typeLanguage="https://www.omg.org/spec/DMN/20191111/FEEL/"><decision id="class-choice" name="班级判断"><decisionTable aggregation="MAX" hitPolicy="COLLECT" id="DecisionTable_xxe918s1gxq" preferredOrientation="Rule-as-Row"><input camunda:inputVariable="A" id="Input_A" label="年龄"><inputExpression id="InputExpression_A" typeRef="integer"><text>age</text></inputExpression></input><input id="InputClause_1pmyqs4" label="身高"><inputExpression id="LiteralExpression_1g9go56" typeRef="number"><text>height</text></inputExpression></input><output id="Output_A" label="选择班级" name="dmnResult" typeRef="number"/><rule id="DecisionRule_14e302t"><description>大于3岁并且身高高于70cm,可上幼儿园小班</description><inputEntry id="UnaryTests_10f17a9"><text>&gt;3</text></inputEntry><inputEntry id="UnaryTests_1juonnl"><text>&gt;70</text></inputEntry><outputEntry id="LiteralExpression_0sv3naw"><text>1</text></outputEntry></rule><rule id="DecisionRule_1dzzwnr"><description>大于等于5岁并且身高高于95cm,可上幼儿园中班</description><inputEntry id="UnaryTests_0m4kz9f"><text>&gt;=5</text></inputEntry><inputEntry id="UnaryTests_12y1rvm"><text>&gt;=96</text></inputEntry><outputEntry id="LiteralExpression_0wovhui"><text>2</text></outputEntry></rule><rule id="DecisionRule_1rgvsjm"><description>大于7岁并且身高高于120cm,可上幼儿园大班</description><inputEntry id="UnaryTests_0g02yle"><text>&gt;7</text></inputEntry><inputEntry id="UnaryTests_0xhd2bf"><text>&gt;120</text></inputEntry><outputEntry id="LiteralExpression_0f71spy"><text>3</text></outputEntry></rule></decisionTable></decision><dmndi:DMNDI><dmndi:DMNDiagram><dmndi:DMNShape dmnElementRef="Definitions_hrsxxe918s1gxq" id="DMNShape_8kn0lmvopu7" isCollapsed="false"><dc:Bounds height="80" width="180" x="160" y="280"/></dmndi:DMNShape></dmndi:DMNDiagram></dmndi:DMNDI>
</definitions>

演示情况

在这里插入图片描述

校长提交表单数据,发起流程。 将年龄和身高传给决策表进行班级的选择判断。

在这里插入图片描述

预览流程的运行情况。JeecgFlow 找到Camunda站点进行体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446576.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.13论文阅读

通过联合学习检测和描述关键点增强可变形局部特征 摘要 局部特征提取是计算机视觉中处理图像匹配和检索等关键任务的常用方法。大多数方法的核心理念是图像经历仿射变换&#xff0c;忽略了诸如非刚性形变等更复杂的效果。此外&#xff0c;针对非刚性对应的新兴工作仍然依赖于…

个性化图像生成新王炸!无需微调,Meta重磅发布Imagine yourself:三大核心全面SOTA!

论文链接&#xff1a;https://arxiv.org/pdf/2409.13346 亮点直击 本文提出了“Imagine Yourself”&#xff0c;这是一种用于个性化图像生成的创新型最先进模型。该模型可以将任意参考图像作为输入进行定制化图像生成&#xff0c;并且不需要针对每个对象进行调整。“Imagine Yo…

springboot汽车售票系统演-毕业设计源码07891

基于springboot的汽车售票系统 摘 要 汽车售票系统主要功能模块包括系统用户管理、车次车票信息、车票预定、退票信息、改签信息等&#xff0c;采取面对对象的开发模式进行软件的开发和硬体的架设&#xff0c;能很好的满足实际使用的需求&#xff0c;完善了对应的软体架设以及…

【C】C语言常见概念~

C语言常见概念 转义字符 转义字符&#xff0c;顾名思义&#xff0c;转变原来意思的字符 比如 #include <stdio.h> int main() {printf("abcndef");return 0; }输出的结果为&#xff1a; 将代码修改一下&#xff1a; #include <stdio.h> int main(…

萱仔求职复习系列——2 Linux的常用方法(包含基础进阶高级操作)

由于最近接了一个笔试&#xff0c;发现笔试可能涉及到Linux&#xff0c;我准备临时抱佛脚一下赶紧复习一下Linux的用法哈哈。Linux 的基础用法包含文件系统操作、权限管理、网络配置、进程管理等基本命令&#xff1b;进阶操作包括网络调试、包管理、服务管理和用户管理等&#…

UE5学习笔记24-添加武器弹药

一、给角色的武器添加弹药 1.创建界面&#xff0c;根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…

【论文解读系列】EdgeNAT: 高效边缘检测的 Transformer

代码&#xff1a; https://github.com/jhjie/edgenat 论文&#xff1a; https://arxiv.org/abs/2408.10527v1 论文 EdgeNAT: Transformer for Efficient Edge Detection 介绍了一种名为EdgeNAT的基于Transformer的边缘检测方法。 1. 背景与动机 EdgeNAT预测结果示例。(a, b)…

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 文章目录 4.1信息系统软件运维概述信息系统软件运维的概念信息系统软件的可维护性及维护类型对软件可维护性的度量可以从以下几个方面进行&#xff1a;软件维护分类&#xff1a; 信息系统软件运维的体系1.**需求驱动**2.**运维流程**3.**运维过程**4.*…

LabVIEW提高开发效率技巧----事件触发模式

事件触发模式在LabVIEW开发中是一种常见且有效的编程方法&#xff0c;适用于需要动态响应外部或内部信号的场景。通过事件结构&#xff08;Event Structure&#xff09;和用户自定义事件&#xff08;User Events&#xff09;&#xff0c;开发者可以设计出高效的事件驱动程序&am…

WPF 为button动态设置不同的模板

有时候需要动态的设置一些按钮的状态模板。使一个button显示不同的内容&#xff0c;比如Button未点击安装显示&#xff1a; 安装后显示&#xff1a; 可以通过设置button的content&#xff0c;通过content来设置不同的模板来实现功能&#xff0c;以下是代码&#xff1a; MainWi…

opencascade鼠标拖拽框选功能

1.首先在OccView中添加用于显示矩形框的类 //! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand; 2.设置框选的属性 mRectBand new AIS_RubberBand(); //设置属性 mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线 mRe…

day11-SpringMVC

一、SpringMVC 1.SpringMVC流程分析 2.各种注解 3.接收请求参数 3.1 简单类型 3.2 对象类型 3.3 数组类型 3.4 集合类型 3.5 日期类型 3.6 json参数类型 3.7 路径参数 二、统一异常处理 三、Restful

tensorflow入门案例手写数字识别人工智能界的helloworld项目落地1

参考 https://tensorflow.google.cn/?hlzh-cn https://tensorflow.google.cn/tutorials/keras/classification?hlzh-cn 项目资源 https://download.csdn.net/download/AnalogElectronic/89872174 文章目录 一、案例学习1、导入测试和训练数据集&#xff0c;定义模型&#xff…

Unreal5从入门到精通之 如何使用事件分发器EventDispather

文章目录 前言1.创建事件分发器设置属性2.创建Bind、Unbind及Unbind All节点在蓝图类中创建在关卡蓝图中创建3.创建事件分发器事件节点4.调用事件分发器在蓝图类中进行调用在关卡蓝图中进行调用前言 事件分发器是 Unreal Engine(UE)中一个重要的概念,它负责在游戏运行时管理…

超GPT3.5性能,无限长文本,超强RAG三件套,MiniCPM3-4B模型分享

MiniCPM3-4B是由面壁智能与清华大学自然语言处理实验室合作开发的一款高性能端侧AI模型&#xff0c;它是MiniCPM系列的第三代产品&#xff0c;具有4亿参数量。 MiniCPM3-4B模型在性能上超过了Phi-3.5-mini-Instruct和GPT-3.5-Turbo-0125&#xff0c;并且与多款70亿至90亿参数的…

基于socket实现客户端与服务器之间TCP通信

我们在算法部署时&#xff0c;通常需要进行算法端与其他服务端的通信&#xff0c;要么接受指令、要么是需要上传算法结果&#xff1b;除了我们常用的gRPC、HTTP、MQ等方式&#xff0c;还可以利用TCP来实现可靠通信&#xff1b;本次我们利用socket来展示如何进行两端的TCP通信。…

SAP SD学习笔记10 - SD出荷传票1 在库转送Order - 补充出荷 详解

上一章学习了受注传票中的不完全Log和Business Partner&#xff08;取引先机能&#xff09;的知识。 SAP SD学习笔记09 - 受注传票中的不完全Log 和 Business Partner(取引先机能&#xff09;-CSDN博客 本章继续学习SD的内容。 - 在库转送Order - 补充出荷 目录 1&#xff0…

HCIP-HarmonyOS Application Developer 习题(九)

(多选) 1、HarmonyOS多窗口交互能力提供了以下哪几种交互方式&#xff1f; A. 全局消息通知 B.平行视界 C.悬浮窗 D.分屏 答案&#xff1a;BCD 分析&#xff1a;系统提供了悬浮窗、分屏、平行视界三种多窗口交互&#xff0c;为用户在大屏幕设备上的多任务并行、便捷的临时任务…

集合框架07:LinkedList使用

1.视频链接&#xff1a;13.14 LinkedList使用_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1zD4y1Q7Fw?spm_id_from333.788.videopod.episodes&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5&p142.LinkedList集合的增删改查操作 package com.yundait.Demo01;im…

CSS @规则(At-rules)系列详解___@charset规则使用方法

CSS 规则(At-rules)系列详解 ___charset规则使用方法 本篇目录&#xff1a; 零、时光宝盒 一、charset规则定义和用法 二、CSS charset语法 三、charset 使用方法例子 1、正确使用方法 2、无效的&#xff0c;错误的使用方法 零、时光宝盒 &#xff08;https://blog.csd…