Package org.jbpm.runtime.manager.impl

## Class AbstractRuntimeManager

- java.lang.Object
- - org.jbpm.runtime.manager.impl.AbstractRuntimeManager

- All Implemented Interfaces:
    `org.kie.api.runtime.manager.RuntimeManager`, `org.kie.internal.runtime.manager.InternalRuntimeManager`
  Direct Known Subclasses:
    `PerCaseRuntimeManager`, `PerProcessInstanceRuntimeManager`, `PerRequestRuntimeManager`, `SingletonRuntimeManager`

      public abstract class AbstractRuntimeManager
      extends Object
      implements org.kie.internal.runtime.manager.InternalRuntimeManager

  Common implementation that all `RuntimeManager` implementations should inherit from. Provides the following capabilities:
  - keeps track of all active managers by their identifier and prevents multiple managers from having the same id
  - provides a common close operation
  - injects the RuntimeManager into the ksession's environment for further reference
  - registers dispose callbacks (via transaction synchronization) to dispose of the runtime engine automatically on transaction completion
  - registers all defined items (work item handlers, event listeners)
  Additionally, this provides a abstract `init` method that will be called on RuntimeManager instantiation.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected org.kie.internal.runtime.manager.CacheManager` | `cacheManager` |
    `protected boolean` | `closed` |
    `protected org.kie.internal.runtime.conf.DeploymentDescriptor` | `deploymentDescriptor` |
    `protected boolean` | `engineInitEager` |
    `protected org.kie.api.runtime.manager.RuntimeEnvironment` | `environment` |
    `protected org.kie.internal.runtime.error.ExecutionErrorManager` | `executionErrorManager` |
    `protected String` | `identifier` |
    `protected org.kie.api.runtime.KieContainer` | `kieContainer` |
    `protected RuntimeManagerLockStrategyFactory` | `lockStrategyFactory` |
    `protected org.kie.internal.runtime.manager.RuntimeManagerRegistry` | `registry` |
    `protected RuntimeManagerLockStrategy` | `runtimeManagerLockStrategy` |
    `protected org.kie.internal.runtime.manager.SecurityManager` | `securityManager` |
    `protected RuntimeManagerLockWatcherSingletonService` | `watcher` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractRuntimeManager​(org.kie.api.runtime.manager.RuntimeEnvironment environment, String identifier)` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `activate()` |
    `protected void` | `attachManager​(org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected boolean` | `canDestroy​(org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected boolean` | `canDispose​(org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected void` | `checkPermission()` |
    `void` | `close()` |
    `void` | `close​(boolean removeJobs)` |
    `protected void` | `configureRuntimeOnTaskService​(org.kie.internal.task.api.InternalTaskService internalTaskService, org.kie.api.runtime.manager.RuntimeEngine engine)` |
    `protected void` | `createLockOnGetEngine​(Long id, org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected void` | `createLockOnGetEngine​(org.kie.api.runtime.manager.Context<?> context, org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected void` | `createLockOnNewProcessInstance​(Long id, org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `void` | `deactivate()` |
    `org.kie.internal.runtime.manager.CacheManager` | `getCacheManager()` |
    `org.kie.internal.runtime.conf.DeploymentDescriptor` | `getDeploymentDescriptor()` |
    `javax.persistence.EntityManager` | `getEntityManager()` |
    `org.kie.internal.runtime.manager.RuntimeEnvironment` | `getEnvironment()` |
    `protected org.kie.api.runtime.Environment` | `getEnvironment​(org.kie.api.runtime.manager.RuntimeEngine runtimeEngine)` |
    `org.kie.internal.runtime.error.ExecutionErrorManager` | `getExecutionErrorManager()` |
    `abstract org.kie.internal.runtime.manager.SessionFactory` | `getFactory()` |
    `String` | `getIdentifier()` |
    `org.kie.api.runtime.KieContainer` | `getKieContainer()` |
    `protected org.drools.persistence.api.TransactionManager` | `getTransactionManager​(org.kie.api.runtime.Environment env)` |
    `protected org.drools.persistence.api.TransactionManager` | `getTransactionManagerInternal​(org.kie.api.runtime.Environment env)` |
    `protected boolean` | `hasEnvironmentEntry​(String name, Object value)` |
    `boolean` | `hasMultipleProcessPerSession()` |
    `boolean` | `hasSecurityManager()` |
    `void` | `init()` |
    `protected void` | `initTimerService()` |
    `protected boolean` | `isActive()` |
    `boolean` | `isClosed()` |
    `protected boolean` | `isUseLocking()` |
    `protected org.kie.internal.task.api.InternalTaskService` | `newTaskService​(org.kie.internal.runtime.manager.TaskServiceFactory factory)` |
    `protected void` | `registerDisposeCallback​(org.kie.api.runtime.manager.RuntimeEngine runtime, org.drools.persistence.api.TransactionSynchronization sync, org.kie.api.runtime.Environment environment)` |
    `protected void` | `registerItems​(org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected void` | `releaseAndCleanLock​(Long id, org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected void` | `releaseAndCleanLock​(org.kie.api.runtime.manager.RuntimeEngine runtime)` |
    `protected void` | `removeRuntimeFromTaskService()` |
    `void` | `setCacheManager​(org.kie.internal.runtime.manager.CacheManager cacheManager)` |
    `void` | `setDeploymentDescriptor​(org.kie.internal.runtime.conf.DeploymentDescriptor deploymentDescriptor)` |
    `void` | `setEnvironment​(org.kie.api.runtime.manager.RuntimeEnvironment environment)` |
    `void` | `setIdentifier​(String identifier)` |
    `void` | `setKieContainer​(org.kie.api.runtime.KieContainer kieContainer)` |
    `void` | `setSecurityManager​(org.kie.internal.runtime.manager.SecurityManager securityManager)` |
    `void` | `softDispose​(org.kie.api.runtime.manager.RuntimeEngine runtimeEngine)` | Soft dispose means it will be invoked as sort of preparation step before actual dispose.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.kie.internal.runtime.manager.InternalRuntimeManager

      `useContextMapping, validate`

    - ### Methods inherited from interface org.kie.api.runtime.manager.RuntimeManager

      `disposeRuntimeEngine, getRuntimeEngine, signalEvent`

- - ### Field Detail

    - #### registry

          protected org.kie.internal.runtime.manager.RuntimeManagerRegistry registry

    - #### lockStrategyFactory

          protected RuntimeManagerLockStrategyFactory lockStrategyFactory

    - #### environment

          protected org.kie.api.runtime.manager.RuntimeEnvironment environment

    - #### deploymentDescriptor

          protected org.kie.internal.runtime.conf.DeploymentDescriptor deploymentDescriptor

    - #### kieContainer

          protected org.kie.api.runtime.KieContainer kieContainer

    - #### cacheManager

          protected org.kie.internal.runtime.manager.CacheManager cacheManager

    - #### engineInitEager

          protected boolean engineInitEager

    - #### identifier

          protected String identifier

    - #### closed

          protected boolean closed

    - #### securityManager

          protected org.kie.internal.runtime.manager.SecurityManager securityManager

    - #### executionErrorManager

          protected org.kie.internal.runtime.error.ExecutionErrorManager executionErrorManager

    - #### runtimeManagerLockStrategy

          protected RuntimeManagerLockStrategy runtimeManagerLockStrategy

    - #### watcher

          protected RuntimeManagerLockWatcherSingletonService watcher

  - ### Constructor Detail

    - #### AbstractRuntimeManager

          public AbstractRuntimeManager​(org.kie.api.runtime.manager.RuntimeEnvironment environment,
                                        String identifier)

  - ### Method Detail

    - #### init

          public void init()

    - #### initTimerService

          protected void initTimerService()

    - #### getEntityManager

          public javax.persistence.EntityManager getEntityManager()

    - #### registerItems

          protected void registerItems​(org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### registerDisposeCallback

          protected void registerDisposeCallback​(org.kie.api.runtime.manager.RuntimeEngine runtime,
                                                 org.drools.persistence.api.TransactionSynchronization sync,
                                                 org.kie.api.runtime.Environment environment)

    - #### canDispose

          protected boolean canDispose​(org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### getEnvironment

          protected org.kie.api.runtime.Environment getEnvironment​(org.kie.api.runtime.manager.RuntimeEngine runtimeEngine)

    - #### attachManager

          protected void attachManager​(org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### isClosed

          public boolean isClosed()

      Specified by:
        `isClosed` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### close

          public void close()

      Specified by:
        `close` in interface `org.kie.api.runtime.manager.RuntimeManager`

    - #### close

          public void close​(boolean removeJobs)

    - #### getEnvironment

          public org.kie.internal.runtime.manager.RuntimeEnvironment getEnvironment()

      Specified by:
        `getEnvironment` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### setEnvironment

          public void setEnvironment​(org.kie.api.runtime.manager.RuntimeEnvironment environment)

    - #### getIdentifier

          public String getIdentifier()

      Specified by:
        `getIdentifier` in interface `org.kie.api.runtime.manager.RuntimeManager`

    - #### setIdentifier

          public void setIdentifier​(String identifier)

    - #### newTaskService

          protected org.kie.internal.task.api.InternalTaskService newTaskService​(org.kie.internal.runtime.manager.TaskServiceFactory factory)

    - #### configureRuntimeOnTaskService

          protected void configureRuntimeOnTaskService​(org.kie.internal.task.api.InternalTaskService internalTaskService,
                                                       org.kie.api.runtime.manager.RuntimeEngine engine)

    - #### removeRuntimeFromTaskService

          protected void removeRuntimeFromTaskService()

    - #### softDispose

          public void softDispose​(org.kie.api.runtime.manager.RuntimeEngine runtimeEngine)

      Soft dispose means it will be invoked as sort of preparation step before actual dispose. Mainly used with transaction synchronization to be invoked as part of beforeCompletion to clean up any thread state - like thread local settings as afterCompletion can be invoked from another thread

    - #### canDestroy

          protected boolean canDestroy​(org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### hasEnvironmentEntry

          protected boolean hasEnvironmentEntry​(String name,
                                                Object value)

    - #### getTransactionManager

          protected org.drools.persistence.api.TransactionManager getTransactionManager​(org.kie.api.runtime.Environment env)

    - #### getTransactionManagerInternal

          protected org.drools.persistence.api.TransactionManager getTransactionManagerInternal​(org.kie.api.runtime.Environment env)

    - #### getDeploymentDescriptor

          public org.kie.internal.runtime.conf.DeploymentDescriptor getDeploymentDescriptor()

      Specified by:
        `getDeploymentDescriptor` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### setDeploymentDescriptor

          public void setDeploymentDescriptor​(org.kie.internal.runtime.conf.DeploymentDescriptor deploymentDescriptor)

      Specified by:
        `setDeploymentDescriptor` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### setSecurityManager

          public void setSecurityManager​(org.kie.internal.runtime.manager.SecurityManager securityManager)

      Specified by:
        `setSecurityManager` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### hasSecurityManager

          public boolean hasSecurityManager()

      Specified by:
        `hasSecurityManager` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### checkPermission

          protected void checkPermission()

    - #### setCacheManager

          public void setCacheManager​(org.kie.internal.runtime.manager.CacheManager cacheManager)

      Specified by:
        `setCacheManager` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### getCacheManager

          public org.kie.internal.runtime.manager.CacheManager getCacheManager()

      Specified by:
        `getCacheManager` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### getKieContainer

          public org.kie.api.runtime.KieContainer getKieContainer()

      Specified by:
        `getKieContainer` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### setKieContainer

          public void setKieContainer​(org.kie.api.runtime.KieContainer kieContainer)

      Specified by:
        `setKieContainer` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### isUseLocking

          protected boolean isUseLocking()

    - #### createLockOnNewProcessInstance

          protected void createLockOnNewProcessInstance​(Long id,
                                                        org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### createLockOnGetEngine

          protected void createLockOnGetEngine​(org.kie.api.runtime.manager.Context<?> context,
                                               org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### createLockOnGetEngine

          protected void createLockOnGetEngine​(Long id,
                                               org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### releaseAndCleanLock

          protected void releaseAndCleanLock​(org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### releaseAndCleanLock

          protected void releaseAndCleanLock​(Long id,
                                             org.kie.api.runtime.manager.RuntimeEngine runtime)

    - #### isActive

          protected boolean isActive()

    - #### activate

          public void activate()

      Specified by:
        `activate` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### deactivate

          public void deactivate()

      Specified by:
        `deactivate` in interface `org.kie.internal.runtime.manager.InternalRuntimeManager`

    - #### getExecutionErrorManager

          public org.kie.internal.runtime.error.ExecutionErrorManager getExecutionErrorManager()

    - #### getFactory

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

    - #### hasMultipleProcessPerSession

          public boolean hasMultipleProcessPerSession()