private PersistenceContext getPersistenceContext() { Environment env = this.kruntime.getEnvironment(); PersistenceContext context = ((PersistenceContextManager) env.get( EnvironmentName.PERSISTENCE_CONTEXT_MANAGER )).getCommandScopedPersistenceContext(); return context; }
@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 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); } }
@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()); } }
@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); } }