Drools:在数据库中存储规则

2023-12-28

目前,我将所有规则文件存储在文件系统上(它们有很多版本),并在启动时将它们的不同版本加载到内存中。我想更改为将我的 drools 文件存储在数据库中,并且想知道 Drools 是否有任何解决方案或插件可以促进这一点,或者我应该自己制作?

Thanks.


是的,这是可以做到的。您所需要的只是获得的能力InputStream.就我而言,我使用我自己的 JPA 类RulePackage将规则源保留为 byte[],但您可以使用直接 JDBC 连接来访问数据库模式中的 BLOB/CLOB 字段。重要的是还要保存存储的规则源的类型,构建规则包时需要它:

switch(rulePackage.getRuleSourceType()) {
  case DRL:
    kbuilder.add( ResourceFactory.newByteArrayResource(rulePackage.getSource()), ResourceType.DRL);
    break;
  case EXCEL:
    kbuilder.add( ResourceFactory.newByteArrayResource(rulePackage.getSource()), ResourceType.DTABLE, excelConfig);
    break;
  case CSV:
    kbuilder.add( ResourceFactory.newByteArrayResource(rulePackage.getSource()), ResourceType.DTABLE, csvConfig);
    break;
  default:
    throw new Exception("Rule package '" + rulePackage.getName() + "' has unknown type");
}

您可以考虑使用新的 InputStreamResource 方法更适合您的情况:

   case DRL:
    kbuilder.add( ResourceFactory.newInputStreamResource(new StringInputStream(myDrlAsString)), ResourceType.DRL);
    break;

or

   case DRL:
    kbuilder.add( ResourceFactory.newInputStreamResource(new ByteArrayInputStream(myDrlAsByteArr)), ResourceType.DRL);
    break;

类似的事情。

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

