Подсистема оповещения для информационной системы учета электропогружного оборудования скважин нефтяной компании "Роснефть"

Исследование процесса работы пользователей с информационной системы учета электропогружного оборудования скважин. Подсистема оповещений и уведомлений системы "Дело". Инфологическая модель предметной области. Модуль формирования заявок и подписок.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 18.05.2014
Размер файла 3,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Для оперативного оповещения пользователя о запросах от отдела качества в модуле используется класс RequestNotifications. Класс описывает правила, в соответствии с которым требуется активировать графический элемент пользовательского интерфейса, а именно:

если количество запросов находится от 1 до 8 включительно, то вывести в правом нижнем углу экрана значок в форме красного квадрата с цифрой в центре, соответствующей количеству запросов;

если количество запросов больше 9, то вывести в правом нижнем углу экрана значок в форме красного квадрата с символом «>9» в центре;

если курсор мыши наведен на графический элемент, то отразить рядом с курсором сообщение «ЭПОС: Оповещение о запросах».

Инициализация класса происходит только по сигналу из модуля опроса базы данных. Листинг класса RequestNotifications представлен в приложении 2.

6.3.5 Модуль формирования заявок

Для обеспечения возможности создания заявок на коррекцию и дополнение данных был разработан соответствующий модуль. Модуль содержит класс DKRequest_Edit. Класс позволяет создавать заявки на дополнение и коррекцию данных. На вход модуля со стороны пользователя поступает:

информация по отказу:

местоположение скважины (регион+месторождение+куст);

номер комплекта погружного оборудования;

дата отказа;

сервисное предприятие, осуществившее демонтаж;

параметры рассылки:

сервисное предприятие;

пользователь сервисного предприятия;

тип запроса (коррекция/дополнение);

статус (при создании запроса по умолчанию «новый»);

комментарий.

В результате работы модуля формируется запрос, который отправляется через модуль DataSet_OPR_Stop в подсистеме связи с СУБД в базу данных до востребования.

6.3.6 Модуль формирования подписок

Для обеспечения возможности управления подписками на оповещение по событиям был разработан модуль формирования подписок. Модуль предоставляет возможность просматривать группы скважин через модуль DataSet_EventNotifications_SharedLists. Редактирование и создание новых личных групп, и их состав происходит с использованием модуля DataSet_EventNotifications_Lists. Для просмотра оповещений по событиям и изменения их статус используется модуль DataSet_EventNotifications подсистемы связи с СУБД.

6.4 Техническое обеспечение

Так как Подсистема работает в составе ИС «ЭПОС» техническое обеспечение используется целевой системы, а именно:

сервер СУБД

процессор Intel Xeon 3 ГГц или его аналог;

оперативная память не менее 2 Гб

не менее 20 Гб свободного пространства на жестких дисках.

Рабочая станция

процессор Pentium III или его аналог;

оперативная память не менее 512 Мб;

сетевая карта 10/100 Мбит/с Ethernet adapter;

устройства ввода;

дисплей с разрешением не менее 800х600.

Аппаратура передачи данных обеспечивает пропускную способность канала передачи данных от сервера СУБД к компьютерам пользователей не менее 2 Мб/c.

7. Описание интерфейса

В данном разделе описаны изменения пользовательского интерфейса ИС «ЭПОС», которые необходимо было внести для внедрения Подсистемы.

Оперативное оповещение о Событиях и запросах происходит с помощью отображения специальных значков в панели задач операционной системы Windows, как показано на рис. 18. Оповещение о Событиях отображается в форме красного круга со значением количества новых оповещений о Событиях (элемент 1 на рис. 18). Оповещение о запросах отображается в форме красного квадрата (элемент 2 на рис. 18) со значением количества новых оповещений о вводе данных.

Рис. 18. Оперативное оповещение

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

7.1 Оповещение по событиям

Чтобы посмотреть оповещение о Событиях необходимо зайти в меню «Сервис» и выбрать в разделе «Оповещение» пункт «Контроль событий». Вкладка содержит две вложенных в нее вкладки - «Журнал событий» и «Архив событий».

