org.jbpm.runtime.manager.impl
Class PerRequestRuntimeManager
java.lang.Object
org.jbpm.runtime.manager.impl.AbstractRuntimeManager
org.jbpm.runtime.manager.impl.PerRequestRuntimeManager
- All Implemented Interfaces:
- RuntimeManager, org.kie.internal.runtime.manager.InternalRuntimeManager
public class PerRequestRuntimeManager
- extends AbstractRuntimeManager
A RuntimeManager implementation that is backed by the "Per Request" strategy. This means that for every call to
getRuntimeEngine
, a new instance will be delivered with brand new KieSession and TaskService.
The only exception to this is when this is invoked within the same transaction from different places. In that case,
the manager caches the currently active instance in a ThreadLocal instane to avoid concurrent modifications or "loss" of data.
Disposing of the runtime engine manager will ensure that it is destroyed as well, so that it will get removed from
the database to avoid outdated data.
This implementation does not require any special Context
to proceed.
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, checkPermission, close, configureRuntimeOnTaskService, getCacheManager, getDeploymentDescriptor, getEnvironment, getIdentifier, getTransactionManager, hasEnvironmentEntry, isClosed, registerDisposeCallback, registerItems, removeRuntimeFromTaskService, setCacheManager, setDeploymentDescriptor, setEnvironment, setIdentifier, setSecurityManager |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
PerRequestRuntimeManager
public PerRequestRuntimeManager(RuntimeEnvironment environment,
org.kie.internal.runtime.manager.SessionFactory factory,
org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory,
String identifier)
getRuntimeEngine
public RuntimeEngine getRuntimeEngine(Context<?> context)
- Description copied from interface:
RuntimeManager
- 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
- 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
Copyright © 2001-2015 JBoss by Red Hat. All Rights Reserved.