- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从 Enterprise Architect 生成的扩展名为 XMI 的 SysML 文件,我想使用 EMF、UML2 和 Papyrus 插件解析它以获取 Java 中 SysML 文件内的对象。
我尝试新建一个 EMF 项目并导入此 SysML 文件,但失败了。它说这个文件中有一些非法值。
然后我尝试写一个阅读器来阅读这个,它也不起作用。代码如下:
ResourceSet resourceSet = new ResourceSetImpl();
Registry packageRegistry = resourceSet.getPackageRegistry();
packageRegistry.put(XMI_NAMESPACE, UMLPackage.eINSTANCE);
packageRegistry.put(UML_NAMESPACE, UMLPackage.eINSTANCE);
packageRegistry.put(SysmlPackage.eNS_URI, SysmlPackage.eINSTANCE);
//packageRegistry.put(ADA_NAMESPACE, UMLPackage.eINSTANCE);
//packageRegistry.put(VERILOG_NAMESPACE, UMLPackage.eINSTANCE);
//packageRegistry.put(ARCGIS_NAMESPACE, UMLPackage.eINSTANCE);
//packageRegistry.put(EAUML_NAMESPACE, UMLPackage.eINSTANCE);
//packageRegistry.put(THE_CUSTOMER_PROFILE_NAMESPACE,UMLPackage.eINSTANCE);
// Add the load option
resourceSet.getLoadOptions().put(XMIResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);
// Deine the extension to factory map
Map<String, Object> extensionToFactoryMap = resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
UMLResourceFactoryImpl umlResourceFactory = new UMLResourceFactoryImpl();
extensionToFactoryMap.put(XMI2UMLResource.FILE_EXTENSION, umlResourceFactory);
URI uri = URI.createFileURI(xmiFile.getPath());
Model umlModel = UML2Util.load(resource, uri, UMLPackage.Literals.MODEL);
System.out.println(umlModel);
此代码适用于 Papyrus 生成的 SysML,但不适用于 Enterprise Architect 生成的文件。
正如里面的注释,在SysML文件的头部,有很多特定的命名空间。命名空间如下:
<?xml version="1.0" encoding="windows-1252"?>
<xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0" xmlns:Ada="http://www.sparxsystems.com/profiles/Ada/1.0" xmlns:Verilog="http://www.sparxsystems.com/profiles/Verilog/1.0" xmlns:ArcGIS="http://www.sparxsystems.com/profiles/ArcGIS/1.0" xmlns:sysml="http://www.omg.org/spec/SysML/20080501/SysML-profile" xmlns:SysML="http://www.omg.org/spec/SysML/20120322/SysML" xmlns:EAUML="http://www.sparxsystems.com/profiles/EAUML/1.0">
<xmi:Documentation exporter="Enterprise Architect" exporterVersion="6.5"/>
<uml:Model xmi:type="uml:Model" name="EA_Model" visibility="public">
....
我想获取标签中的信息....
有人可以帮助我吗?
编辑:
org.eclipse.emf.common;bundle-version="2.11.0",
org.eclipse.emf.ecore;bundle-version="2.11.1",
org.eclipse.emf.mapping;bundle-version="2.9.0",
org.eclipse.uml2.common;bundle-version="2.1.0",
org.eclipse.uml2.uml;bundle-version="5.1.0",
org.apache.log4j;bundle-version="1.2.15",
org.junit;bundle-version="4.12.0",
org.eclipse.papyrus.sysml;bundle-version="1.1.3"
我使用的代码可以解析 Papyrus 以及 IBM Rhapsody 生成的 SysML。不幸的是,我需要解析 EA 生成的文件。另外,我尝试使用Rhapsody导入EA生成的SysML,然后从Rhapsody导出一个新的SysML文件。这次我可以解析新的 SysML 文件。
当我从 EA 解析 SysML 时显示错误,如下所示:
Line: 3501 : Value 'org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl@1ddeb95 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@77270b15 (name: ActivityEdge) (instanceClassName: null) (abstract: false, interface: false)) (mixed: null, anyAttribute: [XMI_2.1:idref=EAID_B206112C_3845_4058_8987_AAB974C081D8])' is not legal. (file:/home/pzhengshuai/workspace-papyrus/SysMLReader/resource/import/export_file_xmi_2.1/eaexample_model.xmi, 3501, 77)
还有一些这样的
Line: 1989 : Unresolved reference 'EAID_425E703B_8FB1_4be3_9264_C470555CFF8F'. (file:/home/pzhengshuai/workspace-papyrus/SysMLReader/resource/import/export_file_xmi_2.1/eaexample_model.xmi, 1989, 73)
我猜我的代码可能无法识别 EA SysML 文件中特定的命名空间。如果我们能在 EA 中找到定义命名空间的模式或其他东西,并将它们添加到 SysML 文件中,也许代码就可以工作。但我没有找到任何相关文件。
最佳答案
你没有说明你遇到了什么样的错误。如果知道的话那就太好了。
从上面的 XMI 来看,Sparx EA 似乎将 SysML 表示为 UML,并应用了 SysML 配置文件。这是合法的,但它与直接使用 SysML 元模型不同。您的代码似乎直接使用元模型。
关于java - 用Java解析Enterprise Architect生成的SysML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887624/
Enterprise Architect 中的原型(prototype)“主文档”和“报告包”有什么区别?我将从多个模型文档生成一个文档,我想更好地组织它们以模仿生成的文档的结构。我认为创建“报告包”
Stackoverflow 上有几个问题询问 x ( Ruby/Drupal ) 技术是否已“企业就绪”。 我想问一下“企业就绪”是如何定义的。 有人创建了自己的 list 吗? 有人有测试的基准吗?
我要为我的 EA 项目创建一个脚本。为此,有必要创建一个新的“组”,您可以在该组中添加自己的脚本。 我在硬盘上找到的本地脚本。它们位于 EA-install-dir/Scritps 中。 但是我在哪里
我定义了一个带有操作的类,操作在几个时序图中使用。 有没有办法找出有多少序列图正在使用一个特定的操作? 最佳答案 如果我的理解正确,您应该能够执行以下操作: 在“项目浏览器”中展开您的类以查看操作 右
问题:我们的许多设计和架构文档都是在 Enterprise Architect 中创建和维护的。 ——无论好坏,就是这样。这些文档存储在我们的 subversion 存储库中——这对于创建和更新它们的
运行 Github Enterprise 2.18。有什么方法可以通过 API 确定用户处于休眠状态吗?我在任何地方都没有看到对它的具体调用... 最佳答案 为了回答你的问题...... Runnin
我有一个很大的遗留项目。 我加载了整个项目:Project->Source Code Engineering->Import Source Directory:(c++) & (path) 有没有一种
我的元素有 10 个或更多标记值,而不是一次删除一个,有没有办法同时删除它们? 最佳答案 正如 Uffe 指出的那样,您可以使用脚本来完成此操作。有关 EA 脚本的更多信息,请参阅 the EA Us
我有一些代码,我想创建Property Note var metric as EA.Element; metric = thePackage.Elements.AddNew("", "Text")
我正在尝试将一个图表中的用例链接到详细说明该用例的图表。 我正在做的是: 创建新的用例图(右键单击模型 -> 添加 -> 添加图) 将图表称为“测试” 在图表中添加用例(在图表中单击右键 -> 新建元
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我无法在“Enterprise Architect”(Sparx Systems)生成的类图中显示参数的名称。我正在尝试在下面添加一个操作 + delayFight(numberOfMinutes:
我正在阅读 Scylla 的文档,因为我们正计划从 DSE 迁移到本地 Scylla。然而,in their documentation ,他们说不支持 DSE SSTable 格式。 Here他们提
在模型搜索功能中似乎没有办法将结果限制为特定类型,例如类,节点等。有办法实现吗?我知道我可以制作一个 SQL 查询,但是无法找到正确的表名。 编辑 看来我可以做到以下几点 选择 *, Object_T
一些扩展 GitHub Enterprise 的服务需要足够新的版本。但作为 GH:E 的标准用户,我如何在不干扰管理员的情况下确定我的公司安装了哪个版本? 最佳答案 我正在为我们的 github 企
我正在阅读 Scylla 的文档,因为我们正计划从 DSE 迁移到本地 Scylla。然而,in their documentation ,他们说不支持 DSE SSTable 格式。 Here他们提
我有一个 54 页的 UML 图要打印。我想缩小图像大小或页面大小,以便打印不超过 12 页?有没有办法做到这一点? 最佳答案 开图 使用图->属性 在图表选项卡上,单击页面设置下的“高级...” 单
我有一个用例图,其中用例具有扩展关系。我想知道是否有任何 API 可用于了解将哪个扩展点设置为特定的扩展关系(在许多可以应用的扩展点中)。下面显示了用例图以及突出显示的扩展点。 最佳答案 假设这是一个
我正在尝试使用 Microsoft Enterprise Library 中的 DatabaseFactory 方法。 using Microsoft.Practices.EnterpriseLibr
有谁知道如何在使用 amazon ec2 M3.Xlarge 机器的集群中使用 Datastax 企业(使用 opscenter)? 当我尝试使用这些类型的实例(使用 ssd)时,出现以下错误: 启动
我是一名优秀的程序员,十分优秀!