@Override public void deleteWorkflowRequest(String requestId) throws WorkflowException { String loggedUser = CarbonContext.getThreadLocalCarbonContext().getUsername(); String createdUser = workflowRequestDAO.retrieveCreatedUserOfRequest(requestId); if (!loggedUser.equals(createdUser)) { throw new WorkflowException("User not authorized to delete this request"); } List<WorkflowRequestDeleteListener> workflowRequestDeleteListenerList = WorkflowServiceDataHolder.getInstance().getWorkflowRequestDeleteListenerList(); WorkflowRequest workflowRequest = new WorkflowRequest(); workflowRequest.setRequestId(requestId); workflowRequest.setCreatedBy(createdUser); for (WorkflowRequestDeleteListener workflowRequestDeleteListener : workflowRequestDeleteListenerList) { try { workflowRequestDeleteListener.doPreDeleteWorkflowRequest(workflowRequest); } catch (WorkflowException e) { throw new WorkflowException( "Error occurred while calling doPreDeleteWorkflowRequest in WorkflowRequestDeleteListener ," + workflowRequestDeleteListener.getClass().getName(), e); } } workflowRequestDAO.updateStatusOfRequest(requestId, WorkflowRequestStatus.DELETED.toString()); workflowRequestAssociationDAO.updateStatusOfRelationshipsOfPendingRequest( requestId, WFConstant.HT_STATE_SKIPPED); requestEntityRelationshipDAO.deleteRelationshipsOfRequest(requestId); for (WorkflowRequestDeleteListener workflowRequestDeleteListener : workflowRequestDeleteListenerList) { try { workflowRequestDeleteListener.doPostDeleteWorkflowRequest(workflowRequest); } catch (WorkflowException e) { throw new WorkflowException( "Error occurred while calling doPostDeleteWorkflowRequest in WorkflowRequestDeleteListener ," + workflowRequestDeleteListener.getClass().getName(), e); } } }