是的,可以做到.所有你需要的是获取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;
这样的东西