Ноябрь – месяц затишья перед новогодней бурей. Во многих регионах это начало сезона дождей. Наш AnyLogic Cloud это не дождевая туча, а светлое облако, которое радует вас в эти ноябрьские дни новой версией 2.3.1.
Версия 2.3.1 содержит много важных обновлений, о которых я расскажу подробнее.
Кликабельные ссылки в описании модели
Мне нравятся удобные UI/UX. К примеру, меня радует, если я могу в несколько кликов поделиться моделью в WhatsApp и открыть ссылку на научную статью, которая раскрывает работу модели. В отличие от функциональных обновлений, которые нужны отдельным пользователям, улучшения UI/UX затрагивают почти всех. Рассмотрим детальнее эти улучшения.
Все знают, как неудобно выделять некликабельную ссылку в виде обычного текста или набирать ее вручную, чтобы перейти на нужную страницу. Так было и в AnyLogic Cloud до версии 2.3.1. Теперь посмотрите, как выглядит одна из самых популярных моделей Urban Dynamics Educational Simulator.
Возможность поделиться моделью в социальных сетях
Внимательные читатели могли заметить еще один новый элемент на скриншоте выше — пять кнопок для того, чтобы поделиться моделями в разных социальных сетях. С помощью этих кнопок вы можете попрощаться с ручным копированием и вставкой ссылок. Просто нажмите на иконку нужной социальной сети или мессенджера и выберите получателей.
Кроме того, администраторы Private Cloud теперь могут настроить отображение кнопок с помощью соответствующего конфигурационного файла (не забудьте перезапустить контроллер Private Cloud, чтобы применить изменения).
Cloud API теперь поддерживает файл в качестве входных и выходных данных
Улучшения UI/UX, безусловно, полезны, но поговорим об обновлении функционала. Опытные пользователи AnyLogic Cloud и те, кто проектирует сложные продукты с помощью Cloud API, ранее не имели полной поддержки всех входных и выходных данных, доступных в пользовательском интерфейсе Cloud, а именно данных из файла.
С выходом AnyLogic Cloud 2.3.1 это несоответствие устранено. Если вы хотите узнать, как работать с файлами в Cloud UI, посмотрите это короткое обучающее видео (на англ.) с пошаговыми инструкциями.
Продолжим краткий обзор функционала (внимание: много кода!). Я собираюсь использовать Cloud Python API, но вы можете выбрать другой язык программирования (например, JavaScript или Java), использовать простой HTTP REST API или даже реализовать свой собственный клиент Cloud API поверх REST API:
- Cloud API доступен подписчикам Public Cloud или пользователям Private Cloud. Чтобы стать подписчиком или пользователем Private Cloud, перейдите на страницу покупки. В целях тестирования вы можете использовать ключ API и пример модели из документации (на англ.).
- Найдите ключ API в своем профиле:
- Скачайте и установите клиент AnyLogic Cloud API. В моем случае, поскольку я использую Python, то могу установить клиент с помощью установщика пакетов pip:
pip install https://cloud.anylogic.com/files/api-8.5.0/clients/anylogiccloudclient-8.5.0-py3-none-any.whl
- Откройте свою любимую среду разработки и убедитесь, что вы используете Python с установленным клиентом. Затем введите этот код:
- Для успешного запуска скрипта вам необходимо заменить все плейсхолдеры, такие как API_KEY, MODELNAME, на настоящие названия. Для этого вам нужна модель, которая использует файл в качестве входных и выходных данных. Если у вас нет такой модели (или вы просто тестируете Cloud API), вы можете использовать этот пример модели и документацию по Cloud API (на англ.).
- Запускаем код. Если все в порядке, вы увидите такую картину:
- И наконец, откройте папку, в которой хранится скрипт — там вы сможете найти скачанный файл с выходными данными. Его имя начинается с output_.
from anylogiccloudclient.client.cloud_client import CloudClient
def main():
print("Authorizing and uploading input file ...")
#replace API_KEY and CLOUD_URL respetively
client = CloudClient("API_KEY", "CLOUD_URL")
#replace FILENAME with real filename
input_file_hash = client.upload_file("FILENAME")
print("Setting up simulation File IO API Demo ...")
#replace MODELNAME with real name of a model,#
listed in My Models section of your Cloud account
version = client.get_latest_model_version("MODELNAME")
inputs = client.create_default_inputs(version)
#replace INPUT_NAME with the respective input name
inputs.set_input("INPUT_NAME", input_file_hash)
print( "Running simulation...")
simulation = client.create_simulation(inputs)
outputs = simulation.get_outputs_and_run_if_absent()
print( "Downloading file populated with output data...")
#replace OUTPUT with the respective input name
output_file = outputs.value("OUTPUT_NAME")
client.download_file(output_file, "output_" + output_file.name)
if __name__ == '__main__':
main()
Если мы посмотрим внимательнее на код из шага номер 4, то сможем выделить четыре ключевые функции:
- CloudClient.uploadFile( file ) — загружает файл в Cloud и возвращает его хеш. Необязательно загружать один и тот же файл в разные эксперименты и модели — просто запомните хеш файла для дальнейшего использования в функции set_input.
- Inputs.set_input( input_name, file_hash ) — здесь мы сообщаем Cloud, какой файл нам нужен для запуска модели.
- Outputs.value( output_name ) — получаем соответствующие выходные данные эксперимента. Работа с файловыми выходными данными ничем не отличается от работы с другими выходными данными (например, числами или графиками). Здесь нужно указать название выходных данных с файлом.
- CloudClient.download_file( output_file ) — загружает файл в соответствии с указанным FileResource (файловые выходные данные) из AnyLogic Cloud.
Удобно, что вы можете указать один и тот же файл как для входных, так и для выходных данных, например, документ Excel с двумя листами (для входных данных и выходных данных соответственно).
Вы указываете файл с заполненным листом с входными данными и пустым листом для выходных данных. Затем запускается ваша модель и создает файл как с входными, так и с выходными данными. В Cloud хранятся оба файла, поэтому вам не нужно заново загружать файл с исходными входными данными. Вы можете повторно использовать его в других экспериментах. Этот процесс показан в примере модели.
И последнее, но не менее важное: Cloud API также поддерживает продвинутые способы работы с данными, такие как работа с файлами в памяти, бинарными потоками и т. д.
Для вашего удобства также есть встроенные функции для проверки наличия файла в Cloud и для вычисления хеша файла без его фактической загрузки в Cloud. Вы можете найти эти функции в документации по API: JavaScript, Java и Python.
Поиск в Cloud теперь поддерживает сложные параметризованные запросы
Следующее улучшение — шаблоны расширенного поиска. В предыдущих версиях Cloud вы могли искать модели по название и по тегу. Теперь вы можете получить все свои модели с помощью одного поискового запроса. Ниже мы видим результаты запроса — все модели, разработанные командой AnyLogic.
Подробное описание использования расширенного поиска (на англ.) вместе с примерами читайте в нашей онлайн-документации (на англ.).
Настраиваемая политика паролей
Если в вашей компании есть отдел безопасности, то вы наверняка знаете, что требования InfoSec включают несколько букв верхнего и нижнего регистра, специальных символов, цифр и общую длину пароля.
Теперь администратор Private Cloud может настроить эти требования в соответствии со стандартами своей компании. Политика хранится в файле конфигурации частного облака, а именно registration.json.
Вы можете открыть файл в любом текстовом редакторе и настроить соответствующие значения, например, numberOfDigits: 1, что означает, что пароль должен содержать хотя бы одну цифру. Затем сохраните файл и перезапустите контроллер Private Cloud.
Исчерпывающую документацию по настройке паролей в Cloud (на англ.) можно найти в нашей Справке.
Заключительное слово
Если вам впервые нужно администрировать Private Cloud — наше руководство по администрированию (на англ.) к вашим услугам. Вы можете начать со статей по архитектуре (на англ.) и файлам конфигурации (на англ.). Если у вас есть какие-либо вопросы или пожелания, пожалуйста, свяжитесь с нашей службой поддержки.
Чтобы протестировать новую версию Cloud, посетите сайт AnyLogic Cloud. Для обновления Private Cloud, следуйте инструкциям в руководстве Private Cloud: Update.