Как создать образ диаграммы ГЭФ на сервере

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

Диаграмма разработана с использованием http://eclipse.org/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 и на сервере у меня нет ни одного, ни запущенной среды пользовательского интерфейса.
    Есть какой-то другой утилита или обработчик, который может сгенерировать диаграмму для меня?

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

Может я на неправильном пути и есть куда более простой подход?

2 ответа

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

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

Класс в GMF, на который можно посмотреть org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory

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

org.eclipse.graphiti.ui.internal.services.impl.ImageService.convertDiagramToBytes(Diagram, int)
Другие вопросы по тегам