Привет, я пытаюсь десериализовать правило, вот код:
DrlParser drlParser = new DrlParser();
// Building package
PackageDescr parse = drlParser.parse(false,myRule);
// PackageDescr parse = drlParser.parse(rule,new StringReader(localDsl));
// Saving byte array to DB
byte[] streamOut = DroolsStreamUtils.streamOut( parse );
// Kie server side
// Fetching rules for each dealer and creating kie session
ByteArrayInputStream ruleBinaryStream = new ByteArrayInputStream( streamOut );
PackageDescr pck = (PackageDescr) DroolsStreamUtils.streamIn(ruleBinaryStream);
KnowledgeBuilderImpl knowledgeBuilder = new KnowledgeBuilderImpl();
knowledgeBuilder.addPackage(pck);
// Creating map with kiesessions
final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages( Arrays.asList(knowledgeBuilder.getPackages()) );
KieSession kieSession = kieBase().newKieSession();
, но получил эту ошибку
InvalidRulePackage: Rule Compilation error : [Rule name='HDFC']
KieTest/Rule_HDFC771392821.java (7:397) : orderObject cannot be resolved
при этом без сериализации все работает нормально
Правило:
package KieTest;
import com.javatechie.spring.drools.api.model.Order;
rule "HDFC"
when
orderObject : Order(cardType=="HDFC" && price>10000);
then
System.out.println(orderObject.getPrice());
end;