Руководство по инструменту: Разработка с использованием активных объектов в Rational Rose RealTime
В этой памятке по инструменту описываются компоненты активных объектов и объясняется как выполняется разработка с активными компонентами в Rational Rose RealTime.
Инструмент: Rational Rose RealTime
Взаимосвязи
Связанные элементы
Основное описание

Обзор

Активный объект состоит из капсул с протоколами и портами.

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

Набор сообщений, которыми обмениваются два объекта, соответствует шаблону связи, называемому протоколом. Фактически это контрактный договор, определяющий допустимые типы сообщений для обмена между участниками протокола.

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

Этапы работы с инструментами

Для разработки активных объектов в Rational Rose RealTime выполните следующие действия:

  1. Создайте роль капсулы
  2. Создайте порты и привяжите к протоколам
  3. Задайте конечный автомат капсулы
  4. Задайте состояния и подстостояния
  5. Задайте переходы состояний
  6. Задайте атрибуты классов

1. Создайте роль капсулы

Капсулы создаются на логической панели браузера моделей.

  1. Выберите в панели инструментов инструмент Роль капсулы.
  2. Поместите курсор в расположение вставки роли капсулы и щелкните левой кнопкой мыши.
  3. Выберите в выпадающем списке капсулу, связанную с новой ролью капсулы.
  4. Задайте роли капсулы подходящее имя.
  5. Повторите описанные выше действия для всех создаваемых ролей.

2. Создайте порты и привяжите к протоколам

  1. Выберите капсулу в браузере моделей или на диаграмме классов.
  2. Разверните элементы капсулы в браузере или щелкните правой кнопкой мыши на капсуле на диаграмме классов чтобы открыть диаграмму структуры капсулы.
  3. С помощью инструмента Порт из панели инструментов поместите порт на диаграмму структуры капсулы. Порт можно поместить на границу капсулы или внутрь большой прямоугольной области.
  4. Задайте имя порта.
  5. Выберите протокол из списка или создайте новый.
  6. Щелкните правой кнопкой на порте и выберите окно Спецификация порта.
  7. В диалоговом окне Спецификация порта измените протокол, укажите, подключен или нет порт и укажите, является ли порт парным.

3. Задайте конечный автомат капсулы

  1. Выберите капсулу в браузере моделей или на диаграмме классов.
  2. Разверните элементы капсулы в браузере или щелкните правой кнопкой мыши на капсуле на диаграмме классов чтобы открыть диаграмму состояния капсулы.
  3. В помощью панели инструментов Диаграммы состояния поместите состояния и переходы в диаграмму состояний.

4. Задайте состояния и подсостояния

  1. Найдите капсулу для которой обновляется поведение. Капсулы можно найти с помощью браузера моделей или на диаграмме классов.
  2. Щелкните правой кнопкой на капсуле чтобы открыть диаграмму состояний. Откроется диаграмма в редакторе диаграммы состояний.
  3. С помощью инструмента Состояние из панели инструментов переместите новое состояние на диаграмму. Проделайте это для каждого создаваемого состояния.
  4. Присвойте каждому состоянию соответствующее имя.
  5. Дважды щелкните на состоянии, для которого создаются подстостояния. Откроется новая диаграмма состояний, в которой можно будет добавить подсостояния.
  6. С помощью вкладки внизу окна выберите уровень состояния, к которому нужно вернуться.

Примечание: также можно добавить состояния через область Навигатор в редакторе диаграмм состояний.

5. Задайте переходы состояний

Добавьте исходный переход

  1. Щелкните на исходной точке в диаграмме и переместите переход поверх целевого состояния. Исходная точка - это черный кружок, отображаемый в верхнем левом углу диаграммы.
  2. Задайте для перехода подходящее имя если не хотите использовать имя по умолчанию. Исходному переходу по умолчанию присвоено имя Исходный. Можно изменить это имя, выбрав метку и введя новое имя. Исходный переход автоматически вызывается при выполнении во время создания экземпляра капсулы. При создании капсулы запускается код действия, связанного с исходным переходом.

Добавить переходы

  1. Выберите инструмент перехода из панели инструментов и нарисуйте переход из исходного состояния в целевое.
  2. Задайте для перехода подходящее имя или примите указанное по умолчанию.

Добавление кода к конечным автоматам

Можно добавить код C, C++ или Java в виде действий для переходов, точек выбора и входа/выхода состояния на диаграммах состояния капсул для выполнения при запуске. В создаваемый код для модели добавляется только код, добавленный в диаграммы состояния капсул. Подробные действия протокола или диаграммы состояния класса данных не добавляются в создаваемый код для этих классов.

Добавьте триггеры

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

  1. Дважды щелкните на переходе чтобы открыть диалоговое окно Спецификации перехода.  
  2. Перейдите на вкладку Триггер.
  3. Наведите курсор на область списка портов, щелкните правой кнопкой мыши и выберите в меню пункт Вставить.
  4. В области Порт выберите порт для получения триггера.
  5. В области Сигнал выберите сигнал порта, вызывающий событие триггера.
  6. Нажмите кнопку OK чтобы закрыть окна.

Добавьте код к переходу

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

  1. Дважды щелкните на переходе чтобы открыть диалоговое окно Спецификации перехода.
  2. Перейдите на вкладку Действия для отображения окна с кодом.
  3. Добавьте код, выполняемый при переходе.
  4. Нажмите кнопку OK чтобы закрыть открытое диалоговое окно.

Примечание: добавлять открывающую и закрывающую скобку '{`, `}' не нужно. Они будут добавлены автоматически генератором кода.

6. Задайте атрибуты классов

  1. Откройте диалоговое окно Спецификация капсулы дважды щелкнув на капсуле в браузере или выбрав капсулу на диаграмме и указав Открыть спецификацию во всплывающем меню.
  2. Перейдите на вкладку Атрибуты в спецификации капсулы.
  3. Наведя курсор на открытую область вкладки щелкните правой кнопкой и выберите пункт Вставить.
  4. Измените имя с NewAttribute1 на что-то более осмысленное и нажмите клавишу ENTER.
  5. Дважды щелкните на новом атрибуте чтобы открыть диалоговое окно Спецификации атрибута.
  6. В окне Спецификация атрибута задайте тип атрибута и исходное значение.