Ecore, genmodel и OCL
Я определяю метамодель предметно-ориентированного языка моделирования с помощью Ecore в EMF. Поэтому я создаю редактор из связанной генмодели, которую я могу использовать для создания моделей, соответствующих метамодели. Я хотел бы указать некоторые ограничения OCL для значений, которые могут принимать некоторые элементы метамодели. Было бы очень хорошо, если бы я мог указать эти ограничения в модели Ecore и иметь соответствующие проверки автоматически сгенерированного Java-кода редактора.
Есть ли стандартный способ сделать это?
2 ответа
Вам следует взглянуть на недавнюю работу проекта OCL в Eclipse с "OCL in Ecore", или вы можете попробовать другой способ интеграции OCL с Ecore, указанный в документации OCL Juno.
Первым шагом является определение того, как вы хотите добавить ограничения в вашу ecore (мета-) модель. В настоящий момент я знаю, что вы можете сделать это двумя способами:
1 - наличие выражений ocl, встроенных в элементы аннотации модели ecore.
2- наличие выражений OCL в отдельном файле рядом с ecore.
Для получения дополнительной информации о первом подходе посмотрите на OCLInEcore, а для второго посмотрите на OCLComplete. Кажется, что они предоставляют некоторый API для проверки ограничения OCL для данных моделей (проверка соответствия).
Для вашей цели кажется, что OCLInEcore подходит. Вы можете встроить свой ocl в ecore и использовать API, предоставленный OCLInEcore, чтобы проверить, удовлетворяет ли данная модель ограничениям ocl.
Надеюсь это поможет.