2011-09-20 61 views
0

我正在使用EMF模型,它由几个Commands组成。根据其内容将EObject保存在不同的资源中

每个命令都有一个名为submitted的布尔属性,它由我的应用程序处理。根据此属性的值,我想将命令保存在“提交”文件或文件“toSubmit”中。我怎样才能做到这一点?

因为要提交的元素可以引用提交的元素,所以我打算将它们放在同一个resourceSet的两个资源中......这对于交叉引用是否足够了?

另外,我也想有一个“完整”的文件,其中既领悟元素提交和那些已经提交了......

回答

1

还有一两件事:为了交叉引用,除了要保存到相同的资源集中,引用的元素必须已经保存在资源中。

换句话说,您必须订购与相关性相关的资源保存:首先必须保存资源,而不是引用其他引用,然后引用引用。

+0

我试图按照您的指南保存我的模型,但我遇到了一些问题。通过构建,提交的元素不能指向“排队”元素。因此,我将提交元素的模型保存在另一个模型之前。但是,第一个模型已成功保存,但第二个模型通过抛出以下异常失败:'org.eclipse.xtext.parsetree.reconstr.XtextSerializationException:无法序列化来自Model.commands的交叉引用[1] - > FunctionSingle.inputs到Model.commands [1] - > VariableContinuous'Var2' ' – Matteo

+0

所以你使用Xtext - 这是新的信息。 :D那么,这里有一些区别约束 - 我会看看语法是否可以存储这样的引用。如果不是,那么它不能将它序列化到Xtext资源。 –

+0

是的,抱歉,我忘了提及...我的语法(或我的模型)应该如何修改以允许这样的交叉引用?谷歌搜索,我发现一篇文章,指出xtext应该能够管理这种交叉引用(http://www.eclipse.org/forums/index.php/mv/tree/174945/#page_top)...但显然我我做错了什么:) – Matteo