Проецирование экземпляра из A4Solution

Я пытаюсь создать новый интерфейс для визуализации моих экземпляров Alloy. Я получил решение A4S и успешно извлек атомы, отношения, проверил подписи атомов, НО я не могу понять, как спроецировать экземпляр на какой-нибудь сигнал.

Я заметил, что я могу попытаться использовать edu.mit.csail.sdg.alloy4viz.AlloyInstance, у меня есть варианты проецирования туда, но это подразумевало бы начало заново под другим углом.

Будет ли это путь? Я бы предпочел извлечь это из объекта A4Solution.

Спасибо

1 ответ

Решение

Вы можете посмотреть на edu.mit.csail.sdg.alloy4viz.StaticProjector класс и его project методы --- вот как Alloy Visualizer реализует проекции. Если ваша визуализация использует edu.mit.csail.sdg.alloy4viz.AlloyModel класс, вы должны иметь возможность повторно использовать существующий код в StaticProjector; однако из вашего поста кажется, что вы бы предпочли не использовать ни один из классов сплава 4viz, и в этом случае не должно быть слишком сложно понять, как StaticProjector работает и повторно применить те же идеи для вашего проекта. Или вы могли бы преобразовать A4Solution возражать против AlloyInstance[1] и создайте свой визуализатор на основе классов loy4viz, что, на мой взгляд, было бы хорошим способом проработать ваш проект.

[1] что-то вроде:

a4sol.writeXML("instance.xml")
AlloyInstance inst = StaticInstanceReader.parseInstance(new File("instance.xml"));
Другие вопросы по тегам