Журнал событий содержит новые оповещения о Событиях. Как видно из рис. 19. в Журнале Событий реализовано контекстное меню (элемент 1 рис. 19) для записей Событий. Благодаря данному меню пользователь получает возможность менять статус записи оповещения, обращаться к подсистеме формирования отчетов за информацией о полной истории выбранной скважины или о разборе оборудования связанного с выбранной скважины. Вкладка «Архив событий» (элемент 2 рис. 19) отображает информацию обо всех Событиях, которые связаны с какой-либо скважиной из числа подписок пользователя.

Рис. 19. Вкладка «Контроль событий»

В правой части вкладки находится область «Группы» (элемент 3 рис. 19), где отображены группы скважин, на которые подписан пользователь. Для управления подписками следует нажать кнопку «Управление группами …» (элемент 4 рис. 19). После нажатия кнопки произойдет вызов окна «Управление группами». Внешний вид окна «Управление группами» изображено на рис. 20. Данное окно позволяет пользователю оформлять подписки. Создание и удаление групп и скважин из состава подписки в окне имеются специальные кнопки с символами «+» и «х» (элементы 1а и 1б на рис. 20). Группа, которая определена как «Общая группа» (элемент 2 на рис. 20) доступна для копирования в состав подписки другим пользователем, при этом права на изменения параметров группы остаются за автором группы. Для того, чтобы скопировать Общую группу в состав своей подписки, пользователю следует нажать на кнопку «Показать общие группы» (элемент 3 на рис. 20).

Рис. 20. Окно «Управление группами»

После нажатия на кнопку «Показать общие группы» вызовется окно «Копирование общих групп», в котором пользователь может включить общую группу (элемент 2 рис. 21) в список личных групп (элемент 3 рис. 21) или удалить при помощи кнопок с символами «<» и «>» (элементы 1а и 1б на рис. 21) соответственно. Внешний вид окна «Копирование общих групп» изображено на рис. 21.

Рис. 21. Окно «Копирование общих групп»

Перед копированием или удалением можно ознакомиться с составом выбранной группы (элементы 4 и 5 на рис. 21). В случае если выбранная при копировании группа совпадает именем с какой-нибудь группой из личных групп, то вызывается окно «Выбор действия». Внешний вид окна изображен на рис. 22.

Рис. 22. Окно «Выбор действий»

Окно предлагает сохранить общую группу в списке личных групп с новым именем (элемент 1 на рис. 22) или дополнить состав существующей личной группы новыми скважинами (элемент 2 на рис. 22).

7.2 Оповещение о запросах

Чтобы просмотреть оповещения о запросах, необходимо зайти в меню «Сервис» и в разделе «Оповещение» выбрать пункт «Запросы от ОК». В этом случае вызовется вкладка «Запросы от ОК», в которой пользователю отобразиться список необработанных запросов на дополнение или коррекцию данных, за которые он ответственен. Как видно из рис. 23. для записей запросов пользователей имеет возможность назначить статус «В работе» или «Выполнен» (элемент 1 на рис. 23).

Рис. 23. Вкладка «Запросы от пользователей ОК»

Чтобы просмотреть все запросы на дополнение и коррекцию данных по какой-нибудь скважине за какой-нибудь период времени можно обратиться к архиву запросов (элемент 2 на рис. 23). Для просмотра состояния запросов пользователь отдела качества может открыть подобную вкладку через пункт «Запросы по ДК» того же раздела меню. Внешний вид окна «Запросы по ДК» изображен на рис. 24. Во вкладке «Архив запросов» есть возможность отфильтровать список запросов за определенный период (элемент 4 на рис. 24) и\или по скважине (элемент 3 на рис. 24).

Рис. 24. Окно «Запросы по ДК»

