1

我想在服务器端创建一个 Eclipse GEF 图的图像,而不必加载整个编辑器环境。

该图是使用基于GEF的eclipse graphiti 的 eclipse bpmn2-modeler设计的。

这个想法是:

  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.DefaultSaveImageFeatureand org.eclipse.graphiti.ui.internal.util.ui.print.AbstractFigureSelectionDialog (initScaledImage())
    但在深入研究之前,我需要先通过第 2 步问题。

也许我走错了路,有更简单的方法吗?

4

2 回答 2

1

您可以看看 GMF 如何在没有编辑器的情况下生成图表图像。然而,这一代仍然依赖于 UI,因为您需要 SWT 和 Display 线程(您可以在无头 Eclipse 模式下启动 Display 线程)。

这个想法是使用 EditPart 工厂为模型元素创建编辑部件,然后在屏幕外创建的 Shell 托管的 Canvas 上绘制根图。GC 的图形上下文是 SWT 图像。有一些方法可以在不使用基于 AWT 的 Eclipse UI 或生成 SVG 的情况下生成图表的图像。但是,请记住,当涉及到文本标签时,图形的布局依赖于 SWT,因此无论哪种方式,您都需要 SWT 和 Display 线程。图形的颜色、字体和其他属性也是 SWT 对象。

GMF 中要查看的类是org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory

于 2015-01-23T14:43:46.210 回答
1

Graphiti 最近收到了一项增强功能,允许您在不打开编辑器的情况下导出图表。不过,您仍然需要 eclipse UI 环境。我在这里有一个使用下面列出的辅助方法的示例。

org.eclipse.graphiti.ui.internal.services.impl.ImageService.convertDiagramToBytes(Diagram, int)
于 2016-01-03T19:28:31.997 回答