我想在服务器端创建一个Eclipse GEF图的图像,而不必加载整个编辑器环境。
该图表是使用eclipse bpmn2-modeler设计的,该eclipse graphiti基于GEF,基于{{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);
生成我发现org.eclipse.bpmn2.modeler.core.di.DIImport
的图表信息
这里的问题是构造函数需要org.eclipse.graphiti.ui.editor.DiagramEditor
,而在服务器上我没有,没有正在运行的UI环境。
是否有其他的工具或处理程序可以为我生成图表?
我看了org.eclipse.graphiti.ui.features.DefaultSaveImageFeature
和org.eclipse.graphiti.ui.internal.util.ui.print.AbstractFigureSelectionDialog (initScaledImage())
但是我需要首先通过第2步,然后再深入研究这个问题。
也许我的方法不对,而且方法更简单?
答案 0 :(得分:1)
您可以查看GMF如何在没有编辑器的情况下生成图表图像。但是,这一代仍然依赖于UI,因为您需要SWT和Display线程(您可以在无头Eclipse模式下启动Display线程)。
我们的想法是使用EditPart工厂为模型元素创建editpart,然后在由屏幕外创建的Shell托管的Canvas上绘制根图。 GC的图形上下文是SWT图像。有些方法可以在不使用基于AWT的Eclipse UI或生成SVG的情况下生成图表的图像。但是,请记住,当涉及文本标签时,图形的布局与SWT相关,因此您需要SWT和Display线程。数字的颜色,字体和其他属性也是SWT对象。
GMF中要查看的课程为org.eclipse.gmf.runtime.diagram.ui.OffscreenEditPartFactory
答案 1 :(得分:1)
Graphiti最近收到了一个enhancement,它允许您导出图表而无需调出编辑器。您仍然需要eclipse UI环境。我有一个示例here,它使用下面列出的帮助方法。
org.eclipse.graphiti.ui.internal.services.impl.ImageService.convertDiagramToBytes(Diagram, int)