Sí, se puede hacer. Todo lo que necesita es la capacidad de obtener InputStream
. En mi caso, uso mi propia clase JPA RulePackage
para conservar el origen de la regla como byte [], pero puede usar la conexión JDBC directa para acceder a los campos BLOB/CLOB en su esquema DB. Lo importante es salvar también el tipo de fuente regla almacenada, será necesaria cuando la construcción de paquetes de reglas:
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");
}
Se podría considerar el uso de método newInputStreamResource si más aplicable en su caso:
case DRL:
kbuilder.add(ResourceFactory.newInputStreamResource(new StringInputStream(myDrlAsString)), ResourceType.DRL);
break;
o
case DRL:
kbuilder.add(ResourceFactory.newInputStreamResource(new ByteArrayInputStream(myDrlAsByteArr)), ResourceType.DRL);
break;
Algo así.