Пользователь отдела качества при работе с протоколом ДК, при необходимости может вызвать список запросов на коррекцию и дополнение данных, созданных кем-либо из пользователей ИС «ЭПОС» или запросы созданных только им (элемент 2 на рис. 24). С помощью контекстного меню пользователь отдела качества имеет возможность отправить повторный запрос с такими же параметрами, что у выделенного запроса, определить для запроса статус «Закрыто» и удалить, если статус запроса имеет значение «Закрыто» (элемент 1 на рис. 24). Для создания нового запроса на коррекцию или дополнение данных по Событию, с протоколом расследования, которого работает пользователь, в окне со списком запросов предусмотрена кнопка «Создать новый запрос». После нажатия этой кнопки происходит вызов окна «Отправить запрос». Окно имеет две области:

информация по отказы (элемент 3 на рис. 25) - содержит поля с данными, необходимые ответственному за ввод данных лицу для обработки запроса;

параметры рассылки (элемент 4 на рис. 25) - содержит поля с данными, необходимыми для отправки запроса.

Для отправки запроса пользователь должен обязательно указать СП и тип запроса (элементы 1 и 2 на рис. 25 соответственно). Внешний вид окна «Отправить запрос» изображен на рис. 25.

Рис. 25. Окно «Отправить запрос»

После нажатия на кнопки «Отправить» запрос отправляется с указанными параметрами на сервер.

7.3 Контроль ввода данных

Для настройки оповещения о несвоевременном вводе данных необходимо в меню «Сервис» выбрать в разделе «Оповещение» пункт «Контроль ввода данных», после чего появится вкладка «Контроль ввода данных». Внешний вид вкладки «Контроль ввода данных» изображен на рис. 26.

Рис. 26. Вкладка «Контроль ввода данных»

В данной вкладке настраивается допустимая задержка (элемент 1 на рис. 26), перечень типов операций (элемент 2 на рис. 26), за задержкой которых необходимо отслеживать и адрес электронной почты (элемент 3 на рис. 26), на который должны приходить оповещения. При необходимости можно отключить оповещение или включить его (элемент 4 на рис. 26). После нажатия кнопки «Сохранить» (элемент 5 на рис. 26) изменения сохраняются в базе данных. Для формирования отчета о задержках ввода данных пользователю следует в меню «Отчеты» выбрать пункт «Контроль ввода данных», после чего появится вкладка «Отчет - контроль ввода данных». Внешний вид вкладки изображен на рис. 27.

Рис. 27. Вкладка «Отчет - контроль ввода данных»

Чтоб отчет сформировался необходимо указать набор сервисных предприятий (элемент 1 на рис. 27), в котором должны были внести данные, период (элемент 2 на рис. 27), за который задержки были зафиксированы, количество дней допустимых для задержки ввода данных (элемент 3 на рис. 27). После указания всех параметров отчет можно сформировать, нажав на кнопку «Сформировать».

8. Технико-эксплутационные характеристики

После проектирование, разработки и интеграции Подсистемы в ИС «ЭПОС», с целью тестирования Подсистема была запущена в эксплуатацию на предприятиях ООО «Юганскнефтегаз» без прекращения функционирования предыдущих способов работы сотрудников ОК. По предварительным результатам тестирования наблюдаются следующие эффекты в работе сотрудников объединения:

время поиска событий для расследования сократилось до 1 минуты благодаря автоматическому оповещению пользователя о Событиях;

время запроса коррекции и дополнения данных сократилось до 1 минуты благодаря возможности создавать и оправлять запросы в Подсистеме;

время дополнения и коррекции данных сократилось до 4 часов благодаря наличию достаточных сведений в заявке;

время до возобновления расследования после выполнения запроса сократилось до 1-4 минут благодаря автоматическому оповещению пользователя о Событиях.

Как видно из рис. 28 снижение затрат времени даже при пессимистичной оценке значительное. Время на поиск ответственных за ввод данных больше не требуется, так как запросы автоматически направляются лицам ответственным за ввод данных. Таким образом, суммарное время, затраченное от момента обнаружения некорректных или неполных данных по событиям до конца расследования, составляет 3-11 часов (1,53-5,61% от предыдущего значения).

