Сериализация графических моделей Eclipse (например, BPMN Diagram) в XML - PullRequest
0 голосов
/ 30 июня 2011

Я работаю над проектом, в котором мне нужно создать графический редактор процессов для собственной системы BPM (управление бизнес-процессами), созданной на Java.Я упоминаю, что программное обеспечение является проприетарным, поскольку оно не соответствует ЛЮБЫМ международным стандартам, таким как BPEL, BPMN, XPDL, и это важная информация для любых ответов, которые я могу получить.

Мой предполагаемый подход заключается в использованиизатмить GMF, чтобы создать отдельное приложение RCP, похожее на Bonita Studio, где бизнес-аналитики будут графически моделировать бизнес-процессы и развертывать модель процессов в веб-приложении.

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

Мне нужно сохранить графическую модель, созданную с помощью eclipse gmfПриложение RCP я разрабатываю в этот пользовательский формат XML.Таким образом, я могу просто вызвать функцию импорта в веб-приложении, и процесс будет развернут.Мне также нужно иметь возможность сделать наоборот: открыть пользовательский процесс в этом формате XML в моем RCP затмения и показать его в графической форме.

Итак, мне нужно:

Мне нужно сохранить графическую диаграмму в пользовательском формате XML, открыть пользовательский файл XML в этом формате и показать его в виде графических диаграмм

Большое спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 30 июня 2011

GMF использует модели EMF для хранения своих диаграмм. Поскольку модели EMF уже могут отображаться в XML, преобразования таблицы стилей XSL в большинстве случаев может быть достаточно для сопоставления вашей модели с вашим пользовательским форматом XML и наоборот.

0 голосов
/ 19 января 2013

Даниэль, у меня было это требование для экспорта диаграммы в XML и наоборот.Я дам вам процедуру, которой я следовал ниже.

GUI to XML : - Используйте файл модели в приведенном ниже коде, чтобы вернуть корневой элемент в качестве объекта Java.

Примечание: - Предполагая, что редактор GMF генерирует 2 файла, один для модели и один для диаграммы, вы должны выбрать файл модели в качестве входных данных для кода ниже.

    File model_file = new File(Path_to_your_model_file);
    ResourceSet rs = new ResourceSetImpl();
    URI fileUri = URI.createFileURI(model_file.getAbsolutePath());
    Resource res = rs.getResource(fileUri, true);
    Model model = res.getContents().get(0);

В приведенной выше строке Модельпредставлять ваш корневой объект вашей модели ecore.Теперь, когда вы получили корневой объект, вы можете использовать его для получения всех значений, ссылок и т. Д.

Используя их, вы можете вручную написать код Java для записи файла XML.

XML для GUI : - Это тоже довольно просто

Создайте новый объект для корневого элемента для вашей модели, используя приведенный ниже код.

ModelImpl model = (ModelImpl)ModelFactoryImpl.eINSTANCE.createModel(); // Replace Model with your model element name

Сначала необходимо проанализировать XML-файл, используя JAVA, и шаг за шагом прочитать все значения и шаг за шагом присвоить атрибуты объекту модели (например: model.setName (doc.getDocumentElement ()).getAttribute ("name")); и ChildObjImpl childObject = (ChildObj) ModelFactoryImpl.eINSTANCE.createChildObj (); )

Вы можете создать все различные необходимые объекты, которые являютсяподдерживается вашим кодом, а затем добавьте их в родительский объект (например: model.getChildObject (). add (childObject)); )

Как только вы закончите добавлять всю информацию изXML в эти объекты, вы можете использовать корневой объект модели для создания файла модели, как показано ниже

    ResourceSet resourceSet = new ResourceSetImpl();
    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi",new XMIResourceFactoryImpl());
    Resource resource = resourceSet.createResource(URI.createFileURI(path_where_u_want_to_save_the_model_with_filename));
    resource.getContents().add(dd);
    resource.save(null);

Выше кода создаст модель отлично, вы можете щелкнуть правой кнопкой мыши по этому файлу и сгенерировать файл диаграммые.

Я не знаю, есть ли лучший способ сделать это, но этот работал для меня хорошо.Попробуйте и дайте мне знать, если вам понадобится дополнительная помощь.

...