Зададим начальную конфигурацию типа агента О Транспорт. Сначала добавим на диаграмму необходимые переменные.
- 1. Перейдите в панель Проекты и откройте двойным щелчком тин агента О Транспорт.
- 2. Из палитры Агент добавьте два элемента О Переменная (рис. 10.17).
Рис. 10.17. Добавление переменных на диаграмму типа агента Транспорт
- 3. Мы можем использовать только два типа транспорта: автомобили и вертолеты. Чтобы различать их, используем переменную тип. Переменная тип должна быть типа ТипТранспорта, чтобы можно было использовать варианты АВТО и АВИА.
- 4. Переменная запрос является переменной типа ЗапросТехОбсл.
Теперь создадим диаграмму состояний транспорта, т. е. опишем поведение типа агента О Транспорт.
- 1. В Палитре откройте палитру Диаграмма состояний.
- 2. Перетащите элемент Начало диаграммы состояний в графический редактор типа агента О Транспорт (рис. 10.18). Оставьте имя элемента, предложенное по умолчанию. Этот элемент является началом диаграммы состояний.
3. Перетащите элемент Состояние О из палитры Диаграмма состояний
и поместите его в конец стрелки начала диаграммы состояний. В поле Имя введите В_рвб.
- 4. Перетащите еще три элемента Состояние О и в полях Имя введите соответственно: К_рвб (движение к рвб), На_узлеСвязи (техническое обслуживание узла связи), К_узлуСвязи (движение к узлу связи).
- 5. Теперь добавьте переход из состояния К_рвб в состояние В_рвб. Чтобы
добавить переход, сделайте двойной щелчок по элементу Переход ^ в палитре. Его иконка поменяется на это значит, что элемент теперь в режиме
рисования. В поле Имя оставьте имя, предложенное системой. На панели Свойства в поле Происходит установите из списка По прибытию агента.
- 6. Таким же способом добавьте аналогичный переход из состояния К_узлуСвязи в состояние На_узлеСвязи.
- 7. Добавьте переход из состояния На_узлеСвязи в состояние К_рвб. На панели Свойства в поле Происходит из списка установите По таймауту. В полях Таймаут задайте
тип == АВИА? uniform (10, 20): 10.
и часы соответственно. В поле Действие введите код (рис. 10.19).
запрос.узел.statechart fireEvent («исправлено»); moveTo (main.рвб.getX (), main.рвб.getY ()); запрос = null;
Рис. 10.19. Добавление перехода из состояния Крвб в состояние В рвб
8. Добавьте четвертый переход из состояния В_рвб в состояние К_узлуСвязи. На панели Свойства в поле Происходит из списка установите При получении сообщения. В поле Тип сообщения из списка выберите Object. В поле Осуществлять переход установите Безусловно.
Внутренние настройки и условия некоторых на диаграмме состояний и переходов ссылаются на элементы модели, которые еще не созданы. Но эта диаграмма необходима, поскольку на нее будут ссылаться некоторые из элементов модели, которые мы создадим позднее. Поэтому продолжим разрабатывать другие типы агентов и завершим описание логики действий типа агента О Транспорт в конце разработки модели.