OCLOperators PSEval
No edit summary
No edit summary
Line 1: Line 1:
Makes it possible use oclPS in any OCL expression.
Makes it possible use oclPS in any OCL expression. Using this you can "reach into" the database from OCL and action-language (EAL)


Expression template
Expression template
  SomeClass.PSEval(SomeClass.allinstances->select(x|x.name=vWhatever),maxfetch,offset,dependon)
  SomeClass.PSEval(<ps-expression>,maxfetch,offset,<dependon>)
Using this you can "reach into" the database from OCL and action-language (EAL)
 
'''Note!'''  - PSEval don't subscribe on sets from db. To make the operator auto-updating, provide an expression in "dependon" that when changed should also rerun the PSEval expression. This can for example be a timer.
'''Note!'''  - PSEval don't subscribe on sets from db. To make the operator auto-updating, provide an expression in "dependon" that when changed should also rerun the PSEval expression. This can for example be a timer.


Example
Uppdrag.PSEval(self.Uppdrag->select(u|u.Aktivt)->orderDescending(u|u.Startdatum),  1000, 0, self.Uppdrag)
For example this expression from a method having "userName" as a parameter
For example this expression from a method having "userName" as a parameter
  SysUser.PSEval(SysUser.allinstances->select(su|su.Username=userName),2,0,<nowiki>''</nowiki>)
  SysUser.PSEval(SysUser.allinstances->select(su|su.Username=userName),2,0,<nowiki>''</nowiki>)

Revision as of 15:26, 24 January 2023

Makes it possible use oclPS in any OCL expression. Using this you can "reach into" the database from OCL and action-language (EAL)

Expression template

SomeClass.PSEval(<ps-expression>,maxfetch,offset,<dependon>)

Note! - PSEval don't subscribe on sets from db. To make the operator auto-updating, provide an expression in "dependon" that when changed should also rerun the PSEval expression. This can for example be a timer.

Example

Uppdrag.PSEval(self.Uppdrag->select(u|u.Aktivt)->orderDescending(u|u.Startdatum),  1000, 0, self.Uppdrag)

For example this expression from a method having "userName" as a parameter

SysUser.PSEval(SysUser.allinstances->select(su|su.Username=userName),2,0,'')

Always remember that your SQL-server might also need indexes and other performance settings to be able to execute your expression efficient.

See also Sqlpassthrough , PSEvalValue

This page was edited 69 days ago on 02/10/2024. What links here