camunda快速入门(五):DMN规则引擎如何使用

news/2024/11/19 15:17:39/文章来源:https://www.cnblogs.com/hibpm/p/18291032

在本节中,您将学习如何使用 BPMN 2.0 业务规则任务和 DMN 1.3 决策表将决策自动化添加到流程中。

1、将业务规则任务添加到流程

使用 Camunda Modeler 打开Payment Retrieval(付款检索)流程,然后单击“Approve Payment(批准付款)”任务节点。在扳手按钮菜单中将活动类型更改为“Business Rule Task(业务规则任务)”。

1-利用业务规则(1)

接下来,在properties面板中将Implementation中的Type更改为DMN,并将Decision Reference更改为approve-payment(注意:approve-payment为dmn模型的ID),这样就把Business Rule Task链接到DMN表,流程执行的时候会执行DMN。为了检索评估结果并将其自动保存为流程中的流程实例变量,我们还需要将结果变量更改为approved(该值为流程变量,可在发起流程或表单里定义,在流程网关里使用),并在属性面板中使用singleEntry作为映射决策结果。

IMG_258

存更改并使用 Camunda Modeler 中的 Deploy按钮部署更新的流程。

2、使用 Camunda Modeler 创建 DMN 表

首先,通过单击“文件”>“新建文件”>“DMN 图”创建新的 DMN 图。

IMG_259

现在,新创建的图表已经添加了一个决策元素。通过单击它来选择它,然后为其指定一个名称 Approve Payment 和一个 ID为approve-payment(决策 ID 必须与 BPMN 流程中的Decision Reference 匹配)。

4-利用业务规则(1)

接下来,通过单击表按钮创建一个新的 DMN 表。

IMG_261

3、指定 DMN 表

首先,指定 DMN 表的输入表达式。在此示例中,我们将根据项目名称决定付款是否获得批准。您的规则还可以使用 FEEL 表达式语言、JUEL 或 Script。如果您愿意,可以阅读有关 DMN 引擎中的表达式的更多信息:https://docs.camunda.org/manual/7.19/user-guide/dmn-engine/expressions-and-scripts/。

双击输入以配置输入列。输入Item用作标签和输入item用作表达式:

6-利用业务规则(1)

接下来,设置输出列。填写Approved用作输出列和approved用作输出名称,将输出列更改为数据类型为boolean:

7-利用业务规则(1)

让我们通过单击 DMN 表左侧的+加号图标来创建一些规则。

20-编辑每一条规则

设置后,DMN 表应如下所示:

9-利用业务规则(1)

4、部署 DMN 表

要部署决策表,请单击 Camunda Modeler 中的 Deploy 按钮,为其指定部署名称“Payment Retrieval Decision”,然后点击 Deploy 按钮。

10-利用业务规则(1)

5、使用 Cockpit 验证部署

现在,使用 Cockpit 查看决策表是否已成功部署。转到 http://localhost:8080/camunda/app/cockpit/。使用凭据 demo / demo 登录。导航到“Decisions决策”部分。决策表“Approve Payment批准付款”应列为已部署的决策定义。

21-查看规则表部署情况

6、使用 Cockpit 和 Tasklist 进行检查

接下来,使用 Tasklist 启动两个新的流程实例,并验证是否根据您的输入以不同的方式路由流程实例。为此,请转到 http://localhost:8080/camunda/app/tasklist/。使用demo/demo登录。

单击按钮启动流程实例并选择付款流程,使用通用表单添加流程变量item的值为item-xyz,如下所示:

12-利用业务规则(1)

点击“启动”按钮。

转到 http://localhost:8080/camunda/app/cockpit/,导航到“决定”部分,查看DMN规则执行情况,发现规则匹配成功了,approved为true,同时流程也自动执行了对应流向。

接下来,再次单击按钮以启动另一个流程实例并选择付款流程,使用通用表单添加流程变量item的值为item-zzz,如下所示:IMG_269

转到 http://localhost:8080/camunda/app/cockpit/,导航到“决定”部分,查看DMN规则执行情况,发现规则匹配成功了,approved为false,流程走向为拒绝付款并结束。

23-查看规则执行情况

祝贺!您已成功完成 Camunda 平台快速入门。

