[jboss-svn-commits] JBL Code SVN: r30812 - labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Dec 24 11:09:54 EST 2009


Author: KrisVerlaenen
Date: 2009-12-24 11:09:54 -0500 (Thu, 24 Dec 2009)
New Revision: 30812

Modified:
   labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java
Log:
 - fixed wrapped exception when failing to instantiate session

Modified: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java	2009-12-23 20:03:43 UTC (rev 30811)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java	2009-12-24 16:09:54 UTC (rev 30812)
@@ -1,182 +1,197 @@
-package org.drools.integration.console;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.agent.KnowledgeAgent;
-import org.drools.agent.KnowledgeAgentFactory;
-import org.drools.definition.KnowledgePackage;
-import org.drools.definition.process.Process;
-import org.drools.io.ResourceFactory;
-import org.drools.persistence.jpa.JPAKnowledgeService;
-import org.drools.process.audit.ProcessInstanceDbLog;
-import org.drools.process.audit.ProcessInstanceLog;
-import org.drools.process.audit.WorkingMemoryDbLogger;
-import org.drools.process.core.context.variable.VariableScope;
-import org.drools.process.instance.context.variable.VariableScopeInstance;
-import org.drools.process.workitem.wsht.CommandBasedWSHumanTaskHandler;
-import org.drools.runtime.Environment;
-import org.drools.runtime.EnvironmentName;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.process.ProcessInstance;
-import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
-
-public class DroolsFlowCommandDelegate {
-	
-	private static StatefulKnowledgeSession ksession;
-	
-	public DroolsFlowCommandDelegate() {
-		getSession();
-	}
-	
-	private StatefulKnowledgeSession newStatefulKnowledgeSession() {
-		try {
-			KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Guvnor default");
-			kagent.applyChangeSet(ResourceFactory.newClassPathResource("ChangeSet.xml"));
-			kagent.monitorResourceChangeEvents(false);
-			KnowledgeBase kbase = kagent.getKnowledgeBase();
-			StatefulKnowledgeSession ksession = null;
-			EntityManagerFactory emf = Persistence.createEntityManagerFactory(
-					"org.drools.persistence.jpa");
-	        Environment env = KnowledgeBaseFactory.newEnvironment();
-	        env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
-			try {
-				ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(
-					1, kbase, null, env);
-				System.out.println("Loading session data ...");
-			} catch (RuntimeException e) {
-				if ("Could not find session data for id 1".equals(e.getMessage())) {
-					ksession = JPAKnowledgeService.newStatefulKnowledgeSession(
-						kbase, null, env);
-					System.out.println("Creating new session data ...");
-				} else {
-					throw e;
-				}
-			}
-			new WorkingMemoryDbLogger(ksession);
-			ksession.getWorkItemManager().registerWorkItemHandler(
-				"Human Task", new CommandBasedWSHumanTaskHandler(ksession));
-			System.out.println("Successfully loaded default package from Guvnor");
-			return ksession;
-		} catch (Throwable t) {
-			throw new RuntimeException(
-				"Could not initialize stateful knowledge session: "
-					+ t.getMessage(), t);
-		}
-	}
-	
-	private StatefulKnowledgeSession getSession() {
-		if (ksession == null) {
-			ksession = newStatefulKnowledgeSession();
-		}
-		return ksession;
-	}
-	
-	public List<Process> getProcesses() {
-		List<Process> result = new ArrayList<Process>();
-		for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
-			result.addAll(kpackage.getProcesses());
-		}
-		return result;
-	}
-	
-	public Process getProcess(String processId) {
-		for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
-			for (Process process: kpackage.getProcesses()) {
-				if (processId.equals(process.getId())) {
-					return process;
-				}
-			}
-		}
-		return null;
-	}
-	
-	public Process getProcessByName(String name) {
-		for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
-			for (Process process: kpackage.getProcesses()) {
-				if (name.equals(process.getName())) {
-					return process;
-				}
-			}
-		}
-		return null;
-	}
-
-	public void removeProcess(String processId) {
-		throw new UnsupportedOperationException();
-	}
-	
-	public ProcessInstanceLog getProcessInstanceLog(String processInstanceId) {
-		return ProcessInstanceDbLog.findProcessInstance(new Long(processInstanceId));
-	}
-
-	public List<ProcessInstanceLog> getProcessInstanceLogsByProcessId(String processId) {
-		return ProcessInstanceDbLog.findProcessInstances(processId);
-	}
-	
-	public ProcessInstanceLog startProcess(String processId, Map<String, Object> parameters) {
-		long processInstanceId = ksession.startProcess(processId, parameters).getId();
-		return ProcessInstanceDbLog.findProcessInstance(processInstanceId);
-	}
-	
-	public void abortProcessInstance(String processInstanceId) {
-		ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
-		if (processInstance != null) {
-			ksession.abortProcessInstance(new Long(processInstanceId));
-		} else {
-			throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
-		}
-	}
-	
-	public Map<String, Object> getProcessInstanceVariables(String processInstanceId) {
-		ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
-		if (processInstance != null) {
-		    Map<String, Object> variables = 
-		        ((WorkflowProcessInstanceImpl) processInstance).getVariables();
-            if (variables == null) {
-				return new HashMap<String, Object>();
-			}
-			// filter out null values
-			Map<String, Object> result = new HashMap<String, Object>();
-			for (Map.Entry<String, Object> entry: variables.entrySet()) {
-				if (entry.getValue() != null) {
-					result.put(entry.getKey(), entry.getValue());
-				}
-			}
-			return result;
-		} else {
-			throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
-		}
-	}
-	
-	public void setProcessInstanceVariables(String processInstanceId, Map<String, Object> variables) {
-		ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
-		if (processInstance != null) {
-			VariableScopeInstance variableScope = (VariableScopeInstance) 
-				((org.drools.process.instance.ProcessInstance) processInstance)
-					.getContextInstance(VariableScope.VARIABLE_SCOPE);
-			if (variableScope == null) {
-				throw new IllegalArgumentException(
-					"Could not find variable scope for process instance " + processInstanceId);
-			}
-			for (Map.Entry<String, Object> entry: variables.entrySet()) {
-				variableScope.setVariable(entry.getKey(), entry.getValue());
-			}
-		} else {
-			throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
-		}
-	}
-	
-	public void signalExecution(String executionId, String signal) {
-		ksession.getProcessInstance(new Long(executionId))
-			.signalEvent("signal", signal);
-	}
-
-}
+package org.drools.integration.console;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.KnowledgeAgentFactory;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definition.process.Process;
+import org.drools.io.ResourceFactory;
+import org.drools.persistence.jpa.JPAKnowledgeService;
+import org.drools.process.audit.ProcessInstanceDbLog;
+import org.drools.process.audit.ProcessInstanceLog;
+import org.drools.process.audit.WorkingMemoryDbLogger;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
+import org.drools.process.workitem.wsht.CommandBasedWSHumanTaskHandler;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
+
+public class DroolsFlowCommandDelegate {
+	
+	private static StatefulKnowledgeSession ksession;
+	
+	public DroolsFlowCommandDelegate() {
+		getSession();
+	}
+	
+	private StatefulKnowledgeSession newStatefulKnowledgeSession() {
+		try {
+			KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Guvnor default");
+			kagent.applyChangeSet(ResourceFactory.newClassPathResource("ChangeSet.xml"));
+			kagent.monitorResourceChangeEvents(false);
+			KnowledgeBase kbase = kagent.getKnowledgeBase();
+			StatefulKnowledgeSession ksession = null;
+			EntityManagerFactory emf = Persistence.createEntityManagerFactory(
+					"org.drools.persistence.jpa");
+	        Environment env = KnowledgeBaseFactory.newEnvironment();
+	        env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
+			try {
+				System.out.println("Loading session data ...");
+                ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(
+					1, kbase, null, 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 ...");
+	                        ksession = JPAKnowledgeService.newStatefulKnowledgeSession(
+	                            kbase, null, env);
+	                    } else {
+	                        System.err.println("Error loading session data: " + cause);
+	                        throw e;
+	                    }
+				    } else {
+                        System.err.println("Error loading session data: " + cause);
+    					throw e;
+    				}
+				} else {
+                    System.err.println("Error loading session data: " + e.getMessage());
+                    throw e;
+				}
+			}
+			new WorkingMemoryDbLogger(ksession);
+			ksession.getWorkItemManager().registerWorkItemHandler(
+				"Human Task", new CommandBasedWSHumanTaskHandler(ksession));
+			System.out.println("Successfully loaded default package from Guvnor");
+			return ksession;
+		} catch (Throwable t) {
+			throw new RuntimeException(
+				"Could not initialize stateful knowledge session: "
+					+ t.getMessage(), t);
+		}
+	}
+	
+	private StatefulKnowledgeSession getSession() {
+		if (ksession == null) {
+			ksession = newStatefulKnowledgeSession();
+		}
+		return ksession;
+	}
+	
+	public List<Process> getProcesses() {
+		List<Process> result = new ArrayList<Process>();
+		for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
+			result.addAll(kpackage.getProcesses());
+		}
+		return result;
+	}
+	
+	public Process getProcess(String processId) {
+		for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
+			for (Process process: kpackage.getProcesses()) {
+				if (processId.equals(process.getId())) {
+					return process;
+				}
+			}
+		}
+		return null;
+	}
+	
+	public Process getProcessByName(String name) {
+		for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
+			for (Process process: kpackage.getProcesses()) {
+				if (name.equals(process.getName())) {
+					return process;
+				}
+			}
+		}
+		return null;
+	}
+
+	public void removeProcess(String processId) {
+		throw new UnsupportedOperationException();
+	}
+	
+	public ProcessInstanceLog getProcessInstanceLog(String processInstanceId) {
+		return ProcessInstanceDbLog.findProcessInstance(new Long(processInstanceId));
+	}
+
+	public List<ProcessInstanceLog> getProcessInstanceLogsByProcessId(String processId) {
+		return ProcessInstanceDbLog.findProcessInstances(processId);
+	}
+	
+	public ProcessInstanceLog startProcess(String processId, Map<String, Object> parameters) {
+		long processInstanceId = ksession.startProcess(processId, parameters).getId();
+		return ProcessInstanceDbLog.findProcessInstance(processInstanceId);
+	}
+	
+	public void abortProcessInstance(String processInstanceId) {
+		ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
+		if (processInstance != null) {
+			ksession.abortProcessInstance(new Long(processInstanceId));
+		} else {
+			throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
+		}
+	}
+	
+	public Map<String, Object> getProcessInstanceVariables(String processInstanceId) {
+		ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
+		if (processInstance != null) {
+		    Map<String, Object> variables = 
+		        ((WorkflowProcessInstanceImpl) processInstance).getVariables();
+            if (variables == null) {
+				return new HashMap<String, Object>();
+			}
+			// filter out null values
+			Map<String, Object> result = new HashMap<String, Object>();
+			for (Map.Entry<String, Object> entry: variables.entrySet()) {
+				if (entry.getValue() != null) {
+					result.put(entry.getKey(), entry.getValue());
+				}
+			}
+			return result;
+		} else {
+			throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
+		}
+	}
+	
+	public void setProcessInstanceVariables(String processInstanceId, Map<String, Object> variables) {
+		ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
+		if (processInstance != null) {
+			VariableScopeInstance variableScope = (VariableScopeInstance) 
+				((org.drools.process.instance.ProcessInstance) processInstance)
+					.getContextInstance(VariableScope.VARIABLE_SCOPE);
+			if (variableScope == null) {
+				throw new IllegalArgumentException(
+					"Could not find variable scope for process instance " + processInstanceId);
+			}
+			for (Map.Entry<String, Object> entry: variables.entrySet()) {
+				variableScope.setVariable(entry.getKey(), entry.getValue());
+			}
+		} else {
+			throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
+		}
+	}
+	
+	public void signalExecution(String executionId, String signal) {
+		ksession.getProcessInstance(new Long(executionId))
+			.signalEvent("signal", signal);
+	}
+
+}



More information about the jboss-svn-commits mailing list