我想知道如何访问我程序的解析模型。我有一个用xtend编写的验证检查,它接受一个规则 A 作为参数。但是我想搜索整个解析的树,并确保对 A 的特定实例的任何其他引用遵循某些规范。
@Check
def checkActionBelongsToAssociatedRole(ActionDsc act){
var pRole = act.parentRole
var rs = new ResourceSetImpl()
//DONT KNOW IF THIS IS RIGHT
var resource = rs.getResource(URI.createURI("./model/generated/Protocol.ecore"), true)
for(r:resource.allContents.toIterable.filter(typeof(RoleDec))){
if(r.name == pRole.name){
//DO SOMETHING
}
}
}
在我拥有的生成器文件中,我已经将Resource对象作为参数。
override void doGenerate(Resource resource, IFileSystemAccess fsa) {
//Generate code
}
我如何为验证器做同样的事情。提前谢谢!
答案 0 :(得分:1)
act.eResource()
允许访问包含操作的资源。