Да, это можно сделать. Все, что вам нужно, это возможность получить InputStream
. В моем случае я использую свой собственный класс JPA RulePackage
для сохранения источника правила в виде байта [], но вы можете использовать прямое соединение 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");
}
Вы можете использовать метод 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;
Нечто подобное.