ATL转换 - InterModelReferences。模型之间的错误href引用

时间:2014-03-31 23:31:58

标签: emf

我有从1个模型到2个模型的ATL转换

-- @nsURI WFG=http://workflowgraph/1.0.3
-- @nsURI SYS=http://systembehavior/1.0
-- @nsURI PEER=http://peerbehavior/1.0

module WFG2System;
create OUT:SYS, OUT2:PEER  from IN:WFG;

SYS模型的某些对象引用了模型PEER的对象。 在ATL运行配置中,我检查了InterModelReferences,并填写了将生成的文件的路径。因此ATL应该知道生成的模型的fileName和路径。转换工作,InterModelReferences工作...但不太好。在' href'字段,而不是引用模型的路径,有String" new-model",如下所示:

<systembehavior:SYS xmlns:PEER="http://peerbehavior/1.0" xmlns:SYS="http://systembehavior/1.0">
  <transitions xsi:type="systembehavior:Send">
    <source href="new-model#Participant_1"/>
    <target href="new-model#Participant_5"/>
  </transitions>

而不是:

<systembehavior:SYS xmlns:PEER="http://peerbehavior/1.0" xmlns:SYS="http://systembehavior/1.0">
  <transitions xsi:type="systembehavior:Send">
    <source href="./mymodel.peer#Participant_1"/>
    <target href="./mymodel.peer#Participant_5"/>
  </transitions>

为什么不自动写入第二个生成模型的路径?我的实际解决方案是使用文本编辑器手动更改href属性,这样我就可以在eclipse上使用XMI编辑器打开模型文件,然后引用效果很好。 谢谢

======编辑发现了另一个问题(下面的解决方案)======

如果我从模型中检索java对象SYS,使用:

ResourceSet resSet = new ResourceSetImpl(); 
        Resource resource = resSet.getResource(URI.createURI(PartesConf.getString("outputPath")+"sys.systembehavior"), true); 
        SystemBehavior sys = ((SystemBehavior) resource.getContents().get(0));

来自PEER模型的引用对等体是空对等体(具有所有属性为null的对等体) enter image description here

1 个答案:

答案 0 :(得分:0)

检索引用对象的解决方案是使用绝对路径来检索资源。 有关详细信息,请查看this discussion。 引用的对象不会始终作为java对象创建,但EMF将在运行时解决引用。

我仍然遇到错误的href属性

的问题