Mit Hilfe von Jonas Hogstrom und Jan Norden Ich habe 2 Funktionen zu bewerten OCL.
Erstens ist zu bewerten, OCL in EcoSpace:
öffentlichen Objekt EvaluateOclInEcoSpace (IElement rootValue, String OCL)
(
Objekt result = null;
IElement e = ((IOclService)
this.GetEcoService (typeof (IOclService))). EvaluateAndSubscribe (rootValue, OCL,
null, null);
if (e! = null)
result = e.AsObject;
return result;
)
Zweitens ist zu bewerten, OCL in PS:
öffentlichen Objekt EvaluateOclInDB (IElement rootValue, String OCL)
(
Objekt result = null;
IElement InternalElement = null;IOclService oclService = (IOclService)
this.GetEcoService (typeof (IOclService));
IPersistenceService persistenceService = (IPersistenceService)
this.GetEcoService (typeof (IPersistenceService));
AbstractCondition cond = oclService.CreateRetrieveCondition (rootValue,
null, OCL);
InternalElement = persistenceService.GetAllWithCondition (cond, 1, 0);if ((InternalElement! = null) & & ((InternalElement als IObjectList). Count
== 1))
result = (InternalElement als IObjectList) [0]. AsObject;
return result;)
Natürlich können Sie diese Funktionen komplexer.
Sie können unterschiedliche Ergebnisse Arten, zum Beispiel IObjectList, ändern Sie Parameter für GetAllWithCondition - in dieser Version es gibt nur das erste Objekt.

Delicious
Digg
Google
Yahoo