Community

Здравсвуйте Не могу разобраться каким образом можно программно получить идентификаторы и их значения для последующего формирования XML. Подскажите, пожалуйста. Спасибо
Здравствуйте! Уточните, пожалуйста, о каких именно идентификаторах (и их значениях) идет речь. В языке Java можно поучить хеш-код любого объекта с помощью метода hashCode(). Какие именно XML-файлы вы хотите формировать? Если вы ответите на эти вопросы, возможно, легче будет вам помочь.
Здравствуйте, Андрей. Нужно получить имена полей класса модели (список всех элементов модели). К примеру, есть модель, построенная в терминах системной динамики, нужно получить список всех уровней (Stocks) и параметров (Parameters), затем их обработать и вывести в XML.
Каждая модель AnyLogic хранится в виде ALP-файла. ALP-файл представляет собой текстовый XML-документ.Вся информация о модели сохраняется в таком файле в читаемом виде. Вы можете сами написать программу, читающую, ALP-файлы и извлекающую из них необходимую информацию. В современных языках программирования существует много средств удобной работы с XML. Возможно, для ваших целей подойдут XSLT-преобразования.
Спасибо, благодаря вам одна проблема частично решена. Тогда такой вопрос, каким образом можно извлекать значения уровней (Stocks) и параметров (Parameters) на каждом шаге модели?
В модели вы можете создать таймер, который с заданной периодичностью будет записывать в файл значения определенных переменных и параметров модели. Можно, например, сразу формировать XML-файл с нужными данными. Подробнее о работе с текстовыми файлами и XML в языке Java вы можете узнать, например, здесь: http://java.sun.com/j2se/1.5.0/docs/
Main - это класс унаследованный от ActiveObject, m - объект класса Main, созданный соответственно во время работы модели. Поле класса Main Potential_Customers - это уровень в терминах системной динамики (СД), точно также, как и Customers. Поля Adoption_From_Word_Of_Mouth и Adoption_From_Advertising - это параметры в терминах СД. В настоящий момент, чтобы вытащить из модели данные мне нужно обращаться к полям и смотреть их значения. т.е. что-то типа str1= "" + m.Total_Population ; str2="" + m.Potential_Customers и так далее. Проблема в том, что могут появлятся новые уровни и новые поля и я просто не могу их все время руками прописывать, программа сама должна проверять обновления и автоматически их обрабатывать. Можно ли это сделать и как? Я это спрашивал с самого начала :)
Максим! Для осуществления Вашей затеи следует использовать технологию Java под названием Reflection. Она позволяет, в том числе, получить доступ к списку полей и их значений какого-либо класса. Подробнее об этой технологии можно почитать здесь: http://java.sun.com/j2se/1.5.0/docs/guide/reflection/index.html. А примеры использования доступны здесь: http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html.
Спасибо Вам большое, Виктор.