Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
smetanin_db_coursework.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
338.14 Кб
Скачать

2.2 Функции

Реализованные функции используются главным образом как вспомогательные, при построении запросов для рассчитываемых значений, а также в качестве ограничений для проверки и сохранения ссылочной и логической целостности базы данных.

  1. FormatUserName – функция составляет полное имя пользователя вида «Имя Отчество Фамилия» из трех отдельных кусков. Параметры: @FirstName NVARCHAR(256), @MiddleName NVARCHAR(256), @LastName NVARCHAR(256).

  2. GetProjectManager – вычисляет нового менеджера проекта при его отсутствии или замене предыдущего. Ищет вверх по иерархии проектов подходящего менеджера и возвращает его Id. Параметры: @ProjectId INT, @ExceptId INT.

  3. GetTaskPerformer – вычисляет нового исполнителя задачи при его отсутствии или замене предыдущего. Ищет вверх по иерархии задач подходящего исполнителя, если такого нет – выбирает менеджера проекта с помощью GetProjectManager, и возвращает его Id. Параметры: @TaskId INT, @ExceptId INT.

  4. GetProjectEndDate – вычисляет дату окончания проекта. Если она не задана у проекта, ищет вверх по иерархии проектов и возвращает первую непустую. Параметры: @ProjectId INT.

  5. GetTaskEndDate – вычисляет дату окончания задачи. Если она не задана у задачи, пытается использовать дату у вехи. Если вехи нет, то идет вверх по иерархии задач, а затем по иерархии проектов с помощью GetProjectEndDate. Параметры: @TaskId INT.

  6. IsValue – действует аналогично ISNULL, но при этом есть возможность реагировать не только на NULL, но и на переданное в качестве параметра @Except значение.

  7. CheckTask – проверяет корректность объекта задачи (Task) – т.е. задача привязана к тому же проекту, что и её родительская задача, а также её компонент и веха. А также что состояние принадлежит заданной категории задачи.

  8. GetCurrentUserId – Получает UserId по текущему пользователю MS SQL. Если такого нет, то возвращает NULL.

2.3 Хранимые процедуры

