В вашей модели не хватает одного "слоя" для представления структуры "тип сообщения" / "экземпляр сообщения".
Я думаю, что вам нужно сделать что-то вроде этого:
- Класс
MessageType
с сдерживанием в направлении BaseType
(которое ИМО следует переименовать в нечто вроде MessageDataType
)
- Класс
MessageInstance
с сдерживанием для себя и ссылкой на MessageType
.
Затем конечный пользователь должен сначала создать экземпляр MessageType
, называемый «позиция», а второй - «движение». Затем создайте три экземпляра MessageInstance
, два из которых указывают на "движение" MessageType
, а другой содержит первые два экземпляра MessageInstance
.
Я бы также посоветовал серьезно подумать о том, как вы хотите назвать свои концепции, потому что существует потенциальная путаница между экземпляром Ecore одного из вашего EClass и тем фактом, что вы эффективно моделируете структуру типа / экземпляра.