0

我正在做一个项目,我必须为用 java 制作的专有 BPM(业务流程管理)系统构建图形流程建模器。我提到该软件是专有的,因为它不遵循任何国际标准,如 BPEL、BPMN、XPDL,这是我可能得到的任何答案的重要信息。

我打算使用 eclipse GMF 创建一个独立的 RCP 应用程序,类似于 Bonita Studio,业务分析师将以图形方式对业务流程建模并将流程模型部署到 Web 应用程序中。

这个应用程序有一个内部的类似向导的流程建模器,非常简陋。但是这个建模器具有以自定义的、定义明确的 XML 格式导入和导出模型的功能,该格式也是专有的,没有国际标准。

我需要将使用我正在开发的 eclipse gmf rcp 应用程序创建的图形模型保存为这种自定义 XML 格式。这样,我可以简单地调用 Web 应用程序中的导入功能,然后部署该流程。我还需要能够做相反的事情:以这种 XML 格式在我的 eclipse RCP 中打开一个自定义进程,并以图形方式显示它。

所以,我需要的是:

我需要以自定义 XML 格式保存图形图并以这种格式打开自定义 XML 文件并将其显示为图形图

非常感谢您的帮助!

4

2 回答 2

1

GMF 正在使用 EMF 模型来存储其图表。由于 EMF 模型已经能够映射到 XML,因此在大多数情况下,XSL 样式表转换可能足以将您的模型映射到您的自定义 XML 格式,反之亦然。

于 2011-06-30T19:34:26.823 回答
0

丹尼尔,我有将图表导出为 XML 的要求,反之亦然。我将在下面为您提供我遵循的程序。

GUI to XML : - 在下面的代码中使用您的模型文件将根元素作为 java 对象返回。

注意: - 假设 GMF 编辑器生成 2 个文件,一个用于模型,一个用于图表,您必须选择模型文件作为以下代码的输入。

    File model_file = new File(Path_to_your_model_file);
    ResourceSet rs = new ResourceSetImpl();
    URI fileUri = URI.createFileURI(model_file.getAbsolutePath());
    Resource res = rs.getResource(fileUri, true);
    Model model = res.getContents().get(0);

在上面的行中 Model 代表你的 ecore 模型的根对象。现在,当您获得根对象时,您可以使用它来获取所有值、引用等

使用这些您可以手动编写 java 代码来编写 XML 文件。

XML 到 GUI : - 这也很简单

使用以下代码为模型的根元素创建一个新对象。

ModelImpl model = (ModelImpl)ModelFactoryImpl.eINSTANCE.createModel(); // Replace Model with your model element name

您必须首先使用 JAVA 解析 XML 文件并逐步读取所有值并逐步将属性分配给模型对象(例如:model.setName(doc.getDocumentElement().getAttribute("name")) ;ChildObjImpl childObject = (ChildObj)ModelFactoryImpl.eINSTANCE.createChildObj(); )

您可以创建代码支持的所有不同的必需对象,然后将它们添加到父对象(例如:model.getChildObject().add(childObject));)

将 XML 中的所有信息添加到这些对象后,您可以使用根模型对象创建模型文件,如下所示

    ResourceSet resourceSet = new ResourceSetImpl();
    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi",new XMIResourceFactoryImpl());
    Resource resource = resourceSet.createResource(URI.createFileURI(path_where_u_want_to_save_the_model_with_filename));
    resource.getContents().add(dd);
    resource.save(null);

上面的代码可以很好地生成模型,您可以右键单击该文件并生成图表文件。

我不知道是否有更好的方法来做到这一点,但这对我很有效。试试看,如果您需要进一步的帮助,请告诉我。

于 2013-01-19T13:36:58.050 回答