I am struggling to identify why my another object (Claim) inserted into ksession is not
working..
However, I tried the object Message() is working but not Claim(). I printed values of
Claim Object its working but not in rule.
Where I missed??? Please help...
Here is the code.
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
TClaim claim = loadFile();
System.out.println("......CategoryOfService---------"+claim.getClaimIdentificationInfo().getCategoryOfService().getValue());//working
System.out.println("......ProviderclaimNumber--"+claim.getClaimIdentificationInfo().getProviderClaimNumber().getValue());
//working
ksession.insert(message);
ksession.insert(claim);
ksession.fireAllRules();
private static TClaim loadFile() throws JAXBException, FileNotFoundException {
JAXBContext jaxbContext = JAXBContext.newInstance("com.sample");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement<?> unmarshalledObject = (JAXBElement<?>)
unmarshaller.unmarshal(new FileInputStream("Encounter.xml"));
TClaim claim = (TClaim) unmarshalledObject.getValue();
return claim;
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"),
ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource("setBaseECN.drl"),
ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
----Rule file setBaseECN.drl----
rule "testing claim rule"
when
Claim();
then
System.out.println("..........Executing.......claim...rule.");//not
working
end
rule "testing message rule"
when
Message()
then
System.out.println("........Executing......message rule");//working
end