Drools:在数据库中存储规则 的相关文章

  • 如何获取与值匹配或存在于另一个表中的记录?

    我试图弄清楚在这种情况下如何获取所有任务 其中两个字段等于某个值或者它们存在于另一个表中 这是查询 SELECT TASKS task id TASKS task title TASKS task description TASKS tas
  • 用于只读 DB 的 java ORM

    我了解 hibernate 但我想知道是否有一个更轻的 ORM 引擎只读数据库 我的意思是 我不需要一些事务查询或更新一些记录 另一方面 我需要处理一些大的记录列表 List
  • Postgres - 如何在插入时自动调用 ST_SetSRID(ST_MakePoint(lng, lat), 4326)?

    我正在使用postGIS 并且我对SQL不是很熟悉 我可以成功插入到我的markers表只要我做这样的事情 伪代码 INSERT INTO markers created by title description lat lng geogr
  • PostgreSQL 中字符串列类型的索引数组

    是否可以在类型为的列上创建索引文本数组 尝试使用GIN索引 但查询似乎没有使用这些索引 Example CREATE TABLE users name VARCHAR 100 groups TEXT Query SELECT name FR
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 如何在 Delphi DBLookupComboBox 中选择正确的项目

    我有一个数据库查找组合框连接到数据库查询 那部分工作正常 当我运行程序时数据库查找组合框填充有查询的结果 我想看看数据库查找组合框填充第一项 请选择 当 的时候程序第一次运行或者当一个新项目行动已启动 见下图 另外 如果我正在加载以前保存的
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • 如何找到多个列中的最小值

    我在我的 DB 3 col 中有一个值 我想在所有这些值中找到一个值 如下所述 表名 MyTable id col1 col2 col3 1 200 300 400 2 100 150 300 3 800 102 20 4 80 80 0
  • 在触发期间更新 oracle 中的同一行?

    简短的问题 因为我不知道如何搜索这个 我可以 重新更新 同一行吗 例如 我有一个存储付款小计的字段 并且考虑到我的业务限制 我可以更新该值 我可以仅用触发器更新同一行的总计吗 预先谢谢您 顺便说一句 我正在使用 Oracle 和 PL SQ
  • 如何在首次运行时填充大型 SQLite 数据库

    我正在开发一个基于 SQLite 数据库的字典应用程序 该数据库包含超过 300 000 行 问题在于 最终形式的数据库文件由全文索引表组成 并且重量远远超过150Mb 我通过创建无内容的 fts4 表设法将 db 文件大小降至最低 数据库
  • Sequelize.js 中的自定义或覆盖连接

    我需要使用创建自定义连接条件Sequelize js http sequelizejs com使用 MSSQL 具体来说 我需要加入TableB基于一个COALESCE中的列的值TableA and TableB并最终得到这样的连接条件 L
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s
  • 我应该用不可变或可变的数据结构来表示数据库数据吗?

    我目前正在使用 Scala 进行编程 但我想这适用于任何函数式编程语言 或者更确切地说 任何建议不变性并可以与数据库交互的编程语言 当我从数据库中获取数据时 我将其映射到模型数据结构 在函数式编程中 数据结构往往是不可变的 但是数据库中的数
  • 如何通过 SQL 表关联 SQL 中的实体

    我是数据库设计的初学者 我需要为项目创建数据库 我可以用面向对象的术语解释我想要做什么 值得庆幸的是 数据库专家会很友善地向我解释如何在数据库方面处理这个问题 我想创建一个与位置实体 州 城市 有关系的用户 ID 名称 实体 所以在编程语言
  • 删除数据库中的行后如何重新排序ID

    我正在使用 C 来制作具有 sql 数据库的程序 在数据库中我有一个名为Workers 它有一个自动增量和主键ID column 当我删除一条记录时 ID 之间会出现间隙 删除记录后如何重新排序 ID UPDATE 我要做的就是找到记录后将
  • 什么是时序数据库?

    What is 时间序列数据库例如InfluxDB 我应该何时 何地使用它 请给我它的业务场景示例 检查wiki https en wikipedia org wiki Time series database 时间序列数据库 TSDB 是
  • Flutter 中有预填充数据库使用的示例吗?

    Flutter 中有预填充数据库使用的示例吗 我不需要 CRUD 示例 此时我只需要从数据库读取数据即可 我是 Flutter 新手 所以一步一步的教程会很好 您可以将您的应用程序与预填充的 sqlite 数据库捆绑在一起assets文件夹

