flowable DMN规则引擎几种类型解释_04
文章目录
- 单一命中
- 第一个(FIRST)
- 唯一(UNIQUE)
- 优先级(PRIORITY)
- 任何(ANY)
- 多重命中
- 输出顺序(OUTPUT ORDER)
- 规则顺序(RULE ORDER)
- 采集(COLLECT)
项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base
视频地址:https://www.bilibili.com/video/av79774697/
*业务场景:
往往在我们实际业务中,规则异常重要,比方说输入一批数据得到某些结果数据,从而来简化我们的BPMN流程图,
*
flowableDMN规则引擎几种类型解释
单一命中
第一个(FIRST)
可以匹配多个(重叠)具有不同输出条目的规则。返回规则顺序中的第一次命中(返回后停止评估)。
唯一(UNIQUE)
没有重叠的可能,所有规则都是互斥的。只能匹配到一条规则。
如果多个会报错
可以利用设置解决这个问题
dmnEngine.getDmnEngineConfiguration().setStrictMode(false);
优先级(PRIORITY)
具有不同的输出条目的多个规则可以匹配。此策略返回具有最高输出优先级的匹配规则。输出优先级在输出值的有序列表中按优先级递减的顺序指定。当禁用strict mode且未定义输出值时,结果是最后一个有效规则。(违规将以验证消息的形式出现)
任何(ANY)
可能会有重叠,但如果所有匹配规则显示每个输出的输出条目相等,就可以使用任何匹配。如果输出条目不相等,则命中策略不正确,结果将为空并标记为failed。当禁用strict mode时,结果是最后一个有效规则。(违规将以验证消息的形式出现)
多重命中
输出顺序(OUTPUT ORDER)
按输出优先级递减的顺序返回所有命中规则。输出优先级在输出值的有序列表中按优先级递减的顺序指定。
规则顺序(RULE ORDER)
按规则顺序返回所有命中
1、叠加变量
${output1 + 10}
2、包含 任意都在
输入:
List inputVariable1 = Arrays.asList("test1", "test2", "test3");
processVariablesInput.put("collection1", inputVariable1);
输出:
test2 or test5 in collection1
${collection:containsAny(collection1, '"test2", "test5"')}
3、传入对象
输入:
Person customerOne = new Person();
customerOne.setName("test1");
customerOne.setAge(10L);
processVariablesInput.put("customerOne", customerOne);
输出:${collection:contains("test1", customerOne.name)}
4、json传入匹配 IN 两个并且都在
输入:
ArrayNode arrayNode1 = objectMapper.createArrayNode().add("test1").add("test2").add("test3");
processVariablesInput.put("arrayNode1", arrayNode1);
输出:"test1 and test2 in arrayNode1"
${collection:contains(arrayNode1, '"test1", "test2"')}
5、不包含 任意都不在
传入:
List inputVariable1 = Arrays.asList("test1", "test2", "test3");
processVariablesInput.put("collection1", inputVariable1);
表达式:test3 and / or test6 not in collection1
${collection:notContainsAny(collection1, '"test3", "test6"')}
6、不包含 not in 两个并且都不在
输入:
List inputVariable1 = Arrays.asList("test1", "test2", "test3");
processVariablesInput.put("collection1", inputVariable1);
输出:
test3 and test5 not in collection1
${collection:notContains(collection1, '"test3", "test5"')}
1、叠加变量
${output1 + 10}
2、包含 任意都在
输入:
List inputVariable1 = Arrays.asList(“test1”, “test2”, “test3”);
processVariablesInput.put(“collection1”, inputVariable1);
输出:
test2 or test5 in collection1
collection:containsAny(collection1,′“test2”,“test5”′)3、传入对象输入:PersoncustomerOne=newPerson();customerOne.setName(“test1”);customerOne.setAge(10L);processVariablesInput.put(“customerOne”,customerOne);输出:collection:containsAny(collection1,
′
“test2”,“test5”
′
)3、传入对象输入:PersoncustomerOne=newPerson();customerOne.setName(“test1”);customerOne.setAge(10L);processVariablesInput.put(“customerOne”,customerOne);输出:{collection:contains(“test1”, customerOne.name)}
4、json传入匹配 IN 两个并且都在
输入:
ArrayNode arrayNode1 = objectMapper.createArrayNode().add(“test1”).add(“test2”).add(“test3”);
processVariablesInput.put(“arrayNode1”, arrayNode1);
输出:“test1 and test2 in arrayNode1”
${collection:contains(arrayNode1, ‘“test1”, “test2”’)}
5、不包含 任意都不在
传入:
List inputVariable1 = Arrays.asList(“test1”, “test2”, “test3”);
processVariablesInput.put(“collection1”, inputVariable1);
表达式:test3 and / or test6 not in collection1
${collection:notContainsAny(collection1, ‘“test3”, “test6”’)}
6、不包含 not in 两个并且都不在
输入:
List inputVariable1 = Arrays.asList(“test1”, “test2”, “test3”);
processVariablesInput.put(“collection1”, inputVariable1);
输出:
test3 and test5 not in collection1
${collection:notContains(collection1, ‘“test3”, “test5”’)}
1、叠加变量
${output1 + 10}
2、包含 任意都在
输入:
List inputVariable1 = Arrays.asList(“test1”, “test2”, “test3”);
processVariablesInput.put(“collection1”, inputVariable1);
输出:
test2 or test5 in collection1
collection:containsAny(collection1,′“test2”,“test5”′)3、传入对象输入:PersoncustomerOne=newPerson();customerOne.setName(“test1”);customerOne.setAge(10L);processVariablesInput.put(“customerOne”,customerOne);输出:collection:containsAny(collection1,
′
“test2”,“test5”
′
)3、传入对象输入:PersoncustomerOne=newPerson();customerOne.setName(“test1”);customerOne.setAge(10L);processVariablesInput.put(“customerOne”,customerOne);输出:{collection:contains(“test1”, customerOne.name)}
4、json传入匹配 IN 两个并且都在
输入:
ArrayNode arrayNode1 = objectMapper.createArrayNode().add(“test1”).add(“test2”).add(“test3”);
processVariablesInput.put(“arrayNode1”, arrayNode1);
输出:“test1 and test2 in arrayNode1”
${collection:contains(arrayNode1, ‘“test1”, “test2”’)}
5、不包含 任意都不在
传入:
List inputVariable1 = Arrays.asList(“test1”, “test2”, “test3”);
processVariablesInput.put(“collection1”, inputVariable1);
表达式:test3 and / or test6 not in collection1
${collection:notContainsAny(collection1, ‘“test3”, “test6”’)}
6、不包含 not in 两个并且都不在
输入:
List inputVariable1 = Arrays.asList(“test1”, “test2”, “test3”);
processVariablesInput.put(“collection1”, inputVariable1);
输出:
test3 and test5 not in collection1
${collection:notContains(collection1, ‘“test3”, “test5”’)}
采集(COLLECT)
以任意顺序返回所有命中。我们可以添加运算符(+,<,>,#)来将一个简单函数应用于输出。如果没有运算符,则结果是所有输出条目的列表。
+(总和):决策表的结果是所有不同输出的总和。
<(最小值):决策表的结果是所有输出中的最小值。
‘>(最大值):决策表的结果是所有输出中的最大值。
#(计数):决策表的结果是不同输出的数量。
flowable DMN规则引擎几种类型解释_04相关推荐
- 04 flowable DMN规则引擎几种类型解释
项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频地址:https://www.bilibili.com/video/av797746 ...
- drools规则引擎可视化_一文看懂开源工作流引擎 Flowable「转」
原文链接:[https://xie.infoq.cn/article/ece75889c715e0bc87a73e44c]. 一.工作流引擎使用场景 工作流在企业管理系统中是高频使用的功能,一个最常见 ...
- flowable dmn引擎
原文地址:flowable dmn引擎 http://www.shareniu.com/ 在Flowable版本发布后,Flowable框架开始实现DMN规范,换言之,Flowable正在实现自己的规 ...
- 规则引擎和流程引擎我该怎么理解
流程引擎 什么是流程引擎 流程引擎就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程 ...
- 规则引擎drools系列(一)
规则引擎 Drools 1. 问题引出 现有一个在线申请信用卡的业务场景,用户需要录入个人信息,如下图所示: //此处为伪代码 //检查用户信息合法性,返回true表示检查通过,返回false表示 ...
- 【转】什么是规则引擎(Drools、OpenL Tablets、Easy Rules、RuleBook)
什么是规则引擎(Drools.OpenL Tablets.Easy Rules.RuleBook) 发表于:2021年1月23日 分类:Drools, 规则引擎 标签:Drools, Easy-Rul ...
- 从0到1:构建强大且易用的规则引擎
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 张宁 来源 | 公众号「zhisheng」 2 ...
- Java代码的维护与更新,Java常用的规则引擎,让你变动的代码更加容易维护
Java常用的规则引擎,让你变动的代码更加容易维护 Java常用的规则引擎,让你变动的代码更加容易维护 在本文中,我们将介绍Java中一些最受欢迎的规则引擎. 规则引擎由推理引擎发展而来,是一种嵌入在 ...
- drools规则引擎技术指南_物联网规则引擎技术
物联网应用程序设计与典型的IT解决方案大不相同,因为它将物理操作技术(OT)与传感器.致动器和通信设备连接起来,并将数字信息技术(IT)与数据.分析和工作流连接起来. 在企业环境中,物联网非常复杂,这 ...
最新文章
- 你的每个哈欠老板都知道!被AI摄像头全天盯紧,亚马逊快递小哥不干了
- Netty源码解析4-Handler综述
- 微信小程序wx.navigateTo路由循环嵌套问题解决
- 2021年《环球科学》十大科学新闻:“天宫”空间站、火星探索位列前二
- 一道微软面试题的运算过程解析
- C语言中const的用法
- python 决策树 math库 c45算法
- L1-004.计算摄氏温度
- python txt转json_实战篇 | 用Python来找你喜欢的妹子(二)
- selenium java封装_selenium2.0的初步封装(java版本)
- mysql 主从的作用_MySQL主从复制作用和原理
- EF Code First建库 增删改查
- 关于 WPF 在主窗口中用多线程打开的子窗口关闭后进程还存在,这个问的题的解决方法。...
- ConcurrentLinkedQueue 的outofMemory错误解决方案
- i510200h和i78750h哪个好?有什么区别
- STM32 之 USB 虚拟串口
- 小程序微信授权登录服务器异常,微信小程序授权登录流程(强制绑定手机号码)...
- 游戏开发中的进阶向量数学
- 缅怀清明-记爷爷这一生
- ev4转换MP4格式教程