Рис. 28. Снижение затрат времени

То есть задержку в работе сотрудников отдела качества удалось снизить на 94,39-98,47 % от предыдущего значения.

Заключение

В ходе данной дипломной работе:

изучена предметная область;

изучена ИС «ЭПОС»;

проведен обзор существующих подсистем оповещений в различных ИС;

разработано техническое задание на Подсистему;

разработан контур Подсистемы;

разработана инфологическая модель предметной области;

разработана Подсистема;

интегрирована Подсистема с ИС «ЭПОС».

В результате данной работы была спроектирована, разработана и внедрена подсистема оповещения в ИС «ЭПОС», тем самым цель работы достигнута. Подсистема обладает всеми требуемыми функциями для устранения недостатков в ИС «ЭПОС».

Подсистема в настоящее время работает в тестовом режиме на предприятиях ООО «Юганскнефтегаз». По предварительным данным наблюдается значительное сокращение задержек в работе отдела качества. По сравнению с предыдущими временными затратами, использование подсистемы оповещения дает значительную экономию времени.

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

Список использованных источников

Байков Н. Перспективы российской нефтегазовой промышленности и альтернативных источников энергии // Мировая экономика и международные отношения. - 2008. - №6. - С.49-56.

Научно-исследовательский Центр CALS - «Прикладная логистика» «МЕТОДОЛОГИЯ ФУНКЦИОНАЛЬНОГО МОДЕЛИРОВАНИЯ IDEF0». ГОССТАНДАРТ РОССИИ Москва РД IDEF 0 - 2000

Нугаев Р. Я. «Безопасная эксплуатация нефтепромысловых объектов» - 1990 год

Техническое задание на ИС «ЭПОС».

Карпычев В. Ю. Методология IDEF1Х и программный продукт ERWin: Учебно-методическое пособие 2007 год

Диго С. М. «Базы данных. Проектирование и создание» учебно-методический комплекс М.:ЕАОИ, 2008. - 171с.

Кириллов В. В. ОСНОВЫ ПРОЕКТИРОВАНИЯ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ - учебное пособие Санкт-Петербургский Государственный институт точной механики и оптики (технический университет) Кафедра вычислительной техники

Роберт Д. Шнайдер Microsoft SQL Server Проектирование высокопроизводительных баз данных. Издательство «ЛОРИ», 1998

http://www.eos.ru/eos_products/eos_delo/opovesch.php - описание подсистемы оповещения и уведомления системы «Дело»

http://program-line.ru/produkt - описание конфигурации «Програм Лайн: Уведомления о событиях»

http://www.bssys.com/solutions/financial-institutions/dbo-bs-client-x64/online-statement/ - описание подсистемы «Выписка Он-лайн» в системе «ДБО BS-Client»

http://www.bssys.com/solutions/financial-institutions/spetsializirovannye-resheniya/server-notifikatsii/ - описание Сервера Нотификации

http://www.microsoft.com/ru-ru/download/details.aspx?id=21 - описание framework 3.5

http://technet.microsoft.com/ru-ru/library/ms175887(v=sql.105).aspx - описание компонента SQL Server - Database Mail

Приложение 1

Листинг класса EventNotifications

class EventNotifications

{

private static TimeSpan minRefreshPeriod = new TimeSpan(0, 1, 0);

private UI.Main.FormMain formMain_;

private string connectionString_;

private string schema_;

private int notificationsRefreshPeriod_;

private DateTime nextRefreshTime_;

private TimeSpan refreshPeriod_;

private System.Windows.Forms.NotifyIcon notifyIcon_;

System.Drawing.Icon[] icons_ = null;

public IdleHandler_EventNotifications(

UI.Main.FormMain formMain,

string server,

string sid,

string schema,

string user,

string password)

{

formMain_ = formMain;

int indexOfColon = server.IndexOf(':');

string optionalPort = ((indexOfColon >= 0) ? string.Format(@"Port={0};", server.Substring(indexOfColon + 1)) : "");

connectionString_ = string.Format(

"Server={0};Sid={1};User Id={2};Password={3};Pooling=False;Direct=True;{4}",

((indexOfColon >= 0) ? server.Substring(0, indexOfColon) : server),

sid, user, password, optionalPort);

}

schema_ = schema;

notificationsRefreshPeriod_ = 0;

nextRefreshTime_ = DateTime.Now;

notifyIcon_ = null;

icons_ = null;

if (formMain_ != null) formMain_.setRefreshEventNotifyIconDelegate(refreshNotifyIcon);

}

