[jboss-svn-commits] JBL Code SVN: r38273 - labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 15 15:28:49 EST 2013
Author: tcunning
Date: 2013-01-15 15:28:48 -0500 (Tue, 15 Jan 2013)
New Revision: 38273
Modified:
labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java
Log:
JBESB-3862
Use one static session and one handler for human task.
Modified: labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java 2013-01-15 18:22:07 UTC (rev 38272)
+++ labs/jbossesb/branches/JBESB_4_11_CP/product/services/jbpm5/src/main/java/org/jboss/soa/esb/services/jbpm5/actions/AbstractBpm5Action.java 2013-01-15 20:28:48 UTC (rev 38273)
@@ -61,7 +61,6 @@
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.conf.ClockTypeOption;
import org.drools.runtime.process.WorkItemHandler;
-
import org.drools.runtime.StatefulKnowledgeSession;
/**
@@ -71,37 +70,38 @@
* @since Version 4.11
*/
public abstract class AbstractBpm5Action extends AbstractActionPipelineProcessor {
- protected ConfigTree configTree;
protected Logger logger;
-
+ protected ConfigTree configTree;
+
+ /* ksession */
+ public static StatefulKnowledgeSession _ksession = null;
+ public static WorkItemHandler khandler = null;
+
/* Defaults are HornetQ default settings to match the BRMS defaults */
public static final String DEFAULT_HANDLER_CLASS = "org.jbpm.task.service.hornetq.CommandBasedHornetQWSHumanTaskHandler";
public static final String DEFAULT_HANDLER_HOST = "127.0.0.1";
- public static final String DEFAULT_HANDLER_PORT = "5446";
-
- private UserTransaction emfUserTransaction;
-
- protected String entityFactoryName;
-
- protected String processDefName;
+ public static final String DEFAULT_HANDLER_PORT = "5153";
/* Handler settings */
protected String handlerClass;
protected String handlerHost;
protected String handlerPort;
-
+ protected String entityFactoryName;
+ protected String processDefName;
+
+ protected KnowledgeBase kbase;
protected KnowledgeBuilder kbuilder;
- protected Environment kenvironment;
protected KnowledgeSessionConfiguration config;
- protected KnowledgeBase kbase;
-
+
+ protected Environment kenvironment;
+ protected UserTransaction emfUserTransaction;
+
public AbstractBpm5Action(ConfigTree configTree, Logger logger) throws ConfigurationException
{
- this.configTree = configTree;
this.logger = logger;
+ this.configTree = configTree;
- this.entityFactoryName = configTree.getAttribute(ProcessConstants.ENTITY_FACTORY_NAME, "jbpm5Persistence.jpa");
-
+ this.entityFactoryName = configTree.getAttribute(ProcessConstants.ENTITY_FACTORY_NAME, "jbpm5Persistence.jpa");
this.processDefName = configTree.getRequiredAttribute(ProcessConstants.PROCESS_DEFINITION_NAME);
this.handlerClass = configTree.getAttribute(ProcessConstants.PROCESS_HANDLER_CLASS, DEFAULT_HANDLER_CLASS);
@@ -121,6 +121,27 @@
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(processDefName), ResourceType.BPMN2);
kbase = kbuilder.newKnowledgeBase();
+
+ // Create session
+ synchronized (this) {
+ if (_ksession == null) {
+ _ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, config, kenvironment);
+ try {
+ khandler = getHandler(_ksession);
+ } catch (Exception e) {
+ throw new ActionLifecycleException(e);
+ }
+
+ logger.debug("Session id: " + _ksession.getId());
+
+ // Register ESB WorkItemHandler as well
+ ESBServiceWorkItemHandler esbhandler = new ESBServiceWorkItemHandler();
+ ESBActionWorkItemHandler actionhandler = new ESBActionWorkItemHandler();
+ _ksession.getWorkItemManager().registerWorkItemHandler("JBossESB", esbhandler);
+ _ksession.getWorkItemManager().registerWorkItemHandler("ESBAction", actionhandler);
+ _ksession.getWorkItemManager().registerWorkItemHandler("Human Task", khandler);
+ }
+ }
}
public WorkItemHandler getHandler(StatefulKnowledgeSession session) throws ClassNotFoundException,
@@ -132,25 +153,6 @@
}
/**
- * @param wih
- * @throws ClassNotFoundException
- * @throws InstantiationException
- * @throws NoSuchMethodException
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- public void connectHandler(WorkItemHandler wih)
- throws ClassNotFoundException, InstantiationException, NoSuchMethodException, IllegalAccessException,
- InvocationTargetException {
- Class handlerKlass = ClassUtil.forName(handlerClass, AbstractBpm5Action.class);
- Method connectionMethod = handlerKlass.getMethod("setConnection", String.class, Integer.TYPE);
- connectionMethod.invoke(wih, handlerHost, Integer.valueOf(handlerPort));
-
- Method connectMethod = handlerKlass.getMethod("connect");
- connectMethod.invoke(wih);
- }
-
- /**
* Get the StatefulKnowledgeSession - using an ID from the message - or create a new one.
* @param message Message to search for session information
* @return StatefulKnowledgeSession, either loaded or new
@@ -158,35 +160,13 @@
*/
public StatefulKnowledgeSession getSession(Message message) throws ActionProcessingException {
StatefulKnowledgeSession ksession;
- WorkItemHandler khandler;
int sessionId = getSessionId(message);
if (sessionId >= 0) {
+ kenvironment = getEnvironment(new HashMap<String, Object>());
ksession = JPAKnowledgeService.loadStatefulKnowledgeSession( sessionId, kbase, config, kenvironment );
} else {
- ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, config, kenvironment );
-
- try {
- khandler = getHandler(ksession);
- } catch (Exception e) {
- throw new ActionProcessingException(e);
- }
-
- // Register ESB WorkItemHandler as well
- ESBServiceWorkItemHandler esbhandler = new ESBServiceWorkItemHandler();
- ESBActionWorkItemHandler actionhandler = new ESBActionWorkItemHandler();
- ksession.getWorkItemManager().registerWorkItemHandler("JBossESB", esbhandler);
- ksession.getWorkItemManager().registerWorkItemHandler("ESBAction", actionhandler);
-
- ksession.getWorkItemManager().registerWorkItemHandler("Human Task", khandler);
-
-
- try {
- connectHandler(khandler);
- } catch (Exception e) {
- throw new ActionProcessingException(e);
- }
-
+ ksession = _ksession;
}
return ksession;
}
More information about the jboss-svn-commits
mailing list