В базе данных создан ряд хранимых процедур, реализующих функции бизнес-логики. Процедуры используются как для получения информации о задачах и проектах, так и для упрощенного создания и управления объектами предметной области.

  1. GetProject – процедура, выводящая полную информацию о проекте с учетом всех данных его подпроектов и связанных записей. Входные параметры: @ProjectId INT. Вывод – [Project], [Parent project], [Creator], [Manager], [Start date], [End date], [Modify date], [Managers], [Users].

  2. GetTask – процедура, выводящая полную информацию о задаче с учетом всех данных её подзадач и связанных записей. Входные параметры: @TaskId INT. Вывод - [Task], [Parent task], [Project], [Component], [Milestone], [Category], [State], [Creator], [Performer], [Estimated hours], [Spent hours], [Progress], [Start date], [End date], [Modify date], [Performers], [Comments], [Files].

  3. GetCategoryTransitions – процедура, выводящая жизненные циклы категорий задач в удобном виде. Входные параметры: @CategoryId INT. Вывод – [Category], [Initial state], [Final state].

  4. GetProjectUsers – процедура, выводящая списки участников проекта в удобном виде. Входные параметры: @ProjectId INT. Вывод – [Project], [User]

  5. GetTaskAuditors – процедура, выводящая списки аудиторов задачи в удобном виде. Входные параметры: @TaskId INT. Вывод – [Task], [Auditor]

  6. CreateProject – процедура для создания нового проекта. Доступна при наличии роли Manager. Поле CreatorId у созданного проекта устанавливается в соотвествии с текущим пользователем. Входные параметры: @Title NVARCHAR(256), @ParentId INT, @Content NVARCHAR(MAX), @StartDate DATE, @EndDate DATE, @ManageId INT.

  7. UpdateProject – процедура для изменения существующего проекта. Доступна при наличии роли Manage и только если её создатель (CreatorId) – текущей пользователь. Входные параметры: @ProjectId INT, @Content NVARCHAR(MAX), @StartDate DATE, @EndDate DATE, @ManageId INT.

  8. DeleteProject - процедура для удаления существующего проекта. Доступна при наличии роли Manage и только если её создатель (CreatorId) – текущей пользователь. Входные параметры: @ProjectId INT.

  9. CreateComponent – процедура для создания компонента. Доступна при наличии роли Manage и только если создатель проекта Project (CreatorId) – текущей пользователь. Параметры: @ProjectId INT, @ParentId INT, @Title NVARCHAR(256).

  10. DeleteComponent – процедура для удаления компонента. Доступна при наличии роли Manage и только если создатель проекта Project (CreatorId) – текущей пользователь. Параметры: @ComponentId INT.

  11. CreateMilestone – процедура для создания вехи. Доступна при наличии роли Manage и только если создатель проекта Project (CreatorId) – текущей пользователь. Параметры: @ProjectId INT, @Title NVARCHAR(256), @Due DATE.

  12. DeleteMilestone – процедура для удаления вехи. Доступна при наличии роли Manage и только если создатель проекта Project (CreatorId) – текущей пользователь. Параметры: @MilestoneId INT.

  13. CreateTask – процедура для создания новой задачи. Доступна только при наличии роли Contributor и присутствии текущего пользователя в списках участников проекта. Параметры: @Title NVARCHAR(256), @ParentId INT, @ProjectId INT, @CategoryId INT, @Content NVARCHAR(MAX), @ComponentId INT, @StartDate DATE, @EndDate DATE, @PerformerId INT, @MilestoneId INT, @EstimatedTime DECIMAL(6, 1).

  14. UpdateTask – процедура изменения задачи. Доступна только при наличии роли Contributor и если создатель задачи – текущий пользователь. Параметры: @TaskId INT, @StateId INT, @StartDate DATE, @EndDate DATE, @PerformerId INT, @MilestoneId INT, @EstimatedTime DECIMAL(6, 1), @SpentTime DECIMAL(6, 1), @Progress TINYINT, @Content NVARCHAR(MAX).

  15. DeleteTask – процедура удаления задачи. Доступна только при наличии роли Contributor и если создатель задачи – текущий пользователь. Параметры: @TaskId INT.

  16. CreateTaskCheckItem - процедура создания пункта задачи. Доступна только при наличии роли Contributor и если создатель задачи Task – текущий пользователь. Параметры: @TaskId INT, @Title NVARCHAR(256).

  17. DeleteTaskCheckItem - процедура удаления пункта задачи. Доступна только при наличии роли Contributor и если создатель задачи Task – текущий пользователь. Параметры: @TaskCheckItemId INT.

  18. CreateComment - процедура создания комментария. Доступна только при наличии роли Contributor и если создатель задачи Task – текущий пользователь. Параметры: @TaskId INT, @Content NVARCHAR(MAX).

  19. DeleteComment - процедура удаления комментария. Доступна только при наличии роли Contributor и если создатель задачи Task – текущий пользователь. Параметры: @CommentId INT.

  20. CheckUser – служебная процедура, проверящая текущего пользователя на соответствие заданному, и вызывающая ошибку в случае несоответствия. Входные данные - @UserId INT.

  21. GetProjectInfo – служебная процедура, используется в GetProject для рекурсивного сбора данных о проекте и подпроектах. Параметры: @ProjectId INT. Выходные: @StartDate DATE, @EndDate DATE, @ModifyDate DATE, @Managers NVARCHAR(MAX), @Users NVARCHAR(MAX)

  22. GetTaskInfo – служебная процедура, используется в GetTask для рекурсивного сбора данных о задаче и подзадачах. Параметры: @TaskId INT. Выходные: @Estimated INT, @Spent INT, @Progress INT, @StartDate DATE, @EndDate DATE, @ModifyDate DATE, @Performers NVARCHAR(MAX), @Comments INT, @Files INT.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]