Как сериализовать / десериализовать в Drools 7 - PullRequest
0 голосов
/ 18 июня 2020

Привет, я пытаюсь десериализовать правило, вот код:

   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;
...