AnyLogic
Развернуть
Размер шрифта

Считывание значений параметров из БД

Вы можете легко считывать из диаграммы процессов значения параметров блока или агента из определенной ячейки БД.

Предположим, у нас есть блок Delay, который обрабатывает разные типы деталей Part и время обработки зависит от типа детали Part, которую мы обрабатываем.

Время обработки каждой детали Part мы храним в таблице базы данных processing_times:

Если у вас данные хранятся во внешней базе данных, вам нужно предварительно импортировать их во встроенную базу данных AnyLogic.

Теперь мы можем указать блоку Delay считывать требуемое время обработки для каждого типа детали Part из таблицы БД.

Как считать параметры блока диаграммы процессов из БД

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

  1. Щелкните правой кнопкой мыши по элементу Модель в панели Проекты и выберите Создать > Тип агента из выпадающего контекстного меню. Вы увидите окно мастера нового агента.
  2. На первой странице укажите Имя нового типа агента: Part.
  3. На второй странице выберите анимацию для этого агента.
  4. На следующей странице добавьте параметр: name типа String. Мы будем использовать этот параметр для хранения типа детали Part. Блок Source будет создавать агентов типа детали Part:
    выберите Part в его поле Новый агент и укажите ему Считать параметры агентов из БД (детальную информацию можно найти тут)
  5. Откройте Свойства блока Delay.
  6. Для пункта Время задержки нам нужно переключиться из редактора динамического значения на конструктор ссылки на базу данных. Чтобы это сделать, нажмите на кнопку слева от поля Время задержки, и выберите вариант Ссылка на базу данных из выпадающего меню.

  7. Ниже, в разделе управления Таблицы, выберите таблицу БД, которая содержит данные: processing_times.
  8. Из раскрывающегося списка Столбец значений выберите столбец, который содержит необходимые данные: processing_time.

  9. Ниже можно увидеть секцию Условия выборки с возможностью указать условие, определяющее значение, которое будет выбрано из указанного столбца таблицы.

  10. Нам нужно выбрать значение, соответствующее определенной детали Part, поэтому мы будем использовать значения из столбца part, чтобы найти нужную запись. Следовательно, нужно выбрать part из раскрывающегося списка.

  11. В поле ниже напишите agent.name.

Мы создали блок, чтобы посмотреть на значение Времени задержки во встроенной БД. Значение берется из таблицы processing_times, столбца processing_time. У наших агентов типа детали Part указан параметр name типа String, который содержит тип деталей (это может быть "Part A", "Part B", или "Part C"). Для каждого нового агента, который попадает в Delay, блок будет искать запись в указанной таблице БД, которая содержит значение в столбце part соответствующее name агента, который в данный момент обрабатывается блоком (обращение к агенту происходит через agent). Это значение устанавливается как время задержки для данного агента.

К примеру, если имя текущего агента "Part B", блок выставит время задержки равное 20 секундам. Если таблица база данных содержит несколько записей со значениями "Part B" в столбце part, вы увидите сообщение об ошибке, так как AnyLogic предполагает единственное значение в этом столбце.

Как мы можем улучшить эту статью?