我正在开发一个项目,我必须为java制作的专有BPM(业务流程管理)系统构建图形化流程建模器。我提到该软件是专有的,因为它不遵循任何国际标准,如BPEL,BPMN,XPDL,这是我可能获得的任何答案的重要信息。
我的目标是使用eclipse GMF创建一个独立的RCP应用程序,类似于Bonita Studio,业务分析师将以图形方式对业务流程建模并将流程模型部署到Web应用程序中。
这个应用程序有一个类似于内部向导的过程建模器,非常简陋。但是这个建模器具有以定制的,定义良好的XML格式导入和导出模型的功能,这种格式也是专有的,没有国际标准。
我需要的是坚持使用我正在开发的自定义XML格式的eclipse gmf rcp应用程序创建的图形模型。这样我就可以简单地在Web应用程序中调用导入功能,并且将部署该过程。我还需要能够做到这一点:将这种XML格式的自定义进程打开到我的eclipse RCP中并以图形方式显示它。
所以,我需要的是:
我需要以自定义XML格式保存图形图并以此格式打开自定义XML文件并将其显示为图形图
非常感谢您的帮助!
答案 0 :(得分:1)
GMF正在使用EMF模型来存储其图表。由于EMF模型已经能够映射到XML,因此在大多数情况下,XSL样式表转换可能足以将模型映射到自定义XML格式,反之亦然。
答案 1 :(得分:0)
Daniel,我有将此图表导出为XML的要求,反之亦然。我会告诉你我在下面的程序。
GUI到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)); )< / p>
将所有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);
以上代码将生成模型,您可以右键单击该文件并生成图表文件。
我不知道是否有更好的方法可以做到这一点,但这个对我有用。试试看,如果您需要进一步的帮助,请告诉我。