@Test public void deleteProcessInstance() throws Exception { Long taskId = 500L; Date dueDate = new Date(); Date started = new Date(); Date ended = new Date(); long taskDuration = 9876543L; String deleteReason = "TERMINATED"; String assignee = "assignee"; List<String> candidateGroup = new ArrayList<>(); candidateGroup.add("candidate group"); int activitiPriority = 50; String title = "task Title"; String userId = "userId"; String processId = "500"; String processName = "processName"; Long objectId = 250L; String objectType = "objectType"; String objectName = "objectName"; String taskDefKey = "taskDefinitionKey"; Map<String, Object> pvars = new HashMap<>(); pvars.put("OBJECT_ID", objectId); pvars.put("OBJECT_TYPE", objectType); pvars.put("OBJECT_NAME", objectName); Map<String, Object> taskLocalVars = new HashMap<>(); taskLocalVars.put("START_DATE", new Date()); taskLocalVars.put("PERCENT_COMPLETE", 75); taskLocalVars.put("DETAILS", "task details"); String ipAddress = "ipAddress"; List<AcmParticipant> partList = new ArrayList<>(); partList.add(new AcmParticipant()); Capture<AcmApplicationTaskEvent> capturedEvent = new Capture<>(); mockTaskEventPublisher.publishTaskEvent(capture(capturedEvent)); expect(mockRuntimeService.createProcessInstanceQuery()).andReturn(mockProcessInstanceQuery); expect(mockProcessInstanceQuery.processInstanceId(processId)).andReturn(mockProcessInstanceQuery); expect(mockProcessInstanceQuery.singleResult()).andReturn(mockProcessInstance); expect(mockAuthentication.getName()).andReturn(userId).atLeastOnce(); expect(mockRuntimeService.getVariable(processId, TaskConstants.VARIABLE_NAME_OBJECT_ID)).andReturn(objectId); mockRuntimeService.deleteProcessInstance(processId, deleteReason); expect(mockHistoryService.createHistoricTaskInstanceQuery()).andReturn(mockHistoricTaskInstanceQuery); expect(mockHistoricTaskInstanceQuery.processInstanceId(processId)).andReturn(mockHistoricTaskInstanceQuery); expect(mockHistoricTaskInstanceQuery.includeProcessVariables()).andReturn(mockHistoricTaskInstanceQuery); expect(mockHistoricTaskInstanceQuery.includeTaskLocalVariables()).andReturn(mockHistoricTaskInstanceQuery); expect(mockHistoricTaskInstanceQuery.list()).andReturn(Arrays.asList(mockHistoricTaskInstance)); expect(mockHistoricTaskInstance.getDeleteReason()).andReturn(deleteReason).times(2); expect(mockHistoryService.createHistoricProcessInstanceQuery()).andReturn(mockHistoricProcessInstanceQuery); expect(mockHistoricProcessInstanceQuery.processInstanceId(processId)).andReturn(mockHistoricProcessInstanceQuery); expect(mockHistoricProcessInstanceQuery.singleResult()).andReturn(mockHistoricProcessInstance); expect(mockHistoricProcessInstance.getEndTime()).andReturn(ended).times(2); expect(mockHistoricTaskInstance.getStartTime()).andReturn(started).times(2); expect(mockHistoricTaskInstance.getEndTime()).andReturn(ended).times(4); expect(mockHistoricTaskInstance.getId()).andReturn(taskId.toString()); expect(mockHistoricTaskInstance.getDurationInMillis()).andReturn(taskDuration); expect(mockHistoricTaskInstance.getDueDate()).andReturn(dueDate); expect(mockHistoricTaskInstance.getPriority()).andReturn(activitiPriority); expect(mockHistoricTaskInstance.getName()).andReturn(title); expect(mockHistoricTaskInstance.getAssignee()).andReturn(assignee); expect(mockHistoricTaskInstance.getTaskLocalVariables()).andReturn(pvars).atLeastOnce(); expect(mockHistoricTaskInstance.getProcessVariables()).andReturn(pvars).atLeastOnce(); expect(mockHistoricTaskInstance.getProcessInstanceId()).andReturn(processId).times(3); expect(mockHistoricTaskInstance.getProcessDefinitionId()).andReturn(processId); expect(mockHistoricTaskInstance.getTaskDefinitionKey()).andReturn(taskDefKey); expect(mockRepositoryService.createProcessDefinitionQuery()).andReturn(mockProcessDefinitionQuery); expect(mockProcessDefinitionQuery.processDefinitionId(processId)).andReturn(mockProcessDefinitionQuery); expect(mockProcessDefinitionQuery.singleResult()).andReturn(mockProcessDefinition); expect(mockHistoryService.createHistoricVariableInstanceQuery()).andReturn(mockHistoricVariableInstanceQuery); expect(mockHistoricVariableInstanceQuery.taskId(taskId.toString())).andReturn(mockHistoricVariableInstanceQuery); expect(mockHistoricVariableInstanceQuery.variableName("DETAILS")).andReturn(mockHistoricVariableInstanceQuery); expect(mockHistoricVariableInstanceQuery.singleResult()).andReturn(mockHistoricVariableInstance); expect(mockHistoricVariableInstance.getValue()).andReturn("details"); expect(mockHistoryService.createHistoricVariableInstanceQuery()).andReturn(mockHistoricVariableInstanceQuery); expect(mockHistoricVariableInstanceQuery.taskId(taskId.toString())).andReturn(mockHistoricVariableInstanceQuery); expect(mockHistoricVariableInstanceQuery.variableName("REWORK_INSTRUCTIONS")).andReturn(mockHistoricVariableInstanceQuery); expect(mockHistoricVariableInstanceQuery.singleResult()).andReturn(mockHistoricVariableInstance); expect(mockHistoricVariableInstance.getValue()).andReturn(null); expect(mockProcessDefinition.getName()).andReturn(processName); expect(mockRepositoryService.getBpmnModel(processId)).andReturn(mockBpmnModel); expect(mockBpmnModel.getProcesses()).andReturn(Arrays.asList(mockProcess)); expect(mockProcess.getFlowElementRecursive(taskDefKey)).andReturn(mockFlowElement); expect(mockFlowElement.getFormProperties()).andReturn(Arrays.asList(mockFormProperty)); expect(mockFormProperty.getName()).andReturn("Test Outcome").atLeastOnce(); expect(mockFormProperty.getId()).andReturn("TestOutcome").atLeastOnce(); expect(mockFormProperty.getFormValues()).andReturn(Arrays.asList(mockFormValue)); expect(mockFormValue.getId()).andReturn("formValueId").atLeastOnce(); expect(mockFormValue.getName()).andReturn("formValueName").atLeastOnce(); expect(mockParticipantDao.findParticipantsForObject("TASK", taskId)).andReturn(partList); expect(mockHistoricTaskInstance.getId()).andReturn(taskId.toString()); expect(mockHistoryService.getHistoricIdentityLinksForTask(taskId.toString())).andReturn(Arrays.asList(mockCandidateGroup2)); expect(mockCandidateGroup2.getType()).andReturn(TaskConstants.IDENTITY_LINK_TYPE_CANDIDATE); expect(mockCandidateGroup2.getGroupId()).andReturn("candidate group").atLeastOnce(); replayAll(); unit.deleteProcessInstance(objectId.toString(), processId, deleteReason, mockAuthentication, ipAddress); verifyAll(); }
@Override @Transactional public void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication, String ipAddress) throws AcmTaskException { if (processId != null) { try { ProcessInstance processInstance = getActivitiRuntimeService().createProcessInstanceQuery().processInstanceId(processId) .singleResult(); if (processInstance != null) { Long objectId = (Long) getActivitiRuntimeService().getVariable(processId, TaskConstants.VARIABLE_NAME_OBJECT_ID); if (objectId == null) { throw new AcmTaskException("No parent object ID is associated with the process instance ID " + processId); } if (objectId != null && objectId.toString().equals(parentId)) { log.info("provided ID [{}] and object ID from process instance match [{}]", objectId, parentId); deleteReason = TaskConstants.STATE_TERMINATED; getActivitiRuntimeService().deleteProcessInstance(processId, deleteReason); List<HistoricTaskInstance> htis = getActivitiHistoryService().createHistoricTaskInstanceQuery() .processInstanceId(processId).includeProcessVariables().includeTaskLocalVariables().list(); for (HistoricTaskInstance hti : htis) { AcmTask acmTask = acmTaskFromHistoricActivitiTask(hti); if (acmTask != null) { log.info("Task with id [{}] TERMINATED due to deletion of process instance with ID [{}]", acmTask.getId(), processId); AcmApplicationTaskEvent event = new AcmApplicationTaskEvent(acmTask, "terminate", authentication.getName(), true, ipAddress); getTaskEventPublisher().publishTaskEvent(event); } } } else { throw new AcmTaskException("Process cannot be deleted as supplied parentId : " + parentId + "doesn't match with process instance object Id : " + objectId); } } } catch (ActivitiException e) { log.info("Deleting process instance failed for process ID: [{}]", processId); throw new AcmTaskException(e.getMessage(), e); } } }
ActivitiTaskDao extends AcmAbstractDao<AcmTask> implements TaskDao, AcmNotificationDao { @Override @Transactional public void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication, String ipAddress) throws AcmTaskException { if (processId != null) { try { ProcessInstance processInstance = getActivitiRuntimeService().createProcessInstanceQuery().processInstanceId(processId) .singleResult(); if (processInstance != null) { Long objectId = (Long) getActivitiRuntimeService().getVariable(processId, TaskConstants.VARIABLE_NAME_OBJECT_ID); if (objectId == null) { throw new AcmTaskException("No parent object ID is associated with the process instance ID " + processId); } if (objectId != null && objectId.toString().equals(parentId)) { log.info("provided ID [{}] and object ID from process instance match [{}]", objectId, parentId); deleteReason = TaskConstants.STATE_TERMINATED; getActivitiRuntimeService().deleteProcessInstance(processId, deleteReason); List<HistoricTaskInstance> htis = getActivitiHistoryService().createHistoricTaskInstanceQuery() .processInstanceId(processId).includeProcessVariables().includeTaskLocalVariables().list(); for (HistoricTaskInstance hti : htis) { AcmTask acmTask = acmTaskFromHistoricActivitiTask(hti); if (acmTask != null) { log.info("Task with id [{}] TERMINATED due to deletion of process instance with ID [{}]", acmTask.getId(), processId); AcmApplicationTaskEvent event = new AcmApplicationTaskEvent(acmTask, "terminate", authentication.getName(), true, ipAddress); getTaskEventPublisher().publishTaskEvent(event); } } } else { throw new AcmTaskException("Process cannot be deleted as supplied parentId : " + parentId + "doesn't match with process instance object Id : " + objectId); } } } catch (ActivitiException e) { log.info("Deleting process instance failed for process ID: [{}]", processId); throw new AcmTaskException(e.getMessage(), e); } } } }
ActivitiTaskDao extends AcmAbstractDao<AcmTask> implements TaskDao, AcmNotificationDao { @Override @Transactional public void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication, String ipAddress) throws AcmTaskException { if (processId != null) { try { ProcessInstance processInstance = getActivitiRuntimeService().createProcessInstanceQuery().processInstanceId(processId) .singleResult(); if (processInstance != null) { Long objectId = (Long) getActivitiRuntimeService().getVariable(processId, TaskConstants.VARIABLE_NAME_OBJECT_ID); if (objectId == null) { throw new AcmTaskException("No parent object ID is associated with the process instance ID " + processId); } if (objectId != null && objectId.toString().equals(parentId)) { log.info("provided ID [{}] and object ID from process instance match [{}]", objectId, parentId); deleteReason = TaskConstants.STATE_TERMINATED; getActivitiRuntimeService().deleteProcessInstance(processId, deleteReason); List<HistoricTaskInstance> htis = getActivitiHistoryService().createHistoricTaskInstanceQuery() .processInstanceId(processId).includeProcessVariables().includeTaskLocalVariables().list(); for (HistoricTaskInstance hti : htis) { AcmTask acmTask = acmTaskFromHistoricActivitiTask(hti); if (acmTask != null) { log.info("Task with id [{}] TERMINATED due to deletion of process instance with ID [{}]", acmTask.getId(), processId); AcmApplicationTaskEvent event = new AcmApplicationTaskEvent(acmTask, "terminate", authentication.getName(), true, ipAddress); getTaskEventPublisher().publishTaskEvent(event); } } } else { throw new AcmTaskException("Process cannot be deleted as supplied parentId : " + parentId + "doesn't match with process instance object Id : " + objectId); } } } catch (ActivitiException e) { log.info("Deleting process instance failed for process ID: [{}]", processId); throw new AcmTaskException(e.getMessage(), e); } } }  }
ActivitiTaskDao extends AcmAbstractDao<AcmTask> implements TaskDao, AcmNotificationDao { @Override @Transactional public void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication, String ipAddress) throws AcmTaskException { if (processId != null) { try { ProcessInstance processInstance = getActivitiRuntimeService().createProcessInstanceQuery().processInstanceId(processId) .singleResult(); if (processInstance != null) { Long objectId = (Long) getActivitiRuntimeService().getVariable(processId, TaskConstants.VARIABLE_NAME_OBJECT_ID); if (objectId == null) { throw new AcmTaskException("No parent object ID is associated with the process instance ID " + processId); } if (objectId != null && objectId.toString().equals(parentId)) { log.info("provided ID [{}] and object ID from process instance match [{}]", objectId, parentId); deleteReason = TaskConstants.STATE_TERMINATED; getActivitiRuntimeService().deleteProcessInstance(processId, deleteReason); List<HistoricTaskInstance> htis = getActivitiHistoryService().createHistoricTaskInstanceQuery() .processInstanceId(processId).includeProcessVariables().includeTaskLocalVariables().list(); for (HistoricTaskInstance hti : htis) { AcmTask acmTask = acmTaskFromHistoricActivitiTask(hti); if (acmTask != null) { log.info("Task with id [{}] TERMINATED due to deletion of process instance with ID [{}]", acmTask.getId(), processId); AcmApplicationTaskEvent event = new AcmApplicationTaskEvent(acmTask, "terminate", authentication.getName(), true, ipAddress); getTaskEventPublisher().publishTaskEvent(event); } } } else { throw new AcmTaskException("Process cannot be deleted as supplied parentId : " + parentId + "doesn't match with process instance object Id : " + objectId); } } } catch (ActivitiException e) { log.info("Deleting process instance failed for process ID: [{}]", processId); throw new AcmTaskException(e.getMessage(), e); } } }  @Override List<ProcessInstance> findProcessesByProcessVariables(Map<String, Object> matchProcessVariables); @Override boolean isProcessActive(String businessProcessId); @Override boolean isWaitingOnReceiveTask(String businessProcessId, String receiveTaskId); @Override T readProcessVariable(String businessProcessId, String processVariableKey, boolean readFromHistory); @Override void writeProcessVariable(String businessProcessId, String processVariableKey, Object processVariableValue); @Override void signalTask(String processInstanceId, String receiveTaskId); @Override void messageTask(String taskId, String messageName); @Override @Transactional AcmTask createAdHocTask(AcmTask in); @Override @Transactional AcmTask save(AcmTask in); @Override void ensureCorrectAssigneeInParticipants(AcmTask in); @Override @Transactional AcmTask completeTask(Principal userThatCompletedTheTask, Long taskId); @Override AcmTask completeTask(Principal userThatCompletedTheTask, Long taskId, String outcomePropertyName, String outcomeId); @Override @Transactional AcmTask deleteTask(Principal userThatCompletedTheTask, Long taskId); @Override List<AcmTask> tasksForUser(String user); @Override @Transactional(propagation = Propagation.REQUIRES_NEW) List<Long> findTasksIdsForParentObjectIdAndParentObjectType(String parentObjectType, Long parentObjectId); List<AcmTask> findByVariableForObjectTypeAndId(String name, String value, String objectType, Long objectId); @Override List<AcmTask> allTasks(); @Override List<AcmTask> pastDueTasks(); @Override @Transactional void claimTask(Long taskId, String userId); @Override @Transactional void unclaimTask(Long taskId); @Override @Transactional void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication,
            String ipAddress); @Override List<AcmTask> dueSpecificDateTasks(NumberOfDays numberOfDaysFromToday); @Override AcmTask findById(Long taskId); @Override List<WorkflowHistoryInstance> getWorkflowHistory(String id, boolean adhoc); @Override List<AcmTask> getTasksModifiedSince(Date lastModified, int start, int pageSize); @Override void createFolderForTaskEvent(AcmTask task); @Override AcmTask acmTaskFromActivitiTask(Task activitiTask); @Override AcmTask acmTaskFromActivitiTask(Task activitiTask, Map<String, Object> processVariables, Map<String, Object> localVariables); @Override AcmTask acmTaskFromActivitiTask(Task activitiTask, Map<String, Object> processVariables, Map<String, Object> localVariables,
            String taskEventName); @Override byte[] getDiagram(Long id); @Override byte[] getDiagram(String processId); @Override AcmTask startBusinessProcess(Map<String, Object> pVars, String businessProcessName); RuntimeService getActivitiRuntimeService(); void setActivitiRuntimeService(RuntimeService activitiRuntimeService); TaskService getActivitiTaskService(); void setActivitiTaskService(TaskService activitiTaskService); RepositoryService getActivitiRepositoryService(); void setActivitiRepositoryService(RepositoryService activitiRepositoryService); HistoryService getActivitiHistoryService(); void setActivitiHistoryService(HistoryService activitiHistoryService); Map<String, Integer> getPriorityLevelToNumberMap(); void setPriorityLevelToNumberMap(Map<String, Integer> priorityLevelToNumberMap); Map<String, List<String>> getRequiredFieldsPerOutcomeMap(); void setRequiredFieldsPerOutcomeMap(Map<String, List<String>> requiredFieldsPerOutcomeMap); UserDao getUserDao(); void setUserDao(UserDao userDao); AcmParticipantDao getParticipantDao(); void setParticipantDao(AcmParticipantDao participantDao); DataAccessPrivilegeListener getDataAccessPrivilegeListener(); void setDataAccessPrivilegeListener(DataAccessPrivilegeListener dataAccessPrivilegeListener); TaskBusinessRule getTaskBusinessRule(); void setTaskBusinessRule(TaskBusinessRule taskBusinessRule); EcmFileService getFileService(); void setFileService(EcmFileService fileService); AcmContainerDao getContainerFolderDao(); void setContainerFolderDao(AcmContainerDao containerFolderDao); EcmFileDao getFileDao(); void setFileDao(EcmFileDao fileDao); AuditPropertyEntityAdapter getAuditPropertyEntityAdapter(); void setAuditPropertyEntityAdapter(AuditPropertyEntityAdapter auditPropertyEntityAdapter); TaskEventPublisher getTaskEventPublisher(); void setTaskEventPublisher(TaskEventPublisher taskEventPublisher); ObjectConverter getObjectConverter(); void setObjectConverter(ObjectConverter objectConverter); @Override AcmNotifiableEntity findEntity(Long id); @Override String getSupportedNotifiableObjectType(); EcmFileParticipantService getFileParticipantService(); void setFileParticipantService(EcmFileParticipantService fileParticipantService); @Override String getSupportedObjectType(); @Override AcmTask find(Long id); @Override List<AcmTask> findAll(); @Override List<AcmTask> findAllOrderBy(String column); @Override List<AcmTask> findModifiedSince(Date lastModified, int startRow, int pageSize); @Override TypedQuery<AcmTask> getSortedQuery(String sort); }
