Refine search
protected void registerDisposeCallback(RuntimeEngine runtime, TransactionSynchronization sync, Environment environment) { // register it if there is an active transaction as we assume then to be running in a managed environment e.g CMT TransactionManager tm = getTransactionManager(environment); if (tm.getStatus() != TransactionManager.STATUS_NO_TRANSACTION && tm.getStatus() != TransactionManager.STATUS_ROLLEDBACK && tm.getStatus() != TransactionManager.STATUS_COMMITTED) { TransactionManagerHelper.registerTransactionSyncInContainer(tm, (OrderedTransactionSynchronization) sync); } }
public PersistentProcessInstance persist(PersistentProcessInstance processInstanceInfo) { EntityManager em = getEntityManager(); em.persist(processInstanceInfo); TransactionManagerHelper.addToUpdatableSet(txm, processInstanceInfo); if( this.pessimisticLocking ) { em.flush(); return em.find(ProcessInstanceInfo.class, processInstanceInfo.getId(), lockMode ); } return processInstanceInfo; }
public void remove(PersistentProcessInstance processInstanceInfo) { getEntityManager().remove( processInstanceInfo ); TransactionManagerHelper.removeFromUpdatableSet(txm, processInstanceInfo); List<CorrelationKeyInfo> correlations = getEntityManager().createNamedQuery("GetCorrelationKeysByProcessInstanceId") .setParameter("pId", processInstanceInfo.getId()).getResultList(); if (correlations != null) { for (CorrelationKeyInfo key : correlations) { getEntityManager().remove(key); } } }
public PersistentWorkItem merge(PersistentWorkItem workItem) { if( this.pessimisticLocking ) { if( em.contains(workItem) ) { em.lock(workItem, lockMode); } else { // Yes, this is a hack, but for detached entities, it's the only way to lock before merging WorkItemInfo dbWorkItemInfo = em.find(WorkItemInfo.class, workItem.getId(), lockMode); for( Field field : WorkItemInfo.class.getDeclaredFields() ) { boolean access = field.isAccessible(); field.setAccessible(true); try { field.set(dbWorkItemInfo, field.get(workItem)); } catch (Exception e) { logger.error("Unable to set field " + field.getName() + " of unmerged WorkItemInfo instance!", e); } field.setAccessible(access); } } } TransactionManagerHelper.addToUpdatableSet(txm, workItem); return em.merge( workItem ); }
public void remove(PersistentSession session) { if (!em.contains(session)) { SessionInfo s = em.getReference(SessionInfo.class, session.getId()); em.remove( s ); } else { em.remove(session); } TransactionManagerHelper.removeFromUpdatableSet(txm, session); em.flush(); }
@Override public void beforeCompletion() { Set<Transformable> toBeUpdated = TransactionManagerHelper.getUpdateableSet(txm); appScopedEM = (EntityManager) txm.getResource(EnvironmentName.APP_SCOPED_ENTITY_MANAGER); EntityManager cmdScopedEM = (EntityManager) txm.getResource(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER); if (cmdScopedEM == null) { cmdScopedEM = ((EntityManager)environment.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER)); if (transformable != null) { transformable.transform(); if (appScopedEM != null && appScopedEM.contains(transformable)) { appScopedEM.merge(transformable); TransactionManagerHelper.removeFromUpdatableSet(txm, transformable); flushApp = true; } else if (cmdScopedEM != null &&cmdScopedEM.contains(transformable)) { cmdScopedEM.merge(transformable); TransactionManagerHelper.removeFromUpdatableSet(txm, transformable); flushCmd = true;
public PersistentSession findSession(Long id) { SessionInfo sessionInfo = null; if( this.pessimisticLocking ) { sessionInfo = this.em.find( SessionInfo.class, id, lockMode ); TransactionManagerHelper.addToUpdatableSet(txm, sessionInfo); return sessionInfo; } sessionInfo = this.em.find( SessionInfo.class, id ); TransactionManagerHelper.addToUpdatableSet(txm, sessionInfo); return sessionInfo; }
public void remove(PersistentWorkItem workItem) { em.remove( workItem ); TransactionManagerHelper.removeFromUpdatableSet(txm, workItem); }
transactionOwner = txm.begin(); tpm.beginCommandScopedEntityManager(); TransactionManagerHelper.registerTransactionSyncInContainer(this.txm, new TaskSynchronizationImpl( this )); txm.commit( transactionOwner );
protected void release(TransactionManager txm) { try { TransactionManagerHelper.registerTransactionSyncInContainer(txm, new ReleaseLockTransactionSynchronization(Thread.currentThread().getId(), 100, releaseTxKey)); } catch (Throwable e) { logger.debug("Error happened releasing directly by {} due to {}", Thread.currentThread().getName(), e.getMessage()); doRelease(); } }
return null; TransactionManagerHelper.addToUpdatableSet(txm, processInstanceInfo); processInstanceInfo.updateLastReadDate(); if (!readOnly) { processInstanceInfo.updateLastReadDate(); TransactionManagerHelper.addToUpdatableSet(txm, processInstanceInfo);
public PersistentWorkItem findWorkItem(Long id) { WorkItemInfo workItemInfo = null; if( this.pessimisticLocking ) { workItemInfo = this.em.find( WorkItemInfo.class, id, lockMode ); TransactionManagerHelper.addToUpdatableSet(txm, workItemInfo); return workItemInfo; } workItemInfo = em.find( WorkItemInfo.class, id ); TransactionManagerHelper.addToUpdatableSet(txm, workItemInfo); return workItemInfo; }
transactionOwner = txm.begin(); tpm.beginCommandScopedEntityManager(); TransactionManagerHelper.registerTransactionSyncInContainer(this.txm, new TaskSynchronizationImpl( this )); txm.commit( transactionOwner );
private void registerRollbackSync() { if (txm != null) { ObjectMarshallingStrategy[] strategies = (ObjectMarshallingStrategy[]) env.get(EnvironmentName.OBJECT_MARSHALLING_STRATEGIES); for (ObjectMarshallingStrategy strategy : strategies) { if (strategy instanceof TransactionAware) { ((TransactionAware) strategy).onStart(txm); } } } TransactionManagerHelper.registerTransactionSyncInContainer(this.txm, new SynchronizationImpl( this )); }
public void endOperation(InternalKnowledgeRuntime kruntime) { this.info.setLastModificationDate( new Date( kruntime.getLastIdleTimestamp() ) ); TransactionManagerHelper.addToUpdatableSet(txm, info); } }
public PersistentSession persist(PersistentSession entity) { this.em.persist( entity ); TransactionManagerHelper.addToUpdatableSet(txm, entity); if( this.pessimisticLocking ) { this.em.flush(); return this.em.find(SessionInfo.class, entity.getId(), lockMode ); } return entity; }
@Override public final void internalSchedule(final TimerJobInstance timerJobInstance) { if (hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { super.internalSchedule(timerJobInstance); return; } TransactionManager tm = getTransactionManager(timerJobInstance.getJobContext()); if (tm.getStatus() != TransactionManager.STATUS_NO_TRANSACTION && tm.getStatus() != TransactionManager.STATUS_ROLLEDBACK && tm.getStatus() != TransactionManager.STATUS_COMMITTED) { TransactionManagerHelper.registerTransactionSyncInContainer(tm, new ScheduleTimerTransactionSynchronization(timerJobInstance, delegate)); return; } super.internalSchedule(timerJobInstance); }
public PersistentWorkItem persist(PersistentWorkItem workItem) { em.persist( workItem ); TransactionManagerHelper.addToUpdatableSet(txm, workItem); if( this.pessimisticLocking ) { this.em.flush(); return em.find(WorkItemInfo.class, workItem.getId(), lockMode); } return workItem; }
@Override public Void execute(org.kie.api.runtime.Context context) { if (manager.hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { initialKsession.dispose(); return null; } TransactionManager tm = (TransactionManager) initialKsession.getEnvironment().get(EnvironmentName.TRANSACTION_MANAGER); if (tm != null && tm.getStatus() != TransactionManager.STATUS_NO_TRANSACTION && tm.getStatus() != TransactionManager.STATUS_ROLLEDBACK && tm.getStatus() != TransactionManager.STATUS_COMMITTED) { TransactionManagerHelper.registerTransactionSyncInContainer(tm, new OrderedTransactionSynchronization(5, "PPIRM-" + initialKsession.getIdentifier()) { @Override public void beforeCompletion() { } @Override public void afterCompletion(int arg0) { initialKsession.dispose(); } }); } else { initialKsession.dispose(); } return null; } }
@Override public Void execute(org.kie.api.runtime.Context context) { if (manager.hasEnvironmentEntry("IS_JTA_TRANSACTION", false)) { initialKsession.dispose(); return null; } TransactionManager tm = (TransactionManager) initialKsession.getEnvironment().get(EnvironmentName.TRANSACTION_MANAGER); if (tm != null && tm.getStatus() != TransactionManager.STATUS_NO_TRANSACTION && tm.getStatus() != TransactionManager.STATUS_ROLLEDBACK && tm.getStatus() != TransactionManager.STATUS_COMMITTED) { TransactionManagerHelper.registerTransactionSyncInContainer(tm, new OrderedTransactionSynchronization(5, "PPIRM-"+initialKsession.getIdentifier()) { @Override public void beforeCompletion() { } @Override public void afterCompletion(int arg0) { initialKsession.dispose(); } }); } else { initialKsession.dispose(); } return null; } }