从图表访问语义模型元素(Capella 的 M2doc)
Access to semantic model elements from a diagram (M2doc for Capella)
我试图访问图表中引用的所有语义模型元素,代码类似于:
{m:for rep | pkg.representationByDescriptionName('Class Diagram Blank')}
{ m:for obj | rep.eContents().target }
{ m:endfor }
{ m:endfor }
而且,虽然在 sirius 解释器中 rep.eContents().target 工作正常,但在生成文档时我从模板中得到了这个错误:
无效的for语句:空集合:调用eContents后不会留下任何东西:只有EClass可以包含其他EClass而不是org.eclipse.sirius.viewpoint.DRepresentation
Invalid for statement: Couldn't find the 'aqlFeatureAccess(Nothing(Nothing will be left after calling eContents: Only EClass can contain other EClasses not org.eclipse.sirius.viewpoint.DRepresentation),java.lang.String)' serviceInvalid for statement: The iteration variable types must be collections ([Nothing(Couldn't find the 'aqlFeatureAccess(Nothing(Nothing will be left after calling eContents: Only EClass can contain other EClasses not org.eclipse.sirius.viewpoint.DRepresentation),java.lang.String)' service)]).
迭代图中可见的模型对象的正确代码是什么?
谢谢。
您可能需要添加 Sirius 元模型。您可以使用 template properties wizard:
添加以下 nsURI
- http://www.eclipse.org/sirius/1.1.0
- http://www.eclipse.org/sirius/diagram/1.1.0
- http://www.eclipse.org/sirius/diagram/sequence/2.0.0
根据您使用的 Sirius 版本,您可能需要更改版本号。如果需要,您还可以为 Sirius 表和树添加 nsURI。
Sirius 为给定的表示提供了一个 EReference 列表语义元素,对于您可能想要检查元素是否可见的图表:
rep.representationElements->select(re | if re.oclIsKindOf(diagram::DDiagramElement) then re.visible else true endif)
我试图访问图表中引用的所有语义模型元素,代码类似于:
{m:for rep | pkg.representationByDescriptionName('Class Diagram Blank')}
{ m:for obj | rep.eContents().target }
{ m:endfor }
{ m:endfor }
而且,虽然在 sirius 解释器中 rep.eContents().target 工作正常,但在生成文档时我从模板中得到了这个错误:
无效的for语句:空集合:调用eContents后不会留下任何东西:只有EClass可以包含其他EClass而不是org.eclipse.sirius.viewpoint.DRepresentation Invalid for statement: Couldn't find the 'aqlFeatureAccess(Nothing(Nothing will be left after calling eContents: Only EClass can contain other EClasses not org.eclipse.sirius.viewpoint.DRepresentation),java.lang.String)' serviceInvalid for statement: The iteration variable types must be collections ([Nothing(Couldn't find the 'aqlFeatureAccess(Nothing(Nothing will be left after calling eContents: Only EClass can contain other EClasses not org.eclipse.sirius.viewpoint.DRepresentation),java.lang.String)' service)]).
迭代图中可见的模型对象的正确代码是什么? 谢谢。
您可能需要添加 Sirius 元模型。您可以使用 template properties wizard:
添加以下 nsURI- http://www.eclipse.org/sirius/1.1.0
- http://www.eclipse.org/sirius/diagram/1.1.0
- http://www.eclipse.org/sirius/diagram/sequence/2.0.0
根据您使用的 Sirius 版本,您可能需要更改版本号。如果需要,您还可以为 Sirius 表和树添加 nsURI。
Sirius 为给定的表示提供了一个 EReference 列表语义元素,对于您可能想要检查元素是否可见的图表:
rep.representationElements->select(re | if re.oclIsKindOf(diagram::DDiagramElement) then re.visible else true endif)