Package org.jbpm.runtime.manager.impl
Class SingletonRuntimeManager
- java.lang.Object
-
- org.jbpm.runtime.manager.impl.AbstractRuntimeManager
-
- org.jbpm.runtime.manager.impl.SingletonRuntimeManager
-
- All Implemented Interfaces:
org.kie.api.runtime.manager.RuntimeManager
,org.kie.internal.runtime.manager.InternalRuntimeManager
public class SingletonRuntimeManager extends AbstractRuntimeManager
This RuntimeManager is backed by a "Singleton" strategy, meaning that only oneRuntimeEngine
instance will exist for for the given RuntimeManager instance. The RuntimeEngine will be synchronized to make sure it will work properly in multi-threaded environments. However, this might cause some performance issues due to sequential execution.
An important aspect of this manager is that it will persists it's identifier as a temporary file to keep track of theKieSession
it was using to maintain its state: for example, the session state including (drools) facts, etc. The mentioned file is named as follows:
manager.getIdentifier()-jbpmSessionId.ser
For example, for default named manager it will be:
default-singleton-jbpmSessionId.ser
The location of the file will be one of the following, it is resolved in below order:- system property named: jbpm.data.dir
- system property named: jboss.server.data.dir - shall be used by default on JBoss AS
- system property named: java.io.tmpdir
-
-
Field Summary
-
Fields inherited from class org.jbpm.runtime.manager.impl.AbstractRuntimeManager
cacheManager, closed, deploymentDescriptor, engineInitEager, environment, executionErrorManager, identifier, kieContainer, lockStrategyFactory, registry, runtimeManagerLockStrategy, securityManager, watcher
-
-
Constructor Summary
Constructors Constructor Description SingletonRuntimeManager()
SingletonRuntimeManager(org.kie.api.runtime.manager.RuntimeEnvironment environment, org.kie.internal.runtime.manager.SessionFactory factory, org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory, String identifier)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activate()
void
close()
void
deactivate()
void
disposeRuntimeEngine(org.kie.api.runtime.manager.RuntimeEngine runtime)
org.kie.internal.runtime.manager.SessionFactory
getFactory()
protected String
getLocation()
protected Long
getPersistedSessionId(String location, String identifier)
Retrieves session id from serialized file named jbpmSessionId.ser from given location.org.kie.api.runtime.manager.RuntimeEngine
getRuntimeEngine(org.kie.api.runtime.manager.Context context)
org.kie.internal.runtime.manager.TaskServiceFactory
getTaskServiceFactory()
void
init()
protected void
persistSessionId(String location, String identifier, Long ksessionId)
Stores gives ksessionId in a serialized file in given location under jbpmSessionId.ser file namevoid
setFactory(org.kie.internal.runtime.manager.SessionFactory factory)
void
setTaskServiceFactory(org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory)
void
signalEvent(String type, Object event)
void
validate(org.kie.api.runtime.KieSession ksession, org.kie.api.runtime.manager.Context<?> context)
-
Methods inherited from class org.jbpm.runtime.manager.impl.AbstractRuntimeManager
attachManager, canDestroy, canDispose, checkPermission, close, configureRuntimeOnTaskService, createLockOnGetEngine, createLockOnGetEngine, createLockOnNewProcessInstance, getCacheManager, getDeploymentDescriptor, getEnvironment, getExecutionErrorManager, getIdentifier, getKieContainer, getTransactionManager, getTransactionManagerInternal, hasEnvironmentEntry, hasMultipleProcessPerSession, hasSecurityManager, initTimerService, isActive, isClosed, isUseLocking, newTaskService, registerDisposeCallback, registerItems, releaseAndCleanLock, releaseAndCleanLock, removeRuntimeFromTaskService, setCacheManager, setDeploymentDescriptor, setEnvironment, setIdentifier, setKieContainer, setSecurityManager, softDispose
-
-
-
-
Constructor Detail
-
SingletonRuntimeManager
public SingletonRuntimeManager()
-
SingletonRuntimeManager
public SingletonRuntimeManager(org.kie.api.runtime.manager.RuntimeEnvironment environment, org.kie.internal.runtime.manager.SessionFactory factory, org.kie.internal.runtime.manager.TaskServiceFactory taskServiceFactory, String identifier)
-
-
Method Detail
-
init
public void init()
- Overrides:
init
in classAbstractRuntimeManager
-
activate
public void activate()
- Specified by:
activate
in interfaceorg.kie.internal.runtime.manager.InternalRuntimeManager
- Overrides:
activate
in classAbstractRuntimeManager
-
deactivate
public void deactivate()
- Specified by:
deactivate
in interfaceorg.kie.internal.runtime.manager.InternalRuntimeManager
- Overrides:
deactivate
in classAbstractRuntimeManager
-
getRuntimeEngine
public org.kie.api.runtime.manager.RuntimeEngine getRuntimeEngine(org.kie.api.runtime.manager.Context context)
-
validate
public void validate(org.kie.api.runtime.KieSession ksession, org.kie.api.runtime.manager.Context<?> context) throws IllegalStateException
- Throws:
IllegalStateException
-
disposeRuntimeEngine
public void disposeRuntimeEngine(org.kie.api.runtime.manager.RuntimeEngine runtime)
-
close
public void close()
- Specified by:
close
in interfaceorg.kie.api.runtime.manager.RuntimeManager
- Overrides:
close
in classAbstractRuntimeManager
-
getPersistedSessionId
protected Long getPersistedSessionId(String location, String identifier)
Retrieves session id from serialized file named jbpmSessionId.ser from given location.- Parameters:
location
- directory where jbpmSessionId.ser file should beidentifier
- of the manager owning this ksessionId- Returns:
- sessionId if file was found otherwise 0
-
persistSessionId
protected void persistSessionId(String location, String identifier, Long ksessionId)
Stores gives ksessionId in a serialized file in given location under jbpmSessionId.ser file name- Parameters:
location
- directory where serialized file should be storedidentifier
- of the manager owning this ksessionIdksessionId
- value of ksessionId to be stored
-
getLocation
protected String getLocation()
-
getFactory
public org.kie.internal.runtime.manager.SessionFactory getFactory()
- Specified by:
getFactory
in classAbstractRuntimeManager
-
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)
-
-