protected ExecutionErrorHandler getExecutionErrorHandler() { ExecutionErrorManager errorManager = (ExecutionErrorManager) ((org.jbpm.services.task.commands.TaskContext) context).get(EnvironmentName.EXEC_ERROR_MANAGER); if (errorManager == null) { return new NoOpExecutionErrorHandler(); } return errorManager.getHandler(); } }
@Test public void testBasicScriptFailure() { RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); try { ksession1.startProcess("BrokenScriptTask"); fail("Start process should fail due to broken script"); } catch (Throwable e) { // expected } manager.disposeRuntimeEngine(runtime1); ExecutionErrorManager errorManager = ((AbstractRuntimeManager) manager).getExecutionErrorManager(); ExecutionErrorStorage storage = errorManager.getStorage(); List<ExecutionError> errors = storage.list(0, 10); assertNotNull(errors); assertEquals(1, errors.size()); assertExecutionError(errors.get(0), "Process", "BrokenScriptTask", "Hello"); }
RuntimeEnvironment environment = configureEnvironment(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); ExecutionErrorStorage errorStorage = ((AbstractRuntimeManager) manager).getExecutionErrorManager().getStorage(); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("ScriptTask"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); long processInstanceId = processInstance.getId(); countDownListener.waitTillCompleted(); assertEquals(1, errors.size()); assertEquals(1, errors.size()); runtime.getKieSession().abortProcessInstance(processInstance.getId()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); scheduleLogCleanup(new Date(), null, true, null, "ScriptTask", String.valueOf(processInstanceId), "yyyy-MM-dd HH:mm:ss", manager.getIdentifier()); countDownListener.reset(1); countDownListener.waitTillCompleted();
ExecutionErrorManager errorManager = manager.getExecutionErrorManager(); errorManager.getStorage().acknowledge("SYSTEM", error.getErrorId()); logger.debug("Error {} has been auto acknowledged by system based on {}", error.getErrorId(), getAckRule()); } else {
RuntimeEnvironment environment = configureEnvironment(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); ExecutionErrorStorage errorStorage = ((AbstractRuntimeManager) manager).getExecutionErrorManager().getStorage(); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("ScriptTask"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); long processInstanceId = processInstance.getId(); countDownListener.waitTillCompleted(); assertEquals(1, errors.size()); runtime.getKieSession().abortProcessInstance(processInstance.getId()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); scheduleLogCleanup(null, "5s", true, null, "ScriptTask", String.valueOf(processInstanceId), "yyyy-MM-dd HH:mm:ss", manager.getIdentifier()); countDownListener.reset(1); countDownListener.waitTillCompleted();
RuntimeEnvironment environment = configureEnvironment(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); ExecutionErrorStorage errorStorage = ((AbstractRuntimeManager) manager).getExecutionErrorManager().getStorage(); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); scheduleLogCleanup(null, null, false, "3s", "ScriptTask", null, "yyyy-MM-dd HH:mm:ss", manager.getIdentifier()); ProcessInstance processInstance = ksession.startProcess("ScriptTask"); System.out.println("Process started..."); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); System.out.println("Aborting process instance " + processInstance.getId()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNotNull(processInstance); assertEquals(1, errors.size()); runtime.getKieSession().abortProcessInstance(processInstance.getId()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId());
@Test public void testScriptFailureAfterUserTask() { RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); ProcessInstance pi = ksession1.startProcess("UserTaskWithRollback"); manager.disposeRuntimeEngine(runtime1); runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get(pi.getId())); ksession1 = runtime1.getKieSession(); TaskService taskService = runtime1.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); ExecutionErrorStorage storage = errorManager.getStorage();
protected RequestContext internalExecute(Executable executable, RequestContext ctx) { try { executeNext(executable, ctx); return ctx; } catch (Throwable ex) { // in case there is another interceptor of this type in the stack don't handle it here if (hasInterceptorInStack() || executionErrorManager == null) { throw ex; } executionErrorManager.getHandler().handle(ex); throw ex; } }
.get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("ScriptTask", params); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, errorJobs.size()); RequestInfo errorJob = errorJobs.get(0); assertEquals(errorJob.getProcessInstanceId().longValue(), processInstance.getId()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNull(processInstance); ExecutionErrorStorage errorStorage = errorManager.getStorage(); assertNotNull("ErrorStorage is null", errorStorage);
@Test public void testFailureAfterUserTaskNoWorkItemHandler() { RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); ProcessInstance pi = ksession1.startProcess("UserTaskWithCustomTask"); manager.disposeRuntimeEngine(runtime1); runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get(pi.getId())); ksession1 = runtime1.getKieSession(); TaskService taskService = runtime1.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); ExecutionErrorStorage storage = errorManager.getStorage();
protected ExecutionErrorHandler getExecutionErrorHandler() { ExecutionErrorManager errorManager = (ExecutionErrorManager) getProcessInstance().getKnowledgeRuntime().getEnvironment().get(EnvironmentName.EXEC_ERROR_MANAGER); if (errorManager == null) { return new NoOpExecutionErrorHandler(); } return errorManager.getHandler(); }
.get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("UserTaskWithRollback"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNotNull(processInstance); manager.disposeRuntimeEngine(runtime); runtime = manager.getRuntimeEngine(EmptyContext.get()); TaskService taskService = runtime.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); ExecutionErrorStorage errorStorage = errorManager.getStorage(); assertNotNull("ErrorStorage is null", errorStorage); assertFalse(error.isAcknowledged());
@Test public void testDataBaseFailureInMemoryStorage() { RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); ksession1.addEventListener(new DefaultProcessEventListener(){ ksession1.startProcess("UserTaskWithRollback"); fail("Start process should fail due to data base error"); } catch (Exception e) { manager.disposeRuntimeEngine(runtime1); } catch (Exception e) { ExecutionErrorStorage storage = errorManager.getStorage();
protected RequestContext internalExecute(Executable executable, RequestContext ctx) { try { executeNext(executable, ctx); return ctx; } catch (Throwable ex) { // in case there is another interceptor of this type in the stack don't handle it here if (hasInterceptorInStack() || executionErrorManager == null) { throw ex; } executionErrorManager.getHandler().handle(ex); throw ex; } }
.get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("UserTaskWithRollback"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNotNull(processInstance); manager.disposeRuntimeEngine(runtime); runtime = manager.getRuntimeEngine(EmptyContext.get()); TaskService taskService = runtime.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); ExecutionErrorStorage errorStorage = errorManager.getStorage(); assertNotNull("ErrorStorage is null", errorStorage); assertFalse(error.isAcknowledged());
public void testUserTaskFailure() { RuntimeEngine runtime1 = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession1 = runtime1.getKieSession(); assertNotNull(ksession1); ksession1.startProcess("UserTaskWithRollback"); TaskService taskService = runtime1.getTaskService(); List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK"); assertEquals(1, tasks.size()); manager.disposeRuntimeEngine(runtime1); ExecutionErrorStorage storage = errorManager.getStorage();
protected ExecutionErrorHandler getExecutionErrorHandler() { ExecutionErrorManager errorManager = (ExecutionErrorManager) getProcessInstance().getKnowledgeRuntime().getEnvironment().get(EnvironmentName.EXEC_ERROR_MANAGER); if (errorManager == null) { return new NoOpExecutionErrorHandler(); } return errorManager.getHandler(); }
.get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("ScriptTask"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNotNull(processInstance); assertEquals(errorJob.getProcessInstanceId().longValue(), processInstance.getId()); ExecutionErrorStorage errorStorage = errorManager.getStorage(); assertNotNull("ErrorStorage is null", errorStorage); assertEquals("ScriptTask", error.getProcessId()); assertEquals("", error.getActivityName()); assertEquals(manager.getIdentifier(), error.getDeploymentId()); assertNotNull(error.getError()); assertNotNull(error.getErrorMessage());
.get(); manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ProcessInstance processInstance = ksession.startProcess("ScriptTask"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); processInstance = runtime.getKieSession().getProcessInstance(processInstance.getId()); assertNotNull(processInstance); assertEquals(errorJob.getProcessInstanceId().longValue(), processInstance.getId()); ExecutionErrorStorage errorStorage = errorManager.getStorage(); assertNotNull("ErrorStorage is null", errorStorage); assertEquals("ScriptTask", error.getProcessId()); assertEquals("", error.getActivityName()); assertEquals(manager.getIdentifier(), error.getDeploymentId()); assertNotNull(error.getError()); assertNotNull(error.getErrorMessage());