まとめます。
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 件のコメント:
コメントを投稿