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 : Sélectionner tout - Visualiser dans une fenêtre à part
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() :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
(self->asSet()->closure(oclAsType(ecore::EObject).eContents()->...)
Comment résoudre ce problème dans ma requête OCL?

Merci d'avance pour votre aide.