Uml 从关联生成字段
我想从关联生成一个字段。 我的问题是我正在使用:Uml 从关联生成字段,uml,code-generation,acceleo,ocl,Uml,Code Generation,Acceleo,Ocl,我想从关联生成一个字段。 我的问题是我正在使用: [for (p: Property | aClass.getAssociations().ownedEnd -> select(p: Property | p.type <> aClass)) separator('\n')] [p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/]; [/for] [for (p: Property | aClass.g
[for (p: Property | aClass.getAssociations().ownedEnd -> select(p: Property | p.type <> aClass)) separator('\n')]
[p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/];
[/for]
[for (p: Property | aClass.getAssociations().ownedEnd -> select(p: Property | p.type = p.getOtherEnd().type)) separator('\n')]
[p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/];
[/for]
[for(p:Property | aClass.getAssociations().owneeded->select(p:Property | p.type aClass))分隔符('\n')]
[p.visibility/][p.type.name/][p.type.name.toLowerFirst()/];
[for]
[对于(p:Property | aClass.getAssociations().ownedd->select(p:Property | p.type=p.getOtherEnd().type))分隔符('\n')]
[p.visibility/][p.type.name/][p.type.name.toLowerFirst()/];
[for]
这样会检查所有关联,如果关联类型不是同一ass类类型,则会创建该类型的字段。
如果端点是相同的类型,它将创建一个与包含它的类类型相同的字段
所以基本上如果有关联A-B和A-A
对于B创建A,对于A创建B和A。
但是第二个循环有一个问题。它创建了两个字段,而不是一个,这非常符合逻辑。问题来了。我怎样才能解决这个问题?我不确定我是否能够在这里声明某种类型的变量并检查%2。我不能只取一个值,因为可能有多个关联。
也许我都做错了?也许有一种方法可以在端点上进行迭代,从而节省所有检查和两个for循环?[for(a:Association | aClass.getAssociations())]
[for (a: Association | aClass.getAssociations())]
[if a.ownedEnd.type = a.ownedEnd.getOtherEnd().type]
[a.visibility/] [a.endType.name/] [a.endType.name.toLowerFirst()/];
[else]
[for (p: Property | a.ownedEnd -> select (type <> aClass))]
[p.visibility/] [p.type.name/] [p.type.name.toLowerFirst()/];
[/for]
[/if]
[/for]
[如果a.ownedEnd.type=a.ownedEnd.getOtherEnd().type]
[a.visibility/][a.endType.name/][a.endType.name.toLowerFirst()/];
[其他]
[对于(p:Property | a.ownedd->select(type aClass))]
[p.visibility/][p.type.name/][p.type.name.toLowerFirst()/];
[for]
[if]
[for]
这似乎奏效了