2010-02-20 2 views
13

Мне нужно прочитать диаграммы UML, которые сериализованы в XMI. Есть ли какая-либо библиотека, которая позволила бы мне удобно читать UML XMI - я бы хотел иметь некоторые методы для итерации по классам/пакетам/методам/атрибуту и ​​т. Д. В модели.Как читать XMI?

Я пробовал EMF, но я не могу найти учебник, в котором будет показано, как импортировать XMI, содержащий UML. Я также нашел NSUML/NSMDF, но ссылка на документацию не работает.

ответ

4

Я не думаю, что вы хотите. Все инструменты, импортирующие XMI, которые я знаю (включая мою службу преобразования XMI: http://modeling-languages.com/content/xmi2-tool-exchanging-uml-models-among-case-tools), работают, анализируя весь файл XMI и создавая соответствующую модель UML в основной памяти. Затем вы можете получить доступ к элементам UML, запросив модель.

Для итерации по модели XMI вы можете легко использовать библиотеки XML для выбора части файла XMI вас интересуют.

1

ArgoUML может импортировать XMI в свою модель UML и генерировать код для Java, C++, C#, PHP4 и PHP5.

3

Возможно, просто взгляните на Transforming XMI to HTML. Это должно помочь вам начать работу с XSLT и XMI.

0

Для чтения XMI/UML с использованием EMF вам нужно будет найти, сгенерировать или написать модель ECore для UML. После того, как у вас есть один из них, вы можете создавать классы в памяти для управления UML и использовать другую инфраструктуру EMF.

Но проще всего использовать инфраструктуру UML2, разработанную Eclipse MDT project. (Я предполагаю, что он использует EMF под капотом и что там есть модель ECO для UML2.)

+0

Вы правы, что проект UML2 построен поверх EMF. – ChrisH

0

Что вы ищете является Java specification for JMI («Java Metadata Interface»), который реализует MOF для описания метаданных и XMI для транспортировки метаданных.

К сожалению, в настоящее время я ищу реализации JMI, а страница JMI на солнце выглядит немного устаревшей. С открытым исходным кодом реализация netbeans, похоже, была отброшена для версии 6.

2

Это зависит от версии UML, которую вы пытаетесь прочитать. Пакет NSUML, который вы нашли, работает только с UML 1.3. NetBeans MetaData Repository (MDR) будет читать дескриптор UML 1.4 и UML 1.5. Он может использоваться как отдельная библиотека (это то, что использует ArgoUML), поэтому вам не нужны NetBeans. Для UML 2.x я считаю, что ваши библиотеки Eclipse EMF & UML2 - ваш единственный выбор. EMF - это зависимость, но это действительно нужный материал UML2. Как с MDR и NetBeans, вам не нужен Eclipse. ArgoUML использует библиотеки Eclipse для поддержки UML 2.x.

Смежные вопросы