我正在ecore模型上使用OCL约束并生成代码。所以事情就这么简单
我有一个具有属性 startDate
的类任务和endDate
它有一个 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);
}
}
那么,从我的主类(class)中,我如何在这里验证我的任务。我想调用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
}
}
最佳答案
使用 eclipse.modeling.mdt.ocl 或 eclipse.tools.emf 论坛,您更有可能快速获得答案。当然,您可以使用 TmsFactory.eINSTANCE 创建模型的实例,并且可以使用 Diagnostician.INSTANCE 验证建模对象上的所有约束。
关于java - 如何从java主代码中调用OCL约束(生成模型的java源代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277756/