2012-11-07 48 views
1

我在ecore模型上使用OCL約束並生成代碼。所以事情就像這樣簡單 我有一個類任務有屬性startDateendDate 它有一個ocl約束: - 不變,其狀態startDate < endDate如何從java的主代碼調用OCL約束(生成模型的java源代碼)

我已生成的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);  
    } 
} 
從我的主類

所以,我怎麼在這裏驗證我的任務。我想打電話給OCL 約束,以檢查是否startDate小於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   
    }  
} 
+0

就這樣,您知道您使用引號(''')代替代碼('{}')來格式化代碼。 –

回答

1

你更容易得到使用eclipse.modeling.mdt.ocl或eclipse.tools.emf論壇迅速的答案。當然你使用TmsFactory.eINSTANCE來創建你的模型的實例,你可以使用Diagnostician.INSTANCE來驗證你的建模對象的所有約束。