public bool onIdle()

{

if (formMain_ != null)

{

if (DateTime.Now >= nextRefreshTime_)

{

int notificationsRefreshPeriod = formMain_.eventNotificationsRefreshPeriod();

if (notificationsRefreshPeriod_ != notificationsRefreshPeriod)

{

notificationsRefreshPeriod_ = notificationsRefreshPeriod;

refreshPeriod_ = new TimeSpan(

notificationsRefreshPeriod / 60,

notificationsRefreshPeriod % 60,

0);

if (notifyIcon_ == null)

{

notifyIcon_ = new System.Windows.Forms.NotifyIcon();

notifyIcon_.Text = @"ЭПОС: Оповещения о событиях";

}

if (icons_ == null)

{

icons_ = new System.Drawing.Icon[]

{

new System.Drawing.Icon("Resources/notify_round_00.ico"),

new System.Drawing.Icon("Resources/notify_round_01.ico"),

new System.Drawing.Icon("Resources/notify_round_02.ico"),

new System.Drawing.Icon("Resources/notify_round_03.ico"),

new System.Drawing.Icon("Resources/notify_round_04.ico"),

new System.Drawing.Icon("Resources/notify_round_05.ico"),

new System.Drawing.Icon("Resources/notify_round_06.ico"),

new System.Drawing.Icon("Resources/notify_round_07.ico"),

new System.Drawing.Icon("Resources/notify_round_08.ico"),

new System.Drawing.Icon("Resources/notify_round_09.ico"),

new System.Drawing.Icon("Resources/notify_round_10.ico"),

};

}

}

refreshNotifyIcon();

}

return true;

}

return false;

}

Приложение 2

Листинг класса RequestNotifications

class RequestNotifications