7、源码和文档

在线体验系统:http://www.yunchengxc.com

完整源代码:https://github.com/camunda/camunda-get-started-quickstart/archive/Step-5.zip

官方文档地址:https://docs.camunda.org/get-started/quick-start/decision-automation/

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

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

相关文章

2024暑假集训测试1

前言比赛链接。排名历程:\(3→5→3\),因为 \(T1\) 的 special judge 是后来加上的,导致部分人挂了分,赛后安排了重测,就变成了 \(rank5\),赛后发现 \(T1\) 数据过水,重新更新了数据,卡掉了很多人的假做法,又成了 \(rank3\)。 T1 已知合法的分组有 \(\begin{cases}0~0~…

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面② mybatisplus启动画面③若依项目启动画面还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢? 一、小试牛刀 ① 新建一个SpringBoot项目②在项目的resources目录下新…

dBFS详解

什么是dBFS? dBFS(decibels relative to full scale)是描述音频信号在数字系统中的幅度的单位。它表示信号电平相对于数字系统的满刻度(Full Scale)的分贝值。dBFS的满刻度通常被认为是数字音频系统中所能处理的最大电平。 dBFS的计算 在数字音频系统中,dBFS的计算公式如…

DL/T645 调试工具,工程师必备

分享一个好用的 DL/T645 调试工具,官网下载地址 目录DL/T645 调试工具,工程师必备主要功能软件截图 DL/T645 调试工具,工程师必备 DL/T645 是中国电力行业的一个通信协议标准,专门用于电力数据采集和传输系统。这个协议由中国电力企业联合会(CEC)发布,主要用于智能电表及…

2024.7.9 鲜花

题图 from 匿名頭ン痛 - feat. 重音テト 我没找到 QaQprufer 序列,简单来说就是 \(n\) 个节点的树双射一个长度 \(n-2\) 值域 \([1,n]\) 的序列。 构造过程就是每次删一个编号最小叶子,记录其父节点。 本图来自baoziwu2,侵删显然堆 \(n\log n\) 可做,也可以扫一遍所有标号,…

读人工智能全传07智能体

读人工智能全传07智能体1. 布鲁克斯革命 1.1. 随着科学认知的发展,有时候旧有科学体系会面临全盘崩溃的危机,新的科学体系诞生,取代传统的、既定的科学体系,这就意味着科学的范式将发生变化 1.2. 澳大利亚机器人学家罗德尼布鲁克斯(Rodney Brooks),是彼时对人工智能范式批…

修改hosts文件不生效原因

hosts文件目录C:\Windows\System32\drivers\etc解决方法 重启浏览器。 其它参考:https://blog.csdn.net/zx1323/article/details/127461529本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18290996

跨境电商业务流程

相较于普通的电商流程,跨境电商业务流程多了与备案、报关等环节相关的内容,一起来看看作者的分享吧。跨境电商业务主要是围绕海关来进行的,除了在项目上的体现上还有很多项目之外的工作,如备案、报关。报关可以由程序完成,也可人工完成。 整体流程:各角色海关备案-> 商…

计一次Win32 api程序显示混乱问题的调试经历

背景:短学期任务,做一个his系统,老师是没有要求gui的,我闲的没事干就打算写一个gui,但是mfc、qt、unity每一个熟悉的,所以就直接用了win32 api手写gui~~(我太难了,我发誓以后再也不手写gui了)~~。然后我就想到了子窗口切换的方式来显示不同的界面(好处在于,每个子界…

05.Map 案例 滑动区间算法

下面是 Go 语言实现寻找最长不含有重复字符的子串的代码:滑动区间算法??package mainimport "fmt"func longestSubstringWithoutRepeating(s string) string {m := make(map[byte]int)start, maxLength, maxStart := 0, 0, 0for end := 0; end < len(s); end++…

全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法-模拟串口传感器和主机

本节课,我们主要讲解了在Python类的继承中子类如何进行初始化、调用父类的属性和方法,同时讲解了模拟串口传感器和主机类的具体实现,并使用xcom串口助手与两个类进行串口通信使用。全网最适合入门的面向对象编程教程:11 类和对象的 Python 实现-子类调用父类方法-模拟串口传…