I am trying to use Drools with Spring-Hibernate. I don't know whether
it's a proper way of using Drools with Spring and Hibernate.
I am having the MVC application in Spring. This MVC application is
having the form for adding the employee id and employee name. I have a
bean for Employee. And EmployeeContoller using SimpleFormController in
Spring. And I am having the DAO Interface with two methods
addEmp(Employee e) and displayEmp(empid) and the implementation for
this interface in Hibernate.
What I am trying to do is, I am checking a conditon in .drl file, if
it satisfies the condition in the then part I need to save the
employee bean into database.
My DRL:
package com.example;
import com.example.EmployeeBean;
rule "My First Rule"
when
a:EmployeeBean(empName == "Andrew")
then
System.out.println("Hi Andrew -- My First Rule is Fired Successfully!!");
a.getempDAOTarget().addEmp(a);
end
But I am getting the following error:
It's Endowment Policy -- My First Rule is Fired Successfully!!
java.lang.NullPointerException
at com.example.Rule_My_First_Rule_0.consequence(Rule_My_First_Rule_0.java:9)
at
com.example.Rule_My_First_Rule_0ConsequenceInvoker.evaluate(Rule_My_First_Rule_0ConsequenceInvoker.java:22)
at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
at com.example.PolicyController.onSubmit(PolicyController.java:41)
at
org.springframework.web.servlet.mvc.SimpleFormController.onSubmit(SimpleFormController.java:356)
at
org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:258)
at
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:249)
at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)