kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
}
StatefulKnowledgeSession ksession = null;
EntityManagerFactory emf = Persistence.createEntityManagerFactory(
"org.jbpm.persistence.jpa");
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
Properties properties = new Properties();
properties.put("drools.processInstanceManagerFactory", "org.jbpm.persistence.processinstance.JPAProcessInstanceManagerFactory");
properties.put("drools.processSignalManagerFactory", "org.jbpm.persistence.processinstance.JPASignalManagerFactory");
KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(properties);
try {
System.out.println("Loading session data ...");
ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(
1, kbase, config, env);
} catch (RuntimeException e) {
System.out.println("Error loading session data: " + e.getMessage());
if (e instanceof IllegalStateException) {
Throwable cause = ((IllegalStateException) e).getCause();
if (cause instanceof InvocationTargetException) {
cause = cause.getCause();
if (cause != null && "Could not find session data for id 1".equals(cause.getMessage())) {
System.out.println("Creating new session data ...");
env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
ksession = JPAKnowledgeService.newStatefulKnowledgeSession(
kbase, config, env);
} else {
System.err.println("Error loading session data: " + cause);
throw e;