jBPM distribution 6.0.0.Final

org.jbpm.runtime.manager.impl
Class PerRequestRuntimeManager

java.lang.Object
  extended by org.jbpm.runtime.manager.impl.AbstractRuntimeManager
      extended by org.jbpm.runtime.manager.impl.PerRequestRuntimeManager
All Implemented Interfaces:
RuntimeManager, org.kie.internal.runtime.manager.InternalRuntimeManager

public class PerRequestRuntimeManager
extends AbstractRuntimeManager

RuntimeManager implementation that is backed by "Per Request" strategy - meaning that for every call to getRuntimeEngine new instance will be delivered with brand new KieSession and TaskService. The only exception to this is when invoking within same transaction from different places - as then manager caches currently active instance in ThreadLocal to avoid concurrent modifications - or "lost" of data. On dispose of runtime engine manager will ensure that it is destroyed as well so it will get removed from data base to avoid out dated data.
This implementation does not require any special Context to proceed.


Field Summary
 
Fields inherited from class org.jbpm.runtime.manager.impl.AbstractRuntimeManager
activeManagers, closed, environment, identifier
 
Constructor Summary
PerRequestRuntimeManager(RuntimeEnvironment environment, org.kie.internal.runtime.manager.SessionFactory factory, org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory, String identifier)
           
 
Method Summary
 void close()
          Closes RuntimeManager and releases it's resources.
 void disposeRuntimeEngine(RuntimeEngine runtime)
          Disposes RuntimeEngine and notifies all listeners about that fact.
 org.kie.internal.runtime.manager.SessionFactory getFactory()
           
 RuntimeEngine getRuntimeEngine(Context<?> context)
          Returns RuntimeEngine instance that is fully initialized: KiseSession is created or loaded depending on the strategy TaskService is initialized and attached to ksession (via listener) WorkItemHandlers are initialized and registered on ksession EventListeners (process, agenda, working memory) are initialized and added to ksession
 org.kie.internal.runtime.manager.TaskServiceFactory getTaskServiceFactory()
           
 void init()
           
 void setFactory(org.kie.internal.runtime.manager.SessionFactory factory)
           
 void setTaskServiceFactory(org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory)
           
 void validate(KieSession ksession, Context<?> context)
           
 
Methods inherited from class org.jbpm.runtime.manager.impl.AbstractRuntimeManager
attachManager, canDestroy, close, configureRuntimeOnTaskService, getEnvironment, getIdentifier, isClosed, registerDisposeCallback, registerItems, removeRuntimeFromTaskService, setEnvironment, setIdentifier
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PerRequestRuntimeManager

public PerRequestRuntimeManager(RuntimeEnvironment environment,
                                org.kie.internal.runtime.manager.SessionFactory factory,
                                org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory,
                                String identifier)
Method Detail

getRuntimeEngine

public RuntimeEngine getRuntimeEngine(Context<?> context)
Description copied from interface: RuntimeManager
Returns RuntimeEngine instance that is fully initialized:

Parameters:
context - the concrete implementation of the context that is supported by given RuntimeManager
Returns:
instance of the RuntimeEngine

validate

public void validate(KieSession ksession,
                     Context<?> context)
              throws IllegalStateException
Throws:
IllegalStateException

disposeRuntimeEngine

public void disposeRuntimeEngine(RuntimeEngine runtime)
Description copied from interface: RuntimeManager
Disposes RuntimeEngine and notifies all listeners about that fact. This method should always be used to dispose RuntimeEngine that is not needed anymore.
ksession.dispose() shall never be used with RuntimeManager as it will break the internal mechanisms of the manager responsible for clear and efficient disposal.
Dispose is not needed if RuntimeEngine was obtained within active JTA transaction, this means that when getRuntimeEngine method was invoked during active JTA transaction then dispose of the runtime engine will happen automatically on transaction completion.


close

public void close()
Description copied from interface: RuntimeManager
Closes RuntimeManager and releases it's resources. Shall always be called when runtime manager is not needed any more. Otherwise it will still be active and operational.

Specified by:
close in interface RuntimeManager
Overrides:
close in class AbstractRuntimeManager

getFactory

public org.kie.internal.runtime.manager.SessionFactory getFactory()

setFactory

public void setFactory(org.kie.internal.runtime.manager.SessionFactory factory)

getTaskServiceFactory

public org.kie.internal.runtime.manager.TaskServiceFactory getTaskServiceFactory()

setTaskServiceFactory

public void setTaskServiceFactory(org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory)

init

public void init()
Specified by:
init in class AbstractRuntimeManager

jBPM distribution 6.0.0.Final

Copyright © 2001-2013 JBoss by Red Hat. All Rights Reserved.