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; }
return null; TransactionManagerHelper.addToUpdatableSet(txm, processInstanceInfo); processInstanceInfo.updateLastReadDate(); if (!readOnly) { processInstanceInfo.updateLastReadDate(); TransactionManagerHelper.addToUpdatableSet(txm, processInstanceInfo);
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 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; }
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; }
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; }
public void endOperation(InternalKnowledgeRuntime kruntime) { this.info.setLastModificationDate( new Date( kruntime.getLastIdleTimestamp() ) ); TransactionManagerHelper.addToUpdatableSet(txm, info); } }
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 ); }