public void saveOrUpdate(PersistentWorkItem workItem) { workItems.put( workItem.getId(), workItem ); }
public void remove(PersistentWorkItem workItem) { workItems.remove( workItem.getId() ); }
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 remove(PersistentWorkItem workItem) { if( !(workItems.remove( workItem.getId() ) == null) ){ storage.remove( workItem ); } }
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 PersistentWorkItem persist(PersistentWorkItem workItemInfo) { if (workItemInfo.getId() == null) { workItemInfo.setId(generateWorkItemInfoId()); } String key = createWorkItemKey(workItemInfo.getId()); workItemInfo.transform(); cache.put(key, new EntityHolder(key, workItemInfo)); return workItemInfo; }
private WorkItem internalGetWorkItem(PersistentWorkItem workItemInfo) { Environment env = kruntime.getEnvironment(); InternalKnowledgeBase ruleBase = (InternalKnowledgeBase) kruntime.getKieBase(); WorkItem workItem = ((WorkItemInfo) workItemInfo).getWorkItem(env, ruleBase); ((WorkItemImpl) workItem).setId(workItemInfo.getId()); return workItem; }
public PersistentWorkItem merge(PersistentWorkItem workItemInfo) { String key = createWorkItemKey(workItemInfo.getId()); workItemInfo.transform(); EntityHolder entityHolder = new EntityHolder(key, workItemInfo); cache.put(key, entityHolder); return workItemInfo; }
public EntityHolder(String key, PersistentWorkItem workItem) { this.key = key; this.type = "workItemInfo"; workItem.transform(); this.workItemInfoId = workItem.getId(); WorkItemInfo workItemInfo = (WorkItemInfo) workItem; this.workItemInfoName = workItemInfo.getName(); this.workItemInfoVersion = workItemInfo.getVersion(); this.workItemInfoProcessInstanceId = workItemInfo.getProcessInstanceId(); this.workItemInfoState = workItemInfo.getState(); this.workItemInfoCreationDate = workItemInfo.getCreationDate(); this.workItemInfoByteArray = Base64.encodeBase64String(workItemInfo.getWorkItemByteArray()); }