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

Диаграмма связи форм в клиентском приложении

Алгоритмы работы и архитектура информационной системы

Выборка списка «Горящих проектов»

Происходит поиск по таблице project (проекты) на предмет превышения срока выполнения проекта: timeFin > timeDeadline. Выборка осуществляется только среди незакрытых проектов, содержащих незавершённые задачи: task.fin = 0.

По запросу пользователя – формирование документа с отчётом, содержащим данные из представленной таблицы.

Добавление / изменение / удаление записи о клиенте / пользователе / проекте / задаче

Пользователь инициирует действие и задаёт соответствующие объекту атрибуты (id для удаления и полный набор параметров для добавления / изменения).

Происходит обращение к изменяемой таблице (client, user, project, task) соответственно.

После проведения изменений данные представляемой таблицы обновляются.

Удаление записи о проекте

Пользователь выбирает объект по параметру name (имя), подлежащий удалению.

Происходит каскадное удаление проекта из таблицы projecr по его id и его (под-)задач из таблицы task по их idProject.

После проведения удаления, представленные данные о проектах обновляются.

Механизмы взаимодействия «клиент-сервер»

Для всех таблиц значение поля идентификатора генерируется автоматически, инкриментно.

Информация о времени начала и завершения задачи/подзадачи/проекта должна генерироваться автоматически.

Вся прочая информация вводится пользователем во взаимодействии с клиентским интерфейсом.

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

Таблица специализаций задаётся единожды при начальном формировании БД (в дальнейшем планируется введение функции изменения специализаций в дополнительном окне настроек).

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

Логика на стороне сервера

Для таблиц client, project, task и user применяются хранимые процедуры для изменения (в качестве параметра передаются значения всех полей) и удаления (в качестве параметра передаётся идентификатор) записей:

client_del – удаление записи из таблицы клиентов;

client_mod – изменение записи в таблице клиентов;

project_del – удаление записи из таблицы проектов;

project_mod – изменение записи в таблице проектов;

task_del – удаление записи из таблицы задач;

task_mod – изменение записи в таблице задач;

user_del – удаление записи из таблицы пользователей;

user_mod – изменение записи в таблице пользователей;

Добавление новых записей и чтение информации организуется стандартными средствами объекта DataSet среды .NET.

Пример создания хранимой процедуры на изменение записи о проекте

CREATE PROCEDURE project_mod

@id int,

@name nvarchar(50),

@idManager int,

@idClient int,

@timeStart smalldatetime,

@timeFin smalldatetime,

@timeDeadline smalldatetime

AS UPDATE [Projects5thBase].[dbo].[project]

SET [name] = @name

,[idManager] = @idManager

,[idClient] = @idClient

,[timeStart] = @timeStart

,[timeFin] = @timeFin

,[timeDeadline] = @timeDeadline

WHERE [id] = @id

GO

Для каскадного удаления записи о проекте и входящих в него задач создан триггер

CREATE TRIGGER DelProject ON [Projects5thBase].[dbo].[project]

INSTEAD OF DELETE

AS

DELETE FROM task

WHERE idProject IN (SELECT id FROM deleted)

Для формирования таблицы «горящих проектов» создана хранимая процедура

Учитывается состояние задач, входящих в состав проекта. В случае, если все задачи завершены, проект считается закрытым и в выборку не включается.

CREATE PROCEDURE getBurningProjects3

AS

BEGIN

SELECT [name] as Проект, [timeFin] as "Время окончания", [timeDeadline] as "Крайний срок"

FROM [dbo].[project]

WHERE [timeFin] > [timeDeadline] AND

[dbo].[project].[id] IN (SELECT [idProject] FROM [dbo].[task] WHERE [dbo].[task].[fin] = 0)

END

GO

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