2015-01-23 2 views
1

Я хотел бы создать изображение диаграммы Eclipse GEF на стороне сервера без необходимости загружать всю среду редактора.Как создать изображение диаграммы GEF на сервере

Диаграмма разработана с использованием eclipse bpmn2-modeler, которая основана на eclipse graphiti, которая основана на GEF.

Идея будет:

  1. нагрузка BPMN модель
  2. генерировать схема информационных
  3. экспорта диаграммы в виде изображения

Этот фрагмент кода должен сделать шаг 1, загрузить модель BPMN:

URI modelUri = URI.createFileURI("D:/temp/data.bpmn"); 
    ResourceSet resourceSet = new Bpmn2ModelerResourceSetImpl(); 
    resourceSet.setURIConverter(new ProxyURIConverterImplExtension(modelUri)); 
    Bpmn2ResourceImpl resource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri, Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID); 
    ModelHandler modelHandler = ModelHandlerLocator.createModelHandler(modelUri, resource); 
  1. для получения информации о диаграмме, которую я нашел org.eclipse.bpmn2.modeler.core.di.DIImport.
    Проблема заключается в том, что для конструктора требуется org.eclipse.graphiti.ui.editor.DiagramEditor, а на сервере у меня его нет, нет среды интерфейса UI.
    Есть ли какой-нибудь другой утилита или обработчик, который может создать диаграмму для меня?

  2. Я взглянул на org.eclipse.graphiti.ui.features.DefaultSaveImageFeature и org.eclipse.graphiti.ui.internal.util.ui.print.AbstractFigureSelectionDialog (initScaledImage()).
    Но мне нужно сначала пройти шаг 2, прежде чем углубиться в это.

Возможно, я ошибаюсь, и есть гораздо более простой подход?

ответ

1

Вы можете посмотреть, как GMF создает изображение диаграммы без редактора. Однако это поколение по-прежнему зависит от пользовательского интерфейса, потому что вам потребуется SWT и поток Display (вы можете запустить поток Display в режиме безгласного Eclipse).

Идея заключается в использовании фабрики EditPart для создания элементов редактирования для элементов модели, а затем для рисования корневой фигуры на холсте, размещаемом оболочкой, созданной за кадром. Графический контекст GC - это SWT-изображение. Существуют способы генерации изображения диаграммы без использования Eclipse UI на основе AWT или генерации SVG. Однако имейте в виду, что компоновка цифр зависит от SWT, когда дело доходит до текстовых меток, поэтому вам понадобится SWT и нить Display в любом случае. Цвета, шрифты и другие атрибуты цифр также являются объектами SWT.

Класс в ГМП смотреть будет org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory

+0

Да, я решил, что мне нужно создать editparts, но я надеялся найти фабрику в графити, которая делает это для меня (так как не использует GMF). Я создал тему на форуме eclipse https://www.eclipse.org/forums/index.php/t/965255/. –

1

Graphiti недавно получил enhancement, который позволяет экспортировать диаграмму без воспитывая редактора. Тем не менее, вам все равно нужна среда интерфейса eclipse. У меня есть пример here, который использует вспомогательный метод, указанный ниже.

org.eclipse.graphiti.ui.internal.services.impl.ImageService.convertDiagramToBytes(Diagram, int) 
+0

Отлично! Я посмотрю на это, когда найду время и отчитаюсь здесь. –