当前位置: 首页 > news >正文

Drools 7 Modify 和对象直接赋值差异

  • modify代表修改fact,会再次触发符合条件的rule
  • 对象直接修改只是java 操作,不会会再次触发符合条件的rule

以下为测试代码-drl部分


package org.drools.learnimport org.drools.learn.ModifyTest.Message;global java.util.List listrule "Stateless modify"
// 注意使用了mvel,用java会报status 不是publicdialect "mvel"whenm : Message( status == Message.HELLO, message : message )thenSystem.out.println( message + " in thread " + Thread.currentThread().getId()+","+System.currentTimeMillis());modify ( m ) { message = "Goodbye cruel world",status = Message.GOODBYE };endrule "Stateless Good Bye"
// 注意使用了mveldialect "mvel"wheno : Message( status == Message.GOODBYE, message : message )thenSystem.out.println( " Stateless Good Bye in thread " + Thread.currentThread().getId()+","+System.currentTimeMillis());// 使用set 不会触发rule执行o.setMessage("changed by drl");o.setStatus (100);//  modify ( o ) { message = "100 cruel world",//                    status = 100 };endrule "Stateless 100 "dialect "java"auto-focus truewheno : Message( status == 100, message : message )thenSystem.out.println( " Stateless 100 should not be printed ,but it printed in  " + Thread.currentThread().getId()+","+System.currentTimeMillis());end
测试java代码package org.drools.learn;import org.drools.core.io.impl.ClassPathResource;
import org.kie.api.KieBase;
import org.kie.api.KieBaseConfiguration;
import org.kie.api.KieServices;
import org.kie.api.conf.EqualityBehaviorOption;
import org.kie.api.conf.SequentialOption;
import org.kie.api.io.Resource;
import org.kie.api.logger.KieRuntimeLogger;
import org.kie.api.runtime.StatelessKieSession;
import org.kie.internal.conf.ConsequenceExceptionHandlerOption;
import org.kie.internal.conf.MultithreadEvaluationOption;
import org.kie.internal.utils.KieHelper;import java.util.ArrayList;
import java.util.List;public class ModifyTest {private static KieBase kieBase;private static KieBaseConfiguration kieBaseConf;// private static KieSessionConfiguration kieBaseConf;public static final void main(final String[] args) {// From the kie services, a container is created from the classpathKieServices ks=KieServices.get();kieBaseConf= ks.newKieBaseConfiguration();//设置SequentialOption以提升性能kieBaseConf.setOption(SequentialOption.YES);//设置使用对象的equals函数来进行对象比较kieBaseConf.setOption(EqualityBehaviorOption.EQUALITY);//设置exception 捕获,不设置为默认使用org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandlerkieBaseConf.setOption(ConsequenceExceptionHandlerOption.get(DroolsConsequenceExceptionHandler.class));// kieBaseConf.setOption(MultithreadEvaluationOption.YES);//使用resource模式装载,参考https://zhuanlan.zhihu.com/p/519969197Resource resource =new ClassPathResource("org/drools/learn/ModifyTest.drl");KieBase base=new KieHelper().addResource(resource).build(kieBaseConf);StatelessKieSession ksession = base.newStatelessKieSession();ArrayList result=new ArrayList<Object>();ksession.setGlobal( "list",  result);// The application can insert facts into the sessionMessage message = new Message();message.setMessage( "Hello World" );message.setStatus( Message.HELLO );ksession.execute( message );System.out.println("message status change to "+message.getStatus());}public static class Message {public static final int HELLO   = 0;public static final int GOODBYE = 1;private String          message;private int             status;public Message() {}public String getMessage() {return this.message;}public void setMessage(final String message) {this.message = message;}public int getStatus() {return this.status;}public void setStatus(final int status) {this.status = status;}public static Message doSomething(Message message) {return message;}public boolean isSomething(String msg,List<Object> list) {list.add( this );return this.message.equals( msg );}}}

相关文章:

Drools 7 Modify 和对象直接赋值差异

modify代表修改fact&#xff0c;会再次触发符合条件的rule对象直接修改只是java 操作&#xff0c;不会会再次触发符合条件的rule 以下为测试代码-drl部分 package org.drools.learnimport org.drools.learn.ModifyTest.Message;global java.util.List listrule "Stateles…...

vivado产生报告阅读分析21

其他命令选项 • -of_objects <suggestion objects> &#xff1a; 启用特定建议的报告。在此模式下运行时 &#xff0c; report_qor_suggestions 不会生成新建议。此命令可快速执行 &#xff0c; 读取 RQS 文件后 &#xff0c; 此命令可用于查看其中包 含的建议。其…...

9.Docker的虚悬镜像-Dangling Image

1.虚悬镜像的概念 虚悬镜像 (Dangling Image) 指的是仓库名 (镜像名) 和标签 TAG 都是 的镜像。 2.构建本地虚悬镜像 这里我以unbuntu为例来说明。 2.1 编写Dockerfile文件 FROM ubuntu:22.042.2 根据Dockerfile文件构建虚悬镜像 docker build .上面这段命令&#xff0c…...

02- OpenCV:加载、修改、保存图像

目录 1、加载图像&#xff08;cv::imread&#xff09; 2、显示图像 (cv::namedWindos 与cv::imshow) 3、修改图像 (cv::cvtColor) 4、保存图像(cv::imwrite) 5、代码演示 1、加载图像&#xff08;cv::imread&#xff09; cv::imread 是 OpenCV 库中用于读取图像文件的函数…...

4面试题--数据库(mysql)

执⾏⼀条 select / update 语句&#xff0c;在 MySQL 中发⽣了什么&#xff1f; Server 层负责建⽴连接、分析和执⾏ SQL。MySQL ⼤多数的核⼼功能模块都在这实现&#xff0c;主要包括 连接器&#xff0c;查询缓存&#xff08;8.0版本去除&#xff0c;因为每次更新将会清空该…...

【LeeCode】283.移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 解【做的有点呆&#xff0c;额外设置了计数器变量统计0的个数再从后往前赋0】&#xff1a…...

OSG粒子系统与阴影-自定义粒子系统示例<2>(5)

自定义粒子系统示例(二) 目前自定义粒子的方法有很多&#xff0c;在OSG 中使用的是 Billboard 技术与色彩融合技术。色彩融合是一种高级的渲染技术&#xff0c;如果读者有兴趣&#xff0c;可参看 OSG 粒子系统实现的源代码。这里采用简单的布告牌技术(osg::Billboard)与动画来实…...

微软 Edge 浏览器目前无法支持 avif 格式

avif 格式在微软 Edge 浏览器中还是没有办法支持。 如果你希望能够查看 avif 格式&#xff0c;那么只能通过浏览器打开&#xff0c;然后浏览器将会把这个文件格式下载到本地。 avif 格式已经在其他的浏览器上得到了广泛的支持&#xff0c;目前不支持的可能就只有 Edge 浏览器。…...

用python实现文字转语音的5个较好用的模块

文章目录 一. 用 gtts 模块二. 用pyttsx3模块基本使用直接朗读更改语音、速率和音量 三. baidu-aip四. pywin32五. speech 一. 用 gtts 模块 参考文档&#xff1a;https://gtts.readthedocs.io/en/latest/ 使用前需要先安装&#xff1a;pip3 install gtts &#xff0c;样例如…...

Windows Server 2012R2 修复CVE-2016-2183(SSL/TLS)漏洞的办法

一、漏洞说明 Windows server 2012R2远程桌面服务SSL加密默认是开启的,且有默认的CA证书。由于SSL/ TLS自身存在漏洞缺陷,当开启远程桌面服务,使用漏洞扫描工具扫描,发现存在SSL/TSL漏洞。远程主机支持的SSL加密算法提供了中等强度的加密算法,目前,使用密钥长度大于等于5…...

python统计字符串中大小写字符个数的性能实测与分析

给定一个字符串&#xff0c;统计字符串中大写字符个数&#xff0c;有如下三种方法&#xff1a; # method1 s1 len(re.findall(r[A-Z],content)) # method2 s2 sum(1 for c in content if c.isupper()) # method3 s3 0 for c in content:if c.isupper()True:s31经过多次实测…...

时间序列预测实战(十九)魔改Informer模型进行滚动长期预测(科研版本)

论文地址->Informer论文地址PDF点击即可阅读 代码地址-> 论文官方代码地址点击即可跳转下载GIthub链接 个人魔改版本地址-> 文章末尾 一、本文介绍 在之前的文章中我们已经讲过Informer模型了&#xff0c;但是呢官方的预测功能开发的很简陋只能设定固定长度去预测未…...

[PyTorch][chapter 64][强化学习-DQN]

前言&#xff1a; DQN 就是结合了深度学习和强化学习的一种算法&#xff0c;最初是 DeepMind 在 NIPS 2013年提出&#xff0c;它的核心利润包括马尔科夫决策链以及贝尔曼公式。 Q-learning的核心在于Q表格&#xff0c;通过建立Q表格来为行动提供指引&#xff0c;但这适用于状态…...

用好语言模型:temperature、top-p等核心参数解析

编者按&#xff1a;我们如何才能更好地控制大模型的输出? 本文将介绍几个关键参数&#xff0c;帮助读者更好地理解和运用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常见参数&#xff0c;以优化语言模型的生成效果。 文章详细解释了这些参数的作用…...

python之pycryptodome模块,加密算法库

一、简介 PyCryptodome是PyCrypto库的一个分支&#xff0c;它是Python中最受欢迎的密码学库之一。PyCryptodome提供了许多密码学算法和协议的实现&#xff0c;包括对称加密、非对称加密、消息摘要、密码哈希、数字签名等。它还提供了一些其他功能&#xff0c;如密码学安全随机…...

IDEA如何将本地项目推送到GitHub上?

大家好&#xff0c;我是G探险者。 IntelliJ IDEA 是一个强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它支持多种编程语言和工具。它也内置了对Git和GitHub的支持&#xff0c;让开发者可以轻松地将本地项目推送到GitHub上。以下是一个操作手册&#xff0c;描述了…...

Leetcode—45.跳跃游戏II【中等】

2023每日刷题&#xff08;四十&#xff09; Leetcode—45.跳跃游戏II 贪心法思想 实现代码 #define MAX(a, b) (a > b ? (a) : (b))int jump(int* nums, int numsSize) {int start 0;int end 1;int ans 0;int maxStride 0;while(end < numsSize) {maxStride 0;fo…...

基于Vue+SpringBoot的木马文件检测系统

项目编号&#xff1a; S 041 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S041&#xff0c;文末获取源码。} 项目编号&#xff1a;S041&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 木马分类模块2.3 木…...

springboot内置Tomcat流程

1、org.springframework.boot.SpringApplication#initialize setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));加载了org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext 2、spring refres…...

Android修行手册-溢出父布局的按钮实现点击

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…...

避坑指南:ABAP调用CO_XT_COMPONENT_ADD为工单批量添加组件,这些细节不注意会报错

ABAP工单组件批量维护实战&#xff1a;CO_XT_COMPONENT_ADD深度避坑指南 在SAP生产订单管理系统中&#xff0c;批量维护工单组件是每个ABAP开发者都会遇到的高频需求。当标准BAPI无法满足复杂场景时&#xff0c;CO_XT_COMPONENT_ADD这类底层函数往往成为救命稻草——但稍有不慎…...

MinIO文件服务器实战:从零搭建到SpringBoot整合

1. MinIO是什么&#xff1f;为什么选择它&#xff1f; 如果你正在寻找一个高性能、轻量级的对象存储解决方案&#xff0c;MinIO绝对值得考虑。作为一个开源的分布式对象存储服务器&#xff0c;它兼容Amazon S3 API&#xff0c;这意味着你可以用极低的成本搭建私有云存储服务。我…...

【干货】磁性元器件选型指南:共模电感、一体成型电感、CHIP LAN应用技巧 | VOOHU 电子

一、CHIP LAN&#xff1a;片式网络变压器选型要点 2. 按PoE支持等级分类 CHIP LAN作为集成式网络接口元件&#xff0c;是否支持PoE直接影响其在安防摄像头、无线AP、VoIP电话等供电场景的适用性。沃虎电子提供完整的PoE等级CHIP LAN系列&#xff0c;覆盖IEEE 802.3af&#xf…...

多尺度地理加权回归:解决空间异质性的完整指南

多尺度地理加权回归&#xff1a;解决空间异质性的完整指南 【免费下载链接】mgwr Multiscale Geographically Weighted Regression (MGWR) 项目地址: https://gitcode.com/gh_mirrors/mg/mgwr 你是否曾在地理数据分析中遇到过这样的困境&#xff1a;某些影响因素在城市中…...

基于增强大气散射模型的图像去雾与曝光优化实践

1. 为什么我们需要更好的图像去雾技术 你有没有遇到过这样的情况&#xff1f;在雾天拍了一张照片&#xff0c;结果画面灰蒙蒙的&#xff0c;远处的建筑和景物都看不清楚。这种情况在户外摄影、监控摄像头和自动驾驶系统中特别常见。传统的图像增强方法往往只是简单提高对比度&a…...

3分钟解决Windows软件运行库问题:VisualCppRedist AIO终极指南

3分钟解决Windows软件运行库问题&#xff1a;VisualCppRedist AIO终极指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为Windows软件频繁报错"DLL文…...

如何轻松下载TIDAL高品质音乐:tidal-dl-ng新手完整指南

如何轻松下载TIDAL高品质音乐&#xff1a;tidal-dl-ng新手完整指南 【免费下载链接】tidal-dl-ng TIDAL Media Downloader Next Generation! Up to HiRes / TIDAL MAX 24-bit, 192 kHz. 项目地址: https://gitcode.com/gh_mirrors/ti/tidal-dl-ng 还在为TIDAL平台上的高…...

SITS2026独家披露:37个高价值多模态艺术Prompt模板(含中文语境优化版),覆盖国风/赛博朋克/生物机械等12大风格域

第一章&#xff1a;SITS2026多模态艺术Prompt工程全景图谱 2026奇点智能技术大会(https://ml-summit.org) 核心范式演进 SITS2026标志着Prompt工程从单模态文本指令迈向跨模态协同生成的质变节点。视觉、音频、3D几何与时空动作信号不再作为独立输出目标&#xff0c;而是通过…...

Pi0开源大模型落地:制造业数字孪生平台中Pi0作为动作决策引擎

Pi0开源大模型落地&#xff1a;制造业数字孪生平台中Pi0作为动作决策引擎 想象一下这样一个场景&#xff1a;在一条繁忙的汽车装配线上&#xff0c;一个机械臂需要从传送带上抓取一个零件&#xff0c;然后精确地安装到车身上。传统的做法是工程师编写复杂的运动轨迹程序&#…...

Redis 主从延迟检测与修复

Redis主从延迟检测与修复&#xff1a;保障数据一致性的关键实践 Redis作为高性能内存数据库&#xff0c;主从复制是其高可用架构的核心。网络波动、主库压力激增或从库处理能力不足等因素可能导致主从延迟&#xff0c;进而引发数据不一致风险。本文将深入探讨Redis主从延迟的检…...