public PersistCommand(Object sessionInfo, Object jpm, KieSession ksession) { this.sessionInfo = (SessionInfo) sessionInfo; this.persistenceContext = ((PersistenceContextManager) jpm).getApplicationScopedPersistenceContext(); this.ksession = ksession; }
private PersistenceContext getPersistenceContext() { Environment env = this.kruntime.getEnvironment(); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); return context; }
executeNext(executable, context); if (((InternalExecutable) executable ).requiresDispose()) { jpm.dispose(); PersistenceContext persistenceContext = jpm.getApplicationScopedPersistenceContext(); persistenceContext ); jpm.beginCommandScopedEntityManager();
public void afterCompletion(int status) { if ( status != TransactionManager.STATUS_COMMITTED ) { this.service.rollback(); } if (this.service.txm != null) { ObjectMarshallingStrategy[] strategies = (ObjectMarshallingStrategy[]) this.service.env.get(EnvironmentName.OBJECT_MARSHALLING_STRATEGIES); for (ObjectMarshallingStrategy strategy : strategies) { if (strategy instanceof TransactionAware) { ((TransactionAware) strategy).onEnd(this.service.txm); } } } this.service.jpm.endCommandScopedEntityManager(); KieSession ksession = this.service.ksession; // clean up cached process and work item instances if ( ksession != null ) { InternalProcessRuntime internalProcessRuntime = ((InternalWorkingMemory) ksession).internalGetProcessRuntime(); if ( internalProcessRuntime != null ) { if (this.service.doRollback) { internalProcessRuntime.clearProcessInstancesState(); } internalProcessRuntime.clearProcessInstances(); } ((JPAWorkItemManager) ksession.getWorkItemManager()).clearWorkItems(); } if (status != TransactionManager.STATUS_COMMITTED) { this.service.jpm.resetApplicationScopedPersistenceContext(); } }
@Override public WorkItem getWorkItem(long id) { Environment env = this.kruntime.getEnvironment(); // EntityManager em = (EntityManager) env.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); PersistentWorkItem workItemInfo = null; if (context != null) { workItemInfo = context.findWorkItem( id ); } if (workItemInfo == null) { return null; } return internalGetWorkItem(workItemInfo); }
@Override public void destroy() { PersistenceContext persistenceContext = this.jpm.getApplicationScopedPersistenceContext(); boolean transactionOwner = false; try { transactionOwner = txm.begin(); persistenceContext.joinTransaction(); initExistingKnowledgeSession( this.sessionInfo.getId(), this.marshallingHelper.getKbase(), this.marshallingHelper.getConf(), persistenceContext ); persistenceContext.remove(this.sessionInfo); txm.commit( transactionOwner ); } catch ( RuntimeException re ) { rollbackTransaction( re, transactionOwner ); throw re; } catch ( Exception t1 ) { rollbackTransaction(t1, transactionOwner); throw new RuntimeException( "Wrapped exception see cause", t1 ); } }
@Override public void internalAbortWorkItem(long id) { Environment env = this.kruntime.getEnvironment(); //EntityManager em = (EntityManager) env.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); PersistentWorkItem workItemInfo = context.findWorkItem( id ); // work item may have been aborted if (workItemInfo != null) { WorkItemImpl workItem = (WorkItemImpl) internalGetWorkItem(workItemInfo); WorkItemHandler handler = (WorkItemHandler) this.workItemHandlers.get(workItem.getName()); if (handler != null) { handler.abortWorkItem(workItem, this); } else { throwWorkItemNotFoundException( workItem ); } context.remove(workItemInfo); } }
PersistenceContext persistenceContext = jpm.getApplicationScopedPersistenceContext();
@Override public void retryWorkItemWithParams(long workItemId,Map<String,Object> map) { Environment env = this.kruntime.getEnvironment(); WorkItem workItem = getWorkItem(workItemId); if (workItem != null) { workItem.setParameters( map ); WorkItemInfo workItemInfo = new WorkItemInfo(workItem, env); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); context.merge( workItemInfo ); retryWorkItem(workItemInfo.getId()); } }
PersistenceContext persistenceContext = jpm.getApplicationScopedPersistenceContext(); boolean transactionOwner = false; try {
@Override public void abortWorkItem(long id) { Environment env = this.kruntime.getEnvironment(); // EntityManager em = (EntityManager) env.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); PersistentWorkItem workItemInfo = context.findWorkItem( id ); // work item may have been aborted if (workItemInfo != null) { WorkItem workItem = (WorkItemImpl) internalGetWorkItem(workItemInfo); ProcessInstance processInstance = kruntime.getProcessInstance(workItem.getProcessInstanceId()); workItem.setState(WorkItem.ABORTED); // process instance may have finished already if (processInstance != null) { processInstance.signalEvent("workItemAborted", workItem); } context.remove(workItemInfo); } }
@Override public void internalExecuteWorkItem(WorkItem workItem) { Environment env = this.kruntime.getEnvironment(); // EntityManager em = (EntityManager) env.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER); WorkItemInfo workItemInfo = new WorkItemInfo(workItem, env); // em.persist(workItemInfo); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); context.persist( workItemInfo ); ((WorkItemImpl) workItem).setId(workItemInfo.getId()); workItemInfo.transform(); context.merge(workItemInfo); WorkItemHandler handler = (WorkItemHandler) this.workItemHandlers.get(workItem.getName()); if (handler != null) { handler.executeWorkItem(workItem, this); workItemInfo.transform(); context.merge(workItemInfo); } else { throwWorkItemNotFoundException( workItem ); } }
@Override public void completeWorkItem(long id, Map<String, Object> results) { Environment env = this.kruntime.getEnvironment(); // EntityManager em = (EntityManager) env.get(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); PersistentWorkItem workItemInfo = context.findWorkItem( id ); // work item may have been aborted if (workItemInfo != null) { WorkItem workItem = internalGetWorkItem(workItemInfo); workItem.setResults(results); ProcessInstance processInstance = kruntime.getProcessInstance(workItem.getProcessInstanceId()); workItem.setState(WorkItem.COMPLETED); // process instance may have finished already if (processInstance != null) { processInstance.signalEvent("workItemCompleted", workItem); } context.remove(workItemInfo); } }