Разработка подсистемы управления проблемами распределенной системы управления телекоммуникационными услугами на базе платформы CPN TOOLS для Ставропольского филиала ОАО "ЮТК"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?ереходе Request for solve из запроса извлекается проблема и отправляется в позиции Problems DB (база данных проблем, хранит метки класса p) и Solved (выходная позиция, хранит решённые проблемы, метки класса p).
Из перехода Request for report запрос попадает в позицию Request for report, а оттуда в переход Making report, который извлекает из базы проблем нужную проблему и из базы пользователей, нужного пользователя. Затем создаёт отчёт и отправляет его в виде метки класса p в позицию Solved. Переход Making report выполняется при соблюдении следующего условия: [#8 (#4 rq) = #8 pp andalso #9 pp = #4 uu].
Код перехода Making report:
(pp,uu,rq);(ppp);
((#1 pp, #2 pp, #3 pp, #4 pp, #5 pp, #6 pp,abonent: ^ #1 pp ^ ; Address: ^ #2 pp ^ ; Type: ^ #3 pp ^ ; Priority: ^ INT.mkstr(#4 pp) ^ ; Date: ^ INT.mkstr(#5 pp) ^ ; Level: ^ INT.mkstr(#6 pp) ^ ; Answer: ^ #7 pp ^ ; id: ^ INT.mkstr(#8 pp) ^ ; User: ^ #1 uu, #8 pp, #9 pp));
В переходе Request for problem из запроса извлекается проблема и поступает в позицию Request for problem, а затем в переход Transmit, который передаёт проблему в позицию Problem (рисунок 3.9).
Рисунок 3.9 - Переход Request for problem
Из позиции Devices проблема поступает в переход Transaction to diag. dev., а оттуда в переход Select priorety, где проблеме присваивается приоритет. Затем проблема поступает в метку Problem (рисунок 3.10).
Код перехода Select priorety:
input (pp);(pp2);
(case #3 pp of
obryv linii => (auto, #2 pp, #3 pp, 1, #5 pp, #6 pp, #7 pp, #8 pp, #9 pp)
| obryv magistrali => (auto, #2 pp, #3 pp, 2, #5 pp, #6 pp, #7 pp, #8 pp, #9 pp)
| polomka oborudovaniya => (auto, #2 pp, #3 pp, 2, #5 pp, #6 pp, #7 pp, #8 pp, #9 pp));
Рисунок 3.10 - Переход Transaction to diag. dev.
Из позиции Problem, в зависимости от того, найдено решение в базе данных или нет, проблема поступает в переход Answer not found (выполняется условие [#3 pp <> #3 ppp]) или переход Answer found (выполняется условие [#3 pp = #3 ppp]) (рисунок 3.11). В случае, если решение было найдено, то оно записывается в соответствующие поле записи о проблеме:
input (pp,ppp);(pp2);
((#1 pp, #2 pp, #3 pp, #4 pp, #5 pp, #6 pp, #7 ppp, #8 pp, #9 pp));
Рисунок 3.11 - Поиск решения в базе данных проблем
Затем проблема поступает в позицию Saving info, а оттуда в переход Save info, который сохраняет сведения о проблеме в базу данных проблем (рисунок 3.12).
Рисунок 3.12 - Сохранение информации в базе данных проблем
Далее проблема поступает в позицию problem1, откуда, если решение было найдено, передаётся в переход transmit1 (условие [#7 pp <> ]), а если ответ не был найден (условие [#7 pp = ]), то - в переход Increase priorety (рисунок 3.13).
Рисунок 3.13 - Переходы Increase priorety и transmit1
Из перехода transmit1, через позицию Answer, проблема поступает в переход solve, а оттуда - в позицию Solved (рисунок 3.14).
Рисунок 3.14 - Переход Solve
В переходе Increase priorety увеличивается приоритет не решенной проблемы, которая потом передаётся в позицию Problem with new priorety, а оттуда через переход transmit2 в позицию Searching for answer (рисунок 3.15).
Код перехода Increase priorety:
(pp);(pp2);
((#1 pp, #2 pp, #3 pp, #4 pp + 1, #5 pp, #6 pp, #7 pp, #8 pp, #9 pp));
Рисунок 3.15 - Переход transmit2
Из позиции Searching for answer проблема поступает в переход tr, в котором выполняется эмуляция действий сотрудников компании. Далее проблема поступает в позицию Splitter (рисунок 3.16).
Код перехода tr:
input (pp);(ppp);
(if #6 pp = 3 then (#1 pp, #2 pp, #3 pp, #4 pp, #5 pp, #6 pp, answer, #8 pp, #9 pp)range.ran() = 1 then (#1 pp, #2 pp, #3 pp, #4 pp, #5 pp, #6 pp, answer, #8 pp, #9 pp)
else (pp));
Рисунок 3.16 - Переход tr
Из позиции Splitter, если решение было найдено, проблема поступает в переход Solved problem (условие [#7 pp <> ]), а оттуда в позицию Solved. Если же решение не было найдено, то проблема поступает в переход Unsolved problem (условие [#6 pp+1 = #3 uu andalso #7 pp = ]), который формирует запрос и отправляет его на следующий уровень (рисунок 3.17):
input (pp,uu);(rq);
((problem, #1 uu, #2 uu, (#1 pp, #2 pp, #3 pp, #4 pp, #5 pp, #6 pp+1, #7 pp, #8 pp, #9 pp)));
Рисунок 3.17 - Переходы Unsolved problem и Solved problem
Используемые цвета и переменные определены следующим образом:
colset UNIT = unit;INT = int;BOOL = bool;STRING = string;u = product STRING*STRING*INT*INT timedp=STRING*STRING*STRING*INT*INT*INT*STRING*INT*INT timed;r = product STRING*STRING*STRING*p timed;range = int with 0..1;rq:r;pp:p;uu:u;pp2:p;ppp:p;
Цвет u предназначен для хранения информации о пользователях. Запись о пользователе имеет следующую структуру:
)Имя - имя пользователя.
)Пароль - пароль пользователя.
)Уровень - уровень, на котором работает пользователь, число от 1 до 3.
4)User id - id пользователя.
Цвет p является записью о проблеме. Структура записи о проблеме следующая:
)Имя - имя абонента или auto для проблем, добавленных Участком диагностики и ремонта.
)Адрес - адрес поломки.
)Тип - тип проблемы, используется для поиска решения проблемы в базе данных.
)Приоритет - текущий приоритет проблемы.
)Дата - дата создания записи.
)Уровень - текущий уровень, число от 1 до 3.
)Решение - решение проблемы.
8)Problem id - id проблемы.
9)User id - id пользователя, добавившего проблему, для проблем, добавленных Участком диагностики и ремонта, равно 0.
Цвет r представляет собой запрос. Запрос состоит из следующих полей:
)Тип запроса - может принимать следующие значения:
-report - для запроса на создание отчёта;
-problem - для запроса на добавление новой проблемы;
-solve - для запроса на добавление решённой проблемы.
) Имя - логин пользователя.
) Пароль - пароль пользователя.