Как создать образ диаграммы ГЭФ на сервере
Я хотел бы создать образ диаграммы Eclipse GEF на стороне сервера без необходимости загружать всю среду редактора.
Диаграмма разработана с использованием http://eclipse.org/bpmn2-modeler/, который основан на Eclipse Graphiti, который основан на GEF.
Идея была бы:
- загрузить модель BPMN
- генерировать информацию о диаграмме
- экспортировать диаграмму как изображение
Этот фрагмент должен выполнить шаг 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);
чтобы сгенерировать информацию о диаграмме, которую я нашел
org.eclipse.bpmn2.modeler.core.di.DIImport
,
Проблема здесь в том, что конструктор требуетorg.eclipse.graphiti.ui.editor.DiagramEditor
и на сервере у меня нет ни одного, ни запущенной среды пользовательского интерфейса.
Есть какой-то другой утилита или обработчик, который может сгенерировать диаграмму для меня?Я посмотрел на
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)