Здравсвуйте
Не могу разобраться каким образом можно программно получить
идентификаторы и их значения для последующего формирования XML.
Подскажите, пожалуйста.
Спасибо
Андрей Малыханов — 29.10.07
Здравствуйте!
Уточните, пожалуйста, о каких именно идентификаторах (и их
значениях) идет речь. В языке Java можно поучить хеш-код любого
объекта с помощью метода hashCode(). Какие именно XML-файлы вы хотите
формировать? Если вы ответите на эти вопросы, возможно, легче
будет вам помочь.
Максим Шатилов — 29.10.07
Здравствуйте, Андрей.
Нужно получить имена полей класса модели (список всех элементов
модели). К примеру, есть модель, построенная в терминах системной
динамики, нужно получить список всех уровней (Stocks) и параметров
(Parameters), затем их обработать и вывести в XML.
Андрей Малыханов — 30.10.07
Каждая модель AnyLogic хранится в виде ALP-файла. ALP-файл представляет
собой текстовый XML-документ.Вся информация о модели сохраняется
в
таком файле в читаемом виде.
Вы можете сами написать программу, читающую, ALP-файлы и
извлекающую из них необходимую информацию. В современных языках
программирования существует много средств удобной работы с XML.
Возможно, для ваших целей подойдут XSLT-преобразования.
Максим Шатилов — 30.10.07
Спасибо, благодаря вам одна проблема частично решена. Тогда такой
вопрос, каким образом можно извлекать значения уровней (Stocks) и
параметров (Parameters) на каждом шаге модели?
Андрей Малыханов — 31.10.07
В модели вы можете создать таймер, который с заданной
периодичностью будет записывать в файл значения определенных
переменных и параметров модели. Можно, например, сразу
формировать XML-файл с нужными данными. Подробнее о работе с
текстовыми файлами и XML в языке Java вы можете узнать, например,
здесь:
http://java.sun.com/j2se/1.5.0/docs/
Максим Шатилов — 31.10.07
Main - это класс унаследованный от ActiveObject, m - объект класса Main,
созданный соответственно во время работы модели. Поле класса Main
Potential_Customers - это уровень в терминах системной динамики (СД), точно
также, как и Customers. Поля Adoption_From_Word_Of_Mouth и Adoption_From_Advertising - это
параметры в терминах СД.
В настоящий момент, чтобы вытащить из модели данные мне нужно
обращаться к полям и смотреть их значения. т.е. что-то типа
str1= "" + m.Total_Population ;
str2="" + m.Potential_Customers
и так далее. Проблема в том, что могут появлятся новые уровни и
новые поля и я просто не могу их все время руками прописывать,
программа сама должна проверять обновления и автоматически их
обрабатывать. Можно ли это сделать и как? Я это спрашивал с самого
начала :)
Виктор Глейм — 01.11.07
Максим!
Для осуществления Вашей затеи следует использовать технологию
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.
Максим Шатилов — 02.11.07
Спасибо Вам большое, Виктор.