ActivitiTaskDao extends AcmAbstractDao<AcmTask> implements TaskDao, AcmNotificationDao { @Override @Transactional public void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication, String ipAddress) throws AcmTaskException { if (processId != null) { try { ProcessInstance processInstance = getActivitiRuntimeService().createProcessInstanceQuery().processInstanceId(processId) .singleResult(); if (processInstance != null) { Long objectId = (Long) getActivitiRuntimeService().getVariable(processId, TaskConstants.VARIABLE_NAME_OBJECT_ID); if (objectId == null) { throw new AcmTaskException("No parent object ID is associated with the process instance ID " + processId); } if (objectId != null && objectId.toString().equals(parentId)) { log.info("provided ID [{}] and object ID from process instance match [{}]", objectId, parentId); deleteReason = TaskConstants.STATE_TERMINATED; getActivitiRuntimeService().deleteProcessInstance(processId, deleteReason); List<HistoricTaskInstance> htis = getActivitiHistoryService().createHistoricTaskInstanceQuery() .processInstanceId(processId).includeProcessVariables().includeTaskLocalVariables().list(); for (HistoricTaskInstance hti : htis) { AcmTask acmTask = acmTaskFromHistoricActivitiTask(hti); if (acmTask != null) { log.info("Task with id [{}] TERMINATED due to deletion of process instance with ID [{}]", acmTask.getId(), processId); AcmApplicationTaskEvent event = new AcmApplicationTaskEvent(acmTask, "terminate", authentication.getName(), true, ipAddress); getTaskEventPublisher().publishTaskEvent(event); } } } else { throw new AcmTaskException("Process cannot be deleted as supplied parentId : " + parentId + "doesn't match with process instance object Id : " + objectId); } } } catch (ActivitiException e) { log.info("Deleting process instance failed for process ID: [{}]", processId); throw new AcmTaskException(e.getMessage(), e); } } }  @Override List<ProcessInstance> findProcessesByProcessVariables(Map<String, Object> matchProcessVariables); @Override boolean isProcessActive(String businessProcessId); @Override boolean isWaitingOnReceiveTask(String businessProcessId, String receiveTaskId); @Override T readProcessVariable(String businessProcessId, String processVariableKey, boolean readFromHistory); @Override void writeProcessVariable(String businessProcessId, String processVariableKey, Object processVariableValue); @Override void signalTask(String processInstanceId, String receiveTaskId); @Override void messageTask(String taskId, String messageName); @Override @Transactional AcmTask createAdHocTask(AcmTask in); @Override @Transactional AcmTask save(AcmTask in); @Override void ensureCorrectAssigneeInParticipants(AcmTask in); @Override @Transactional AcmTask completeTask(Principal userThatCompletedTheTask, Long taskId); @Override AcmTask completeTask(Principal userThatCompletedTheTask, Long taskId, String outcomePropertyName, String outcomeId); @Override @Transactional AcmTask deleteTask(Principal userThatCompletedTheTask, Long taskId); @Override List<AcmTask> tasksForUser(String user); @Override @Transactional(propagation = Propagation.REQUIRES_NEW) List<Long> findTasksIdsForParentObjectIdAndParentObjectType(String parentObjectType, Long parentObjectId); List<AcmTask> findByVariableForObjectTypeAndId(String name, String value, String objectType, Long objectId); @Override List<AcmTask> allTasks(); @Override List<AcmTask> pastDueTasks(); @Override @Transactional void claimTask(Long taskId, String userId); @Override @Transactional void unclaimTask(Long taskId); @Override @Transactional void deleteProcessInstance(String parentId, String processId, String deleteReason, Authentication authentication,
            String ipAddress); @Override List<AcmTask> dueSpecificDateTasks(NumberOfDays numberOfDaysFromToday); @Override AcmTask findById(Long taskId); @Override List<WorkflowHistoryInstance> getWorkflowHistory(String id, boolean adhoc); @Override List<AcmTask> getTasksModifiedSince(Date lastModified, int start, int pageSize); @Override void createFolderForTaskEvent(AcmTask task); @Override AcmTask acmTaskFromActivitiTask(Task activitiTask); @Override AcmTask acmTaskFromActivitiTask(Task activitiTask, Map<String, Object> processVariables, Map<String, Object> localVariables); @Override AcmTask acmTaskFromActivitiTask(Task activitiTask, Map<String, Object> processVariables, Map<String, Object> localVariables,
            String taskEventName); @Override byte[] getDiagram(Long id); @Override byte[] getDiagram(String processId); @Override AcmTask startBusinessProcess(Map<String, Object> pVars, String businessProcessName); RuntimeService getActivitiRuntimeService(); void setActivitiRuntimeService(RuntimeService activitiRuntimeService); TaskService getActivitiTaskService(); void setActivitiTaskService(TaskService activitiTaskService); RepositoryService getActivitiRepositoryService(); void setActivitiRepositoryService(RepositoryService activitiRepositoryService); HistoryService getActivitiHistoryService(); void setActivitiHistoryService(HistoryService activitiHistoryService); Map<String, Integer> getPriorityLevelToNumberMap(); void setPriorityLevelToNumberMap(Map<String, Integer> priorityLevelToNumberMap); Map<String, List<String>> getRequiredFieldsPerOutcomeMap(); void setRequiredFieldsPerOutcomeMap(Map<String, List<String>> requiredFieldsPerOutcomeMap); UserDao getUserDao(); void setUserDao(UserDao userDao); AcmParticipantDao getParticipantDao(); void setParticipantDao(AcmParticipantDao participantDao); DataAccessPrivilegeListener getDataAccessPrivilegeListener(); void setDataAccessPrivilegeListener(DataAccessPrivilegeListener dataAccessPrivilegeListener); TaskBusinessRule getTaskBusinessRule(); void setTaskBusinessRule(TaskBusinessRule taskBusinessRule); EcmFileService getFileService(); void setFileService(EcmFileService fileService); AcmContainerDao getContainerFolderDao(); void setContainerFolderDao(AcmContainerDao containerFolderDao); EcmFileDao getFileDao(); void setFileDao(EcmFileDao fileDao); AuditPropertyEntityAdapter getAuditPropertyEntityAdapter(); void setAuditPropertyEntityAdapter(AuditPropertyEntityAdapter auditPropertyEntityAdapter); TaskEventPublisher getTaskEventPublisher(); void setTaskEventPublisher(TaskEventPublisher taskEventPublisher); ObjectConverter getObjectConverter(); void setObjectConverter(ObjectConverter objectConverter); @Override AcmNotifiableEntity findEntity(Long id); @Override String getSupportedNotifiableObjectType(); EcmFileParticipantService getFileParticipantService(); void setFileParticipantService(EcmFileParticipantService fileParticipantService); @Override String getSupportedObjectType(); @Override AcmTask find(Long id); @Override List<AcmTask> findAll(); @Override List<AcmTask> findAllOrderBy(String column); @Override List<AcmTask> findModifiedSince(Date lastModified, int startRow, int pageSize); @Override TypedQuery<AcmTask> getSortedQuery(String sort);  }