加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Drools:在数据库中存储规则

发布时间:2020-12-12 08:44:13 所属栏目:MsSql教程 来源:网络整理
导读:目前,我将所有规则文件存储在文件系统上(有很多版本),并在启动时将不同版本的文件加载到内存中.我想改变将我的流口水文件存储在数据库中,并且想知道Drools是否有任何解决方案或插件,这有助于这个或我应该制作自己的? 谢谢. 解决方法 是的,可以做到.所有你需
目前,我将所有规则文件存储在文件系统上(有很多版本),并在启动时将不同版本的文件加载到内存中.我想改变将我的流口水文件存储在数据库中,并且想知道Drools是否有任何解决方案或插件,这有助于这个或我应该制作自己的?

谢谢.

解决方法

是的,可以做到.所有你需要的是获取InputStream的能力.在我的情况下,我使用我自己的JPA类RulePackage来保持规则源为byte [],但是您可以使用直接JDBC连接来访问DB模式中的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()),csvConfig);
    break;
  default:
    throw new Exception("Rule package '" + rulePackage.getName() + "' has unknown type");
}

您可以考虑使用newInputStreamResource方法,如果更适用于您的情况:

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

要么

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

这样的东西

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读