我有从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的对等体)
答案 0 :(得分:0)
检索引用对象的解决方案是使用绝对路径来检索资源。 有关详细信息,请查看this discussion。 引用的对象不会始终作为java对象创建,但EMF将在运行时解决引用。
我仍然遇到错误的href属性
的问题