org.eclipse.ocl.SemanticException: illegal operation signature: (oclContents())
Bonjour,
J'utilise l 'expression OCL suivante dans un code Java sur une instance d'un processus BPEL que je lis avec l'API BPELReader:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| OCL<?, EClassifier, ?, ?, ?, ?, ?, ?, ?, Constraint, EClass, EObject> ocl = null;
ocl = OCL.newInstance(EcoreEnvironmentFactory.INSTANCE);
OCLHelper<EClassifier, EOperation, EStructuralFeature, Constraint> helper = (OCLHelper<EClassifier, EOperation, EStructuralFeature, Constraint>) ocl.createOCLHelper();
helper.setContext(BPELPackage.Literals.PROCESS);
BasicEnvironment benv =OCLUtil.getAdapter(ocl.getEnvironment(), BasicEnvironment.class);
env.setOption(ProblemOption.CLOSURE_ITERATOR,ProblemHandler.Severity.OK);
OCLExpression<EClassifier> query = helper.createQuery("self->asSet()->closure(oclContents()->select(oclIsKindOf(Activity)))->select(a:model::Activity| a.oclIsKindOf(Assign))->size()");
Query queryEval = ocl.createQuery(query);
String categories = (String) queryEval.evaluate(process).toString();
System.out.println(categories+ " in testquery"); |
L'execution renvoie une exception sur l'operation oclContents() :
Citation:
org.eclipse.ocl.SemanticException: illegal operation signature: (oclContents())
J'essaye d'utiliser la méthode eContents() à la place de oclContents(), ca ne marche pas.
Code:
(self->asSet()->closure(oclAsType(ecore::EObject).eContents()->...)
Comment résoudre ce problème dans ma requête OCL?
Merci d'avance pour votre aide.