Rafael Soledade [https://community.jboss.org/people/rafaelsoledadem] created the discussion
"No process or session info in database table" To view the discussion, visit: https://community.jboss.org/message/787027#787027 -------------------------------------------------------------- Hi, I'm developing a business process flow using jBPM, and so far I've created the BPMN and configured the persistence to work with my database. I've noticed a class mapping in the persistence.xml file for the tables SessionInfo, WorkItemInfo and ProcessInstanceInfo, and they are indeed successfully created in my MySQL schema. The problem is, once I start a new knowledge session and run my process instance, nothing is written in those tables, so I can't really restore sessions (not having persistence, then). What am I doing wrong here? Any help would be appreciated! Here's my code so far: .java main // Load up the events knowledge base KnowledgeBase eventKbase = readEventKnowledgeBase(); StatefulKnowledgeSession eventKsession = eventKbase .newStatefulKnowledgeSession(); // Load up the knowledge base KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = null; // Settings up JPA persistence EntityManagerFactory emf = Persistence .createEntityManagerFactory("test"); Environment env = KnowledgeBaseFactory.newEnvironment(); env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf); env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager()); // create a new knowledge session that uses JPA to store the runtime // state ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env); // this session id - will have to be stored for recovery of session int sessionId = ksession.getId(); System.out.printf("\n-----> Session ID: %d\n", sessionId); // loads up the session with sessionId - not sure how to use this yet // ksession = // JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, // null, env); // uses custom process event listener ksession.addEventListener(new CustomProcessEventListener(eventKsession)); // register work items ksession.getWorkItemManager().registerWorkItemHandler("Notification", new MyWorkItemHandler(ksession)); // start transaction UserTransaction transaction = (UserTransaction) new InitialContext() .lookup("java:comp/UserTransaction"); transaction.begin(); // Create the process instance ProcessInstance processInstance = ksession.createProcessInstance( "com.sample.bpmn.hello", null); System.out.println("\n-----> Starting new Business process " + processInstance.getProcessId() + " <ID:" + sessionId + ">\n"); // Start the BPM process ksession.startProcessInstance(processInstance.getId()); transaction.commit(); // Did the process instance complete successfully ? if (processInstance.getState() == ProcessInstance.STATE_COMPLETED) { System.out.printf("\n-----> Business process " + processInstance.getProcessId() + " <ID:" + sessionId + "> successfully completed\n"); } // free resources and end session emf.close(); ksession.dispose(); Custom Work Item Handler: public class MyWorkItemHandler implements WorkItemHandler { private KnowledgeRuntime session; public MyWorkItemHandler() { } public MyWorkItemHandler(KnowledgeRuntime session) { this(); this.session = session; } public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { /** // extract parameters String from = (String) workItem.getParameter("From"); String to = (String) workItem.getParameter("To"); String message = (String) workItem.getParameter("Message"); String priority = (String) workItem.getParameter("Priority"); // Artificial wait try { Thread.sleep(5000); } catch (Exception ex) { } System.out.println("###work item handler operations###"); session.getWorkItemManager().completeWorkItem(workItem.getId(), null); //manager.completeWorkItem(workItem.getId(), null); } persistence.xml: <persistence-unit name="test" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class> <class>org.drools.persistence.info.SessionInfo</class> <class>org.drools.persistence.info.WorkItemInfo</class> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test" /> <property name="hibernate.connection.username" value="root" /> <property name="hibernate.connection.password" value="12345" /> <property name="hibernate.connection.autocommit" value="false" /> <property name="hibernate.max_fetch_depth" value="3" /> <property name="hibernate.hbm2ddl.auto" value="create" /> <property name="hibernate.show_sql" value="false" /> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" /> </properties> </persistence-unit> </persistence> -------------------------------------------------------------- Reply to this message by going to Community [https://community.jboss.org/message/787027#787027] Start a new discussion in jBPM at Community [https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]
_______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
