JBoss Community

IllegalStateException Using StatefulKnowledgeSession

created by irshad mansuri in jBPM Development - View the full discussion

Hi i have created a workflow using humantask with database. But when i am deploying the process i am getting this error "java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException".

I debugged the java code and found the its not able to create "StatefulKnowledgeSession".  This is the code which i am implementing.

 


@Test

     public void processInstancePersistentTest() throws Exception{

       

        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

        kbuilder.add(new ClassPathResource("HumanWorkflow.bpmn"), ResourceType.BPMN2);

                    

        System.out.println("=== Knowledge Base Called ====");

       

        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();

        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());

     

        Environment env = EnvironmentFactory.newEnvironment();

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.task");       

        env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);       

        env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());

 

        System.out.println("=== Stateful Knowledge Session Called ====");

     

        final StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);

        int sessionId = ksession.getId();

     

        assertNotNull(sessionId);

        assertTrue(sessionId != 0);

       

        System.out.println("=== Human Task Handler Called ====");

        @SuppressWarnings("deprecation")

        CommandBasedWSHumanTaskHandler taskHandler = new CommandBasedWSHumanTaskHandler(ksession);

        ksession.getWorkItemManager().registerWorkItemHandler("Human Task",    taskHandler);

       

       

         ProcessInstance processInstance = ksession.createProcessInstance("com.sample.hello", null);

         System.out.println(">>> Let's Start the Process Instance");

         long processInstanceOne = processInstance.getId();

         ksession.startProcessInstance(processInstanceOne);

         ksession.dispose();

 

    }  

 

 

and this is the error which i am getting on debugging the code.

 

 

    java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException

    at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:142)

    at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.newStatefulKnowledgeSession(KnowledgeStoreServiceImpl.java:66)

    at org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:122)

    at com.sample.HelloProcesTest.processInstancePersistentTest(HelloProcesTest.java:58)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)

    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

    at org.jbpm.test.KnowledgeSessionCleanup$1.evaluate(KnowledgeSessionCleanup.java:28)

    at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48)

    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)

    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)

    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)

    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)

    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)

    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)

    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)

    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)

    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)

    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

Caused by: java.lang.reflect.InvocationTargetException

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

    at java.lang.reflect.Constructor.newInstance(Unknown Source)

    at org.drools.persistence.jpa.KnowledgeStoreServiceImpl.buildCommandService(KnowledgeStoreServiceImpl.java:128)

    ... 29 more

Caused by: java.lang.NullPointerException

    at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:168)

    ... 34 more

 

Let me know if i am missing out something.

 

Thanks

Reply to this message by going to Community

Start a new discussion in jBPM Development at Community