04 flowable DMN规则引擎几种类型解释

本文深入解析了Flowable DMN规则引擎的各种类型及其应用场景,包括单一命中、多重命中等策略,以及如何通过叠加变量、集合操作等功能进行复杂业务逻辑的实现。

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base
视频地址:https://www.bilibili.com/video/av79774697/
*业务场景:
往往在我们实际业务中,规则异常重要,比方说输入一批数据得到某些结果数据,从而来简化我们的BPMN流程图,
*

单一命中

第一个(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
${
   
   co
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生05101

flowable

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值