-- @atlcompiler atl2006 module Trace; create trace : TRACE from empty_trace : TRACE; endpoint rule getTraceModel() { to trace : TRACE!TraceModel ( name <- thisModule.toString(), traces <- thisModule.links.getAllLinks()->collect(e | thisModule.getTraceLink(e))->flatten() ) } rule getTraceLink(inSource : OclAny) { to trace : TRACE!TraceLink ( name <- inSource.getRule().toString(), sources <- inSource.getSourceElementsMap().getKeys()->collect(e | thisModule.getSourceElement(e, inSource.getSourceElementsMap().get(e))), targets <- inSource.getTargetElementsMap().getKeys()->collect(e | thisModule.getTargetElement(e, inSource.getTargetElementsMap().get(e))) ) do { trace; } } rule getSourceElement(name : String, element : OclAny) { to outelement : TRACE!SourceElement ( name <- name ) do { outelement.refSetValue('ref', element); } } rule getTargetElement(name : String, element : OclAny) { to outelement : TRACE!TargetElement ( name <- name ) do { outelement.refSetValue('ref', element); } }