Я пытаюсь выполнить преобразование M2M с помощью ATL. Итак, я преобразовываю исходную модель (1) в целевую модель (2), я очень новичок в ATL и не могу найти никакой документации о том, как включить преобразования «многие ко многим». Что я пытаюсь сделать, так это: преобразовать (1) исходную модель с классом с именем operation, который ссылается на другой параметр с именем класса, ссылка с именем OperationInput и ее кардинальность (0..n) в (2) целевая модель с функция с именем класса, которая ссылается на другой класс с именем Param, ссылка называется functionInput и имеет мощность (0..n). Итак, я написал следующее преобразование ATL:
rule operation2Function {
from
s: Source!operation
to
t: Target!Function
(
functionInput<-s.operationInput)
}
Однако, похоже, это не сработало, потому что количество элементов равно многим ко многим, поэтому я попробовал следующий код:
rule operation2Function {
from
s: Source!operation
to
t: Target!Function
(
functionInput<-Source!operation.allInstances() ->select(e | e.oclIsTypeOf(Source!operation)->collect(e| e.operationInput),
)
}
Я по-прежнему не получаю надлежащего результата, хотя я инициализировал экземпляр исходной метамодели.
Я был бы признателен за вашу помощь в том, как включить преобразования «многие ко многим» ((0..n) или (1..n)) .