2013-12-25 2 views
0

Может ли кто-нибудь представить пример того, как программно выполнять OCL-запрос в модели UML с использованием реализации Eclipse MDT/OCL. Я прочитал документацию Eclipse, но не смог найти рабочий пример, и я продолжаю получать разные исключения и ошибки.Программно выполнить запрос OCL в модели UML

Благодарим за помощь.

ответ

1

Вот пример того, как вы можете создать экземпляр ocl-запроса. Для OCL существуют две фабрики среды, одна для Ecore, которая используется в этом примере, а другая для UML. Поскольку UML реализован с Ecore, вы также можете использовать фабрику Ecore, если хотите оценить UML-модели.

private final OCL<?, EClassifier, ?, ?, ?, EParameter, ?, ?, ?, Constraint, EClass, EObject> ocl; 
private final OCLHelper<EClassifier, ?, ?, Constraint> helper; 

this.ocl = OCL.newInstance(EcoreEnvironmentFactory.INSTANCE); 
this.helper = ocl.createOCLHelper(); 

После создания экземпляра OCL и OCLHelper объектов его важно установить объект контекста для OCL запроса:

helper.setContext(UMLPackage.eINSTANCE.getClass_()); 

UMLPackage.eInstance имеет несколько добытчиками для Class_, Property, Operation и других UML Классы, есть аналогичный объект для Ecore: EcorePackage.eINSTANCE. Затем вам нужно создать OCLExpression, а затем из него запрос.

OCLExpression<EClassifier> expression = helper.createQuery("self.attribute->size() > 0"); 
Query<EClassifier, EClass, EObject> query = ocl.createQuery(expression); 

Теперь вы можете проверить запрос на какой-то элемент:

boolean success = query.check(myElement); 

Если метод проверки возвращает истину, то ваш запрос действителен для данной модели. В этом коде myElement будет объектом вашей модели ECore с типом Class. Объект, который вы передаете методу проверки, должен соответствовать типу контекста, который вы установили в помощнике.

Смежные вопросы