Drools 中类型不安全的对象字段访问

2024-01-12

我正在使用一个系统,其中插入 Drools 引擎的一些数据遵循以下(严重过度简化)格式:

public class Item {
    public String getValueType() { ... }
    public Object getValue() { ... }
}

这些值可能有几种不同的类型。现在,我想创建一堆 Drools 规则来检查值的各个字段,大致如下:

$a : Item(valueType == "Car", value.owner.location == "At Home")
$b : Item(valueType == "Payments", value.rates.discounts.percent == 1337)
$c : Item(valueType == "Royalty", value.student.occupation == "Librarian")

...等等。现在,我面临的问题是 Drools 在加载规则时静态类型检查规则,不允许这种使用,因为对象不能保证具有所有者/费率/学生字段等。

有没有办法做到这一点,可能是某种类型转换或绕过类型检查?

(注意:不幸的是,目前还不能选择更改要输入的模型而不是将所有内容都推入对象中。)


从 Drools 5.5.0 开始,您可以“投射”事实的属性。请阅读本文档第 4.1.1.2 节:http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html_single/ http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html_single/

基本上,您需要做的是:

$a : Item(valueType == "Car", value#Car.owner.location == "At Home")

免责声明:我以前从未尝试过这个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Drools 中类型不安全的对象字段访问 的相关文章

  • Emacs 打字骨架对插入也许

    在 Eclipse 中 编辑 Java 代码时 如果我输入一个左括号 我会得到一对括号 如果我然后 输入 第二个括号 它不会插入额外的括号 我如何在 emacs 中得到它 Eclipse 编辑器足够聪明 当我输入闭括号时 它知道我刚刚完成了
  • 将双精度转换为二进制表示形式?

    我尝试将双精度数转换为其二进制表示形式 但使用此Long toBinaryString Double doubleToRawLongBits d 没有帮助 因为我有大量数字 Long 无法存储它们 即2 900 Long toBinaryS
  • JCombobox 字符串项(可见)和整数键(固有)

    我有一个数据库模式 它将作为 JTable 列显示在 JCombobox 中以选择名称 但我希望将 ID 字段插入 作为外键 到另一个表中 通常 在下拉列表中选择一个项目 将所选项目带到组合框的显示区域 我想要做的是 当选择组合框中的任何项
  • Java OR 运算符优先级

    如何在 Java 中以 if 的方式链接条件语句b是假的 不如不检查c If a and c是假的 并且b是真的 确实c会被检查吗 if a b c 我正在寻找 PHP 所拥有的类似功能 但两者之间存在差异OR and 爪哇 如果左操作数是
  • 通过 Session.update 和 HibernateTemplate.merge 进行 Hibernate 更新的区别

    我看到了更新操作的类型 第一的 getHibernateTemplate execute new HibernateCallback public Object doInHibernate Session session session f
  • 堆内存与对象内存

    根据一篇关于Java内存和特性的论文 内存分数分为两种类型 堆内存 即应用程序在运行时消耗的内存 对象内存 即程序中使用的各种对象分配的内存 例如整数和字符串等 他们的意思是stack当他们说时的记忆object记忆 或者它们是什么意思 很
  • 如何从 Jackson 中的自定义解串器调用默认解串器

    我在杰克逊的自定义解串器有问题 我想访问默认序列化器来填充我要反序列化的对象 在填充之后 我将做一些自定义的事情 但首先我想使用默认的 Jackson 行为反序列化对象 这是我目前拥有的代码 public class UserEventDe
  • 注释处理器可以用于代码生成吗?

    假设我定义了一个名为 MyAnnotation 有一个班级X其声明为 MyAnnotation class X 现在在编译时我想检查所有带有注释的类 MyAnnotation并对更多需要在同一进程中编译的 java 源文件进行一些代码生成
  • Java 中内存高效的稀疏数组

    关于时间高效的稀疏数组存在一些问题 但我正在寻找内存效率 我需要相当于List
  • 使用枚举变量切换字符串

    我有一个具有不同值的枚举 并且想要切换字符串变量 现在 我在尝试将枚举值转换为字符串 可以用作大小写常量 时遇到了困难 我最好的尝试是将枚举转换为字符串数组 但开关似乎不接受数组值作为大小写常量 IntelliJ 说 需要恒定的表达 Enu
  • 如何将空字符串序列化为单个空标签?

    我使用 Simple XML 框架序列化此类 Root public class HowToRenderEmptyTag Element required false private String nullString 我想得到
  • 如何告诉 Eclipse 忽略 Ant build.xml 中的错误?

    我有一个使用 Maven 构建的 Eclipse 项目 并且我在 Eclipse 中使用 m2eclipse 插件来获得 Maven 支持 然而这个项目还包含一个build xml它并不用于实际构建项目 而只是用于编写脚本功能 作为项目开发
  • 使用 JPA 存储库保留 Spring Batch ItemWriter 的问题

    我对春季批次有疑问ItemWriter它依赖于 JPA 存储库来更新数据 这里是 Component public class MessagesDigestMailerItemWriter implements ItemWriter
  • Android中计算两个时间之间的差异

    我有两个字符串变量 例如 StartTime 和 EndTime 我需要通过用 StartTime 减去 EndTime 来计算 TotalTime StartTime和EndTime的格式如下 StartTime 08 00 AM End
  • 启动 Firefox 并等待其关闭

    Question 我想启动 Firefox 网络浏览器作为访问特定网站的过程 然后等到它关闭 一种特殊情况是浏览器可能已经打开并正在运行 因为用户可能已经访问过某个网站 在这种情况下 浏览器可能会在现有窗口中打开一个新选项卡 并且新启动的进
  • JAVAFX 缩放、ScrollPane 滚动

    I have JAVAFX application with zoom and scale as described here Scale at pivot point in an already scaled node https sta
  • 在Java中将32bpp图像转换为16bpp图像

    如何使用 Java 库将 32bpp 图像 ARGB 转换为 16bpp 图像 ARGB 出于我的好奇 在像素级别 这种转换有什么作用 如果我有一个保存像素值 包含所有通道 的 int 值 那么在转换发生后该 int 会有什么不同 32 位
  • 如何在Java中添加两个“卡”的值?

    我正在开发一个项目来模拟二十一点游戏中的第一笔交易 到目前为止 程序创建了两张随机等级 ACE 到 KING 和随机花色的牌 我正在努力创建一个切换表或 if else 梯形图 将两张卡的附加值分配为可变分数 下面的代码从概念上代表了我想要
  • java 更新进度条

    我有一个 JFrame 和以下组件 JButton jButton1 Progress Bar ProgressBar 及其公共静态 JLabel 状态及其公共静态 单击按钮时会执行不同的语句 我想在每个语句后更新我的进度条 这是我的代码
  • 只有创建视图层次结构的原始线程才能触摸其视图。在安卓上[重复]

    这个问题在这里已经有答案了 我只是一个初学者 所以请原谅我问一个可能愚蠢的问题 我不明白只有创建视图层次结构的原始线程才能触摸其视图的含义 请有人告诉我为什么会发生此错误以及如何解决此问题 ThankYou 这是我的班级 public cl

随机推荐

  • 如何在从 Flutter 创建文档到 Firestore 时添加时间戳 [重复]

    这个问题在这里已经有答案了 我正在编写代码以将数据从 flutter 设置到 Firestore 我想要的是添加一个用于创建数据的时间的字段 例如 createdOn Flutter 的 DateTime now 从设备获取时间 但我想获取
  • 简单的Java“新”概念问题

    编译器显示错误new Stock 2 after expect public class TestStockUI Stock stock new Stock 2 stock 0 new Stock Microsoft MSFT 15 69
  • 如何在 SQL Server 2008 上找到禁用的索引

    不久前 当我向 SQL Server 数据库中执行一些批量数据插入时 我禁用了许多索引以提高插入性能 我现在需要返回并重建 重新启用它们 不幸的是 我不确定我禁用了哪些索引 有没有办法可以查询以确定哪些索引被禁用并且应该重新启用 selec
  • CAS 与同步性能

    我已经有这个问题很长一段时间了 试图阅读大量资源并了解正在发生的事情 但我仍然无法很好地理解为什么事情是这样的 简而言之 我正在尝试测试如何CAS将执行 vssynchronized在有竞争和没有竞争的环境中 我已经把这个JMH test
  • “无法分析类:可能未加载或没有自动加载器?”

    我用一个 viewhelper 创建了 我的第一个 扩展 糟糕 出现错误 无法分析类 My Mlv ViewHelpers Format ReplacenewlinesViewHelper 可能未加载或没有自动加载器 使用中 有新闻 nam
  • ASP.Net 表单可以有 method=get 或 post 属性吗?

    我是 ASP NET 新手 我的问题是 带有 runat server 的 ASP net 表单可以有一个方法属性吗 例如
  • 我的 IIS7 网站的元数据库密钥在哪里?

    我正在尝试设置我的网站设置项目的自动 每晚 安装 我可以在命令行上指定一些安装时值 特别是 添加一个TARGETSITE值定义我的新部署将前往的网站 如何在 IIS7 安装中找到我的网站的元数据库密钥 例如 LM W3SVC 2135484
  • 测试 Windows Azure Web 应用程序的最大用户负载

    我正在对新兴 Web 技术进行一些研究 并创建了一个非常简单的 Azure 网站 该网站使用 Web 套接字和 mongo db 作为数据库 我已经设法让所有组件一起工作 现在必须对应用程序执行负载测试 主要标准是应用程序可以支持的最大用户
  • Babel 5 插件正在使用不受支持的 Babel 版本运行。尝试更新 babel-relay-plugin

    Doing Lynda 构建和部署全栈 React 应用程序教程 并卡在某个点上 出现以下错误 src index js Error BABEL Users kukodajanos Workspace ticket src index js
  • QueryOver 上的 GroupBy SqlFunction

    我有一个包含所有不同帐户名称前缀 a z 的列表 我使用这些前缀获取的 var accounts this SessionManager GetActiveSession QueryOver
  • LinqToLucene 和 Lucene.Net.Linq 之间的区别

    Are the LinqToLucene http linqtolucene codeplex com 和Lucene Net Linq https github com themotleyfool Lucene Net Linq项目不同
  • 将表单设置为父级抛出异常“顶级控件无法添加到控件”

    我想从另一个表单访问一个表单的变量 单击主窗体内的按钮时 我想将主窗体设置为父窗体 然后调出另一个窗体 子窗体 我将在其中访问主窗体的变量 我的点击处理程序如下 private void btnSystem Click object sen
  • 以时间间隔链接 UIView 动画

    我需要对 3 个 UIView 进行动画处理 淡入 淡出 1个动画持续时间为0 6秒 淡入 淡出周期为0 6 0 6秒 但我需要在 0 2 秒内启动动画 第一个动画应在 0 0 秒内启动 第二个动画应在 0 2 秒内启动 第三个动画应在 0
  • SwiftUI 列表背景的默认颜色是什么?

    我知道如何更改 SwiftUI 视图列表的背景颜色 但我找不到默认颜色 我尝试过使用 MacOS 的 数字色度计 但它无法正确识别颜色 正如您在此图中看到的 我尝试设置列表行的背景颜色 使用 listRowBackground根据数字色度计
  • kubernetes go 客户端补丁示例

    经过一番搜索后 我无法找到使用任何策略在 Patch 上执行的 golang Kube 客户端示例 我正在寻找执行此操作的 golang 示例 kubectl patch pod valid pod type json p op repla
  • 使用wp_insert_post()创建一个新页面

    我在 PHP 函数中有以下代码 当我安装允许您创建帖子或页面的插件时 该函数会被激活 工作完美并制作页面 如果 post type是 post 但如果 post type是 页面 那么它不起作用 不会创建页面 my post array p
  • Pandas 重置系列索引以删除多重索引

    我有一个看起来像这样的系列 1999 03 31 SOLD PRICE NaN 1999 06 30 SOLD PRICE NaN 1999 09 30 SOLD PRICE NaN 1999 12 31 SOLD PRICE 3 00 2
  • JavaFX 选项卡式窗格,每个选项卡上都有一个表格视图?

    我有一个选项卡式窗格 每个选项卡上都有一个表格 我向表中添加了不同的项目 我只希望每个选项卡向我显示该表的相应项目 但什么也没有出现 当我调试时 我可以清楚地看到选项卡窗格 其中包含选项卡 包含表视图 包含正确的项目 为什么这不起作用 Th
  • 如何为 android ndk 安装 libiconv?

    有人可以教我或给我指点如何为 Android 安装 libiconv 的教程吗 我已经用谷歌搜索了三天 但找不到教程或操作方法 获取 libiconv 源代码 并创建 Android mk makefile 看着这个网站 http grou
  • Drools 中类型不安全的对象字段访问

    我正在使用一个系统 其中插入 Drools 引擎的一些数据遵循以下 严重过度简化 格式 public class Item public String getValueType public Object getValue 这些值可能有几种