@Override public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { try { originalTaskHandler.abortWorkItem(workItem, manager); } catch( RuntimeException re ) { handleAbortException(re, workItem, manager); } }
@Test public void testTaskAbortSkippable() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); getHandler().abortWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(0, tasks.size()); } @Test
@Test public void testTaskAbortNotSkippable() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader"); workItem.setParameter("Skippable", "false"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(1, tasks.size()); getHandler().abortWorkItem(workItem, manager); // aborting work item will exit task and not skip it tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(0, tasks.size()); } @Test
@Test public void testTaskExitByCustomBusinessAdmin() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader"); workItem.setParameter("BusinessAdministratorId", "Luke Cage"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); Task task = taskService.getTaskByWorkItemId(workItem.getId()); assertNotNull(task); getHandler().abortWorkItem(workItem, manager); task = taskService.getTaskByWorkItemId(workItem.getId()); assertEquals("TaskName", task.getNames().get(0).getText()); assertEquals(10, task.getPriority().intValue()); assertEquals("Comment", task.getDescriptions().get(0).getText()); assertEquals(Status.Exited, task.getTaskData().getStatus()); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(0, tasks.size()); }
@Override public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { try { originalTaskHandler.abortWorkItem(workItem, manager); } catch( RuntimeException re ) { handleAbortException(re, workItem, manager); } }
@Override public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { delegate.abortWorkItem(new WorkItemKieAdapter(workItem), new WorkItemManagerKieAdapter(manager)); }
public void internalAbortWorkItem( long id ) { PersistenceContext context = getPersistenceContext(); WorkItemInfo workItemInfo = (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 { if ( workItems != null ) { workItems.remove( id ); throwWorkItemNotFoundException( workItem ); } } if ( workItems != null ) { workItems.remove( id ); } context.remove( 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); } }
@Test public void testTaskAbortSkippable() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); getHandler().abortWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(0, tasks.size()); } @Test
@Test public void testTaskAbortNotSkippable() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader"); workItem.setParameter("Skippable", "false"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(1, tasks.size()); getHandler().abortWorkItem(workItem, manager); // aborting work item will exit task and not skip it tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(0, tasks.size()); } @Test
@Test public void testTaskExitByCustomBusinessAdmin() throws Exception { TestWorkItemManager manager = new TestWorkItemManager(); ksession.setWorkItemManager(manager); WorkItemImpl workItem = new WorkItemImpl(); workItem.setName("Human Task"); workItem.setParameter("NodeName", "TaskName"); workItem.setParameter("Comment", "Comment"); workItem.setParameter("Priority", "10"); workItem.setParameter("ActorId", "Darth Vader"); workItem.setParameter("BusinessAdministratorId", "Luke Cage"); workItem.setProcessInstanceId(10); getHandler().executeWorkItem(workItem, manager); Task task = taskService.getTaskByWorkItemId(workItem.getId()); assertNotNull(task); getHandler().abortWorkItem(workItem, manager); task = taskService.getTaskByWorkItemId(workItem.getId()); assertEquals("TaskName", task.getNames().get(0).getText()); assertEquals(10, task.getPriority().intValue()); assertEquals("Comment", task.getDescriptions().get(0).getText()); assertEquals(Status.Exited, task.getTaskData().getStatus()); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("Darth Vader", "en-UK"); assertEquals(0, tasks.size()); }