まとめます。
EMFのモデルに対してOCLをかける仕組みです。
org.eclipse.ocl.ecoreプラグインを依存関係につけます。
- OCLのインスタンス生成
- OCLHelperを作成
- contextの設定
- 評価するオブジェクトとOCLでevaluateを実行
- 戻り値はObject型だが、Booleanが戻ってくるので、OCLの評価がtrue,falseかの判定する。
以下ソースコード
import org.eclipse.ocl.ecore.OCL;
import org.eclipse.ocl.ecore.OCL.Helper;
import org.eclipse.ocl.ecore.EcoreEnvironmentFactory
OCL ocl = OCL.newInstance(EcoreEnvironmentFactory.INSTANCE);
OCLHelper helper = ocl.createOCLHelper();
EClass context = targetObject.eClass();
helper.setContext(context);
EObject object = targetObject;
String query;
query = "self.parameter > 100";//
try {
Object result = ocl.evaluate(object, helper.createQuery(query));
logger.error("", result.getClass(), result.toString());
} catch (ParserException e) {
logger.error("", e);
}
eclipseのOCL説明
今回はOCLのinvariantの判定をするケースでもう一つの方法としては、
evaluateではなくcheckメソッドを使う方法もあるらしいです。
あとは、defを使ってquery operationを定義することもできる。OCLの記述と同じように記述し、evaludateを実行すれば、同じように取得ができる。
- OCL資料
0 件のコメント:
コメントを投稿