cherepanov / Тихонов_Лаб.раб.№1
.docxРОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
НЕФТИ И ГАЗА ИМЕНИ И.М. ГУБКИНА
Кафедра «Автоматизированные системы управления»
Курс «Компьютерное моделирование нефтегазодобычи»
Отчёт по лабораторной работе №1:
«Создание простейшего плагина»
Выполнил:Черепанов К.Н.
Группа: АС-09-4
Проверил: Изюмов Б. Д.
г. Москва, 2013г.
Цель лабораторной работы: освоить методику создания простейшего плагина с помощью инструментальных средств MS Visual Studio и Petrel 2012.
Этапы выполнения работы.
Шаг 1. Создание проекта.
Создаём новый плагин, входящий в него модуль и рабочий шаг. Для этого в типе проекта выбираем «Ocean Plugin». Далее создаём и именуем наш проект (в данном случае «cherepanov_lab1»).
Плагин называется так же, как и лабораторная работа. Здесь же вводим имя автора, электронную почту и ставим галочку для создания нового модуля.
В графе «Location of Petrel application» прописан путь к Petrel.exe. Создаем новый модуль и указываем галочку напротив «Register modules in this solution».
C помощью нажатия на иконку создания нового пункта меню (с зеленым крестиком) добавляем новый пункт меню «Hello World» и подпункт «Show Hello World».
На этом процедура создания проекта завершена.
Шаг 2. Прописывание логики программы.
Для того чтобы наш плагин выводил «Hello World», нужно заменить строку кода в MessageBox.Show на «Hello World».
Чтобы отследить весь жизненный цикл модуля, открываем «Module.cs» и добавляем в методы жизненного цикла модуля следующий код: PetrelLogger.Info0utputWindow(“Tihonov_Lab1 Initialize”);
Так заменяем в каждой строке кода «Initialize» на соответствующий метод.
Результат выполнения программы
Ответы на вопросы:
Для того чтобы посмотреть, где регистрируется плагин, нажимаем правой кнопкой на проект и выбираем пункт «Properties». Нажав на заголовок «Build Events», мы увидим, где регистрируется наш плагин («Post-build event command line»).
Активировать/деактивировать или удалить плагин можно, зайдя в пункт меню «Help» → «Ocean Plug-in Manager», далее откроется окно плагинов, где можно выполнять действия над ними.
5 этапов жизненного цикла модуля:
-
Initialize (внутренняя инициализация, регистрация сервисов)
-
Integrate (интеграция с другими модулями)
-
IntegratePresentation (добавление элементов в пользовательский интерфейс)
-
Disintegrate (удаление связей с другими модулями, отписка от событий и пр.)
-
Dispose (закрытие файлов, подключений).
После запуска Petrel и выбора лицензии загрузка продолжается в следующем порядке:
-
Загружается ядро Ocean, сервисы и приложение Petrel
-
Ядро считывает из конфигурационного файла список сборок, которые необходимо загрузить
-
Для каждой сборки осуществляется создание объекта класса-потомка Plugin
-
Для каждого модуля, возвращаемого свойством Plugin.Modules, создается объект класса модуля
-
Все загруженные модули последовательно проходят стадии Initialize, Integrate и IntegratePresentation
-
Переход всех моделей между стадиями происходит синхронно под управлением ядра, такой подход позволяет модулям использовать методы других модулей и интегрироваться с ними, без риска вызвать исключительную ситуацию
-
Интерфейс показывается пользователю, и пользователь приступает к работе
-
При закрытии Petrel последовательно вызывается стадия Disintegrate, затем Dispose
Методы Imodule находятся в классе Module.cs
Выводы:
-
Освоена методика создания простейшего плагина;
-
Получены навыки настройки взаимодействия MS Visual Studio и Petrel 2012;
-
Изучен порядок запуска Petrel, жизненные циклы модуля и много другой полезной и необходимой для учебного процесса информации.