{

private UI.Main.FormMain formMain_;

private string connectionString_;

private string schema_;

private int notificationsRefreshPeriod_;

private DateTime nextRefreshTime_;

private TimeSpan refreshPeriod_;

private System.Windows.Forms.NotifyIcon notifyIcon_;

System.Drawing.Icon[] icons_ = null;

public IdleHandler_RequestNotifications(

UI.Main.FormMain formMain,

string server,

string sid,

string schema,

string user,

string password)

{

formMain_ = formMain;

{

int indexOfColon = server.IndexOf(':');

string optionalPort = ((indexOfColon >= 0) ? string.Format(@"Port={0};", server.Substring(indexOfColon + 1)) : "");

connectionString_ = string.Format(

"Server={0};Sid={1};User Id={2};Password={3};Pooling=False;Direct=True;{4}",

((indexOfColon >= 0) ? server.Substring(0, indexOfColon) : server),

sid, user, password, optionalPort);

}

schema_ = schema;

notificationsRefreshPeriod_ = 0;

nextRefreshTime_ = DateTime.Now;

notifyIcon_ = null;

icons_ = null;

if (formMain_ != null) formMain_.setRefreshRequestNotifyIconDelegate(refreshNotifyIcon);

}

public bool onIdle()

{

if (formMain_ != null)

{

if (DateTime.Now >= nextRefreshTime_)

{

int notificationsRefreshPeriod = formMain_.requestNotificationsRefreshPeriod();

if (notificationsRefreshPeriod_ != notificationsRefreshPeriod)

{

notificationsRefreshPeriod_ = notificationsRefreshPeriod;

if (notifyIcon_ == null)

{

notifyIcon_ = new System.Windows.Forms.NotifyIcon();

notifyIcon_.Text = @"ЭПОС: Оповещения о запросах";

}

if (icons_ == null)

{

icons_ = new System.Drawing.Icon[]

{

new System.Drawing.Icon("Resources/notify_square_00.ico"),

new System.Drawing.Icon("Resources/notify_square_01.ico"),

new System.Drawing.Icon("Resources/notify_square_02.ico"),

new System.Drawing.Icon("Resources/notify_square_03.ico"),

new System.Drawing.Icon("Resources/notify_square_04.ico"),

new System.Drawing.Icon("Resources/notify_square_05.ico"),

new System.Drawing.Icon("Resources/notify_square_06.ico"),

new System.Drawing.Icon("Resources/notify_square_07.ico"),

new System.Drawing.Icon("Resources/notify_square_08.ico"),

new System.Drawing.Icon("Resources/notify_square_09.ico"),

new System.Drawing.Icon("Resources/notify_square_10.ico"),

};

}

refreshNotifyIcon();

}

}

return true;

}

return false;

}

private bool refreshData(ref int requestsCount)

{

bool isDataRefreshed = false;

using (Devart.Data.Oracle.OracleConnection connection = new Devart.Data.Oracle.OracleConnection(connectionString_))

{

connection.Open();

isDataRefreshed = refreshData(connection, ref requestsCount);

connection.Close();

}

return isDataRefreshed;

}

private bool refreshData(Devart.Data.Oracle.OracleConnection connection, ref int requestsCount)

{

bool isDataRefreshed = false;

using (Devart.Data.Oracle.OracleCommand oracleCommand = new Devart.Data.Oracle.OracleCommand(schema_ + ".notification.get_data_requests_count", connection))

{

oracleCommand.CommandType = System.Data.CommandType.StoredProcedure;

try

{

oracleCommand.Parameters.Add(new Devart.Data.Oracle.OracleParameter("CNT", Devart.Data.Oracle.OracleDbType.Number, System.Data.ParameterDirection.Output));

oracleCommand.ExecuteNonQuery();

object objRequestsCount = oracleCommand.Parameters[0].Value;

if ((objRequestsCount != null) && !(objRequestsCount is DBNull))

requestsCount = Convert.ToInt32(objRequestsCount);

isDataRefreshed = true;

}

catch (Devart.Data.Oracle.OracleException ex)

{

if (ex.Code != 4068)

{

System.Windows.Forms.MessageBox.Show(Sys.Utils.textOracleUserExc(ex), "Ошибка",

System.Windows.Forms.MessageBoxButtons.OK,

System.Windows.Forms.MessageBoxIcon.Exclamation);

if (ex.Code == 6550){

requestsCount = 0;isDataRefreshed = true;

}

}

}

}

return isDataRefreshed;

}

public void refreshNotifyIcon()

{

int requestsCount = 0;

Devart.Data.Oracle.OracleConnection connection = Sys.DB.DBManager.getConnection();

bool isDataRefreshed = ((connection != null) && refreshData(connection, ref requestsCount));

if (!isDataRefreshed) isDataRefreshed = refreshData(ref requestsCount);

if (isDataRefreshed)

{

if ((refreshPeriod_ == null) || (refreshPeriod_ < minRefreshPeriod))

if (notifyIcon_ != null)

{

bool showNotifyIcon = ((notificationsRefreshPeriod_ > 0) && (refreshPeriod_ != null));

if (notifyIcon_.Visible != showNotifyIcon) notifyIcon_.Visible = showNotifyIcon;

if (showNotifyIcon)

{

if ((icons_ != null) && (icons_.Length > 0))

{

System.Drawing.Icon icon = icons_[Math.Min(requestsCount, icons_.Length - 1)];

if ((icon != null) && (icon != notifyIcon_.Icon)) notifyIcon_.Icon = icon;

}

}

}

}

}

public void hide()

{

if ((notifyIcon_ != null) && notifyIcon_.Visible) notifyIcon_.Visible = false;

}

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.