use of org.jbpm.runtime.manager.impl.mapper.InMemoryMapper in project jbpm by kiegroup.
the class PerCaseRuntimeManager method disposeRuntimeEngine.
@Override
public void disposeRuntimeEngine(RuntimeEngine runtime) {
if (isClosed()) {
throw new IllegalStateException("Runtime manager " + identifier + " is already closed");
}
try {
if (canDispose(runtime)) {
removeLocalRuntime(runtime);
Long ksessionId = ((RuntimeEngineImpl) runtime).getKieSessionId();
releaseAndCleanLock(ksessionId, runtime);
if (runtime instanceof Disposable) {
// special handling for in memory to not allow to dispose if there is any context in the mapper
if (mapper instanceof InMemoryMapper && ((InMemoryMapper) mapper).hasContext(ksessionId)) {
return;
}
((Disposable) runtime).dispose();
}
if (ksessionId != null) {
TimerService timerService = TimerServiceRegistry.getInstance().get(getIdentifier() + TimerServiceRegistry.TIMER_SERVICE_SUFFIX);
if (timerService != null) {
if (timerService instanceof GlobalTimerService) {
((GlobalTimerService) timerService).clearTimerJobInstances(ksessionId);
}
}
}
}
} catch (Exception e) {
releaseAndCleanLock(runtime);
removeLocalRuntime(runtime);
throw new RuntimeException(e);
}
}
use of org.jbpm.runtime.manager.impl.mapper.InMemoryMapper in project jbpm by kiegroup.
the class PerProcessInstanceRuntimeManager method disposeRuntimeEngine.
@Override
public void disposeRuntimeEngine(RuntimeEngine runtime) {
if (isClosed()) {
throw new IllegalStateException("Runtime manager " + identifier + " is already closed");
}
try {
if (canDispose(runtime)) {
removeLocalRuntime(runtime);
Long ksessionId = ((RuntimeEngineImpl) runtime).getKieSessionId();
if (runtime instanceof Disposable) {
// special handling for in memory to not allow to dispose if there is any context in the mapper
if (mapper instanceof InMemoryMapper && ((InMemoryMapper) mapper).hasContext(ksessionId)) {
return;
}
((Disposable) runtime).dispose();
}
if (ksessionId != null) {
TimerService timerService = TimerServiceRegistry.getInstance().get(getIdentifier() + TimerServiceRegistry.TIMER_SERVICE_SUFFIX);
if (timerService != null) {
if (timerService instanceof GlobalTimerService) {
((GlobalTimerService) timerService).clearTimerJobInstances(ksessionId);
}
}
}
releaseAndCleanLock(runtime);
}
} catch (Exception e) {
releaseAndCleanLock(runtime);
removeLocalRuntime(runtime);
throw new RuntimeException(e);
}
}
Aggregations