Мне нужно создать случайные экземпляры .xml из .als в моей программе. Мне удалось это сделать, запустив сплав в фоновом режиме (невидимый JFrame) и вызвав функции doOpen, doExecuteLatest и doShowLatest. Но, чтобы ждать, когда сплав начнется каждый раз, когда я запускаю свой код, это боль. Я думаю, что было бы более эффективно, если бы я просто использовал раздел кода сплава, который выполняет эту процедуру (я предполагаю, что это будет код). Кто-нибудь знает, как это сделать? Я нашел код сплава довольно запутанным ...Сплав - генерировать экземпляр .xml из .als
3
A
ответ
6
Вы можете использовать API сплавов. Создание экземпляра и записи его в файл XML можно легко сделать после этих шагов:
Прочитайте модель сплава от его исходного файла.
модель = CompUtil.parseEverything_fromFile (NULL, NULL, " yourmodel.als");
Получить команду для выполнения. например:
Команда cmd = model.getAllCommands(). get (0);
Выполнить модель с помощью команды, полученной на стадии 2
раствор A4Solution = TranslateAlloyToKodkod.execute_command (нуль, model.getAllReachableSigs(), CMD, новые A4Options());
Написать решение сгенерированного на шаге 3
solution.writeXML ("путь/к/your.xml");
Примеры можно найти в edu.mit.csail.sdg.alloy4whole пакет из баночки файла сплава
Вы не имеете ни малейшего представления о том, как полезно это было! Спасибо огромное! – mcopo
рад, что это помогло: D –
Как перебирать решения? (задано в). Благодарю. –