随机推荐

  • `git rebase` 不更新分支?

    我有这个 master foo v v bar A B C D v E F G 我要这个 master foo v v bar A B C D v E F G so I我认为我需要做 git checkout bar git rebase
  • 如果通常的“t()”不起作用,如何转置 r 中的矩阵?

    我有一个矩阵 我试图在 R 中转置 但 t 函数没有返回正确的答案 如何转置矩阵 gt xx matrix c 3 7 4 8 2 byrow TRUE gt xx 1 2 1 3 7 2 4 8 gt t xx 1 0 7071068 0
  • 如何在Delphi中检查素数

    我想将 1 到 10000 之间的所有素数读入一个动态数组 将所有非素数读入另一个动态数组 然后将素数数组读入richedit1到目前为止我有 procedure primearrays var j k l i m integer k is
  • 如何使用仅在运行时已知的值来初始化对象值?

    假设我正在尝试编写一个简单的井字游戏 它有一个 M x N 字段 游戏只有一个字段 因此它可能应该用单例来表示object 像这样 object Field val height Int 20 val width Int 15 但我不想对高
  • CTE 到底如何发挥作用?

    我碰到这个用于连接行元素的 CTE 解决方案 http www simple talk com sql t sql programming concatenating row values in transact sql 我觉得这太棒了 我
  • 以某种方式在列表中注册我的课程

    我希望能够在一段时间内注册我的课程std map或向量 现在不要考虑重复等 但我不想在类构造函数调用或类的任何函数内注册它 以某种方式在类外部进行注册 所以即使我从未实例化它 我也能够知道它存在 Example Somehow from o
  • 如何让三星智能电视模拟器查看我的应用程序?

    我刚刚开始开发三星智能电视 到目前为止 我的第一步是一个巨大的失败 我正在运行 Linux 并且因为我已经安装并配置了 Eclipse 以进行 Android 开发 所以我尚未成功安装和运行智能电视 SDK 然而 受到鼓励如何在没有 IDE
  • gwt 中的 Window.alert() 事件

    我有一个疑问 如果我们在 gwt 的 Window alert 中按 OK 按钮会发生什么 如果我们按下 确定 按钮 背面是否会发生任何事件 Window alert 是一个阻塞调用 所以点击后OK代码恢复运行 Window alert O
  • 在 WiX 3.6 中设置 WebSite 元素的 AppPool

    我有一个 WiX 安装程序 它设置了几个根 IIS 网站 每个网站都有许多 Web 应用程序 我们为每个根都有一个单独的应用程序池 并将每个 Web 应用程序放入该应用程序池中 不幸的是 我找不到一种方法来确保网站进入其所需的应用程序池 而
  • 管理手动 URL 导航上的用户身份验证状态

    我将 Angular2 与 ASP NET Core MVC 结合使用 并且管理手动 URL 导航工作正常 服务器正在使用 Angular2 成功加载我的主页视图 在用户身份验证上 我设置一个会话变量 如下所示 HttpHelper Htt
  • 在VS2005上使用“--layout=system”时Boost链接错误

    我是 boost 新手 我想尝试一下 dll 的一些实际部署场景 因此我使用以下命令来编译 安装库 bjam install layout system variant debug runtime link shared link shar
  • 设置子进程中共享 c_char_p 中字符串的值?

    我有这样的情况 主进程生成一些子进程 它们应该将结果写入字符串和数字类型的共享对象中 对于数字类型没有问题 但对于字符串 值将丢失 import multiprocessing as mp from ctypes import Struct
  • 如何获取项目中所有功能的列表?

    我想以编程方式提取 Google Apps 项目中所有功能的列表 任何服务中似乎都没有一种方法可以轻松提取它们 除非它似乎以某种方式存储在 this 函数中 最好的方法是什么 您想要检索函数列表 您希望使用 Google Apps 脚本来实
  • scipy 成对距离和 X.X+Y.Y - X.Y^t 之间的差异

    假设我们的数据为 d1 np random uniform low 0 high 2 size 3 2 d2 np random uniform low 3 high 5 size 3 2 X np vstack d1 d2 X array
  • “.T”对于 Numpy 数组意味着什么?

    我在 SciPy 文档中看到了这个例子 x y np random multivariate normal mean cov 5000 T 最后的 T 实际上在这里做什么 The T访问属性T对象的 它恰好是一个 NumPy 数组 这T属性
  • 多个新元素的角度交错动画

    我正在尝试在列表中添加交错动画 到目前为止 我已经成功地加载了交错动画 除了加载之外 我还希望在将新项目添加到数组时触发交错动画 我按照这个例子 https medium com google developer experts angul
  • InnoSetup:如何在组件描述中添加换行符

    我正在尝试在组件的描述中间添加换行符 但我似乎找不到合适的语法 Components Name Component A Description This is component A NewLine My component A has t
  • matlab函数sum()的奇怪行为

    知道为什么 Matlab 会这样吗 gt gt sum 0 0 0 Subscript indices must either be real positive integers or logicals gt gt sum 1 1 1 an
  • Xcode Interface Builder - 删除/重命名错误接线的 IBOutlets / IBActions 的“正确”方法?

    我是 Xcode 新手 使用 Swift 工作 所以我不确定我所描述的是否实际上是一个错误 使用界面生成器和助理编辑器时 我可以创建标签 按钮等 并通过按住 Control 键拖动在代码中创建 Outlet 和 Action 只要我是完美的
  • Drools:在数据库中存储规则

    目前 我将所有规则文件存储在文件系统上 它们有很多版本 并在启动时将它们的不同版本加载到内存中 我想更改为将我的 drools 文件存储在数据库中 并且想知道 Drools 是否有任何解决方案或插件可以促进这一点 或者我应该自己制作 Tha