1

ecoreモデルでOCL制約を使用し、コードを生成しています。だから、これと同じくらい簡単です。私は属性を持つクラスTaskを持ってstartDateendDate て、それはocl制約を持っています:-状態を示す不変条件startDate < endDate

このプロジェクトのJavaコードを生成しましたが、Javaクラスがあります。

public class TmsValidator extends EObjectValidator {

  //what is diagnosticChain and context in the below method

  public boolean validateTask_C2(Task task, DiagnosticChain diagnostics, Map<Object, Object context) {
    return validate(TmsPackage.Literals.TASK,
         task,
         diagnostics,
         context,
         "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
         "C2",
         TASK__C2__EEXPRESSION,
         Diagnostic.ERROR,
         DIAGNOSTIC_SOURCE,
         0);    
  }
}

それで、私のメインクラスから、ここで自分のタスクを検証するにはどうすればよいですか。startDateOCL制約を呼び出して、がより小さいかどうかを確認したいendDate

public class {  
  public static void main(String []a){  
    Task t = new
    Task ();    
    // How do I validate my task here  . I want to call the 
    //OCL constraint to check if startDate is less than endDate         
  }     
} 
4

1 に答える 1

1

eclipse.modeling.mdt.oclまたはeclipse.tools.emfフォーラムを使用すると、迅速な回答が得られる可能性が高くなります。もちろん、TmsFactory.eINSTANCEを使用してモデルのインスタンスを作成し、Diagnostician.INSTANCEを使用してモデル化されたオブジェクトのすべての制約を検証できます。

于 2012-11-08T13:24:47.750 に答える