OCLOperators PSEval
No edit summary
(Automatically adding template at the end of the page.)
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Makes it possible use oclPS in any OCL expression.
The OCLOperator PSEval makes it possible to 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 doesn't subscribe to 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.
'''Note!''' Offset is 0-based.


For example this expression from a method having "userName" as a parameter
Example:
Uppdrag.PSEval(self.Uppdrag->select(u|u.Aktivt)->orderDescending(u|u.Startdatum),  1000, 0, self.Uppdrag)
For example, this expression from a method has "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>)
Always remember that your SQL-server might also need indexes and other performance settings to be able to execute your expression efficient.
Always remember that your SQL-server might also need indexes and other performance settings to execute your expression efficiently.


See also [[OCLOperators Sqlpassthrough|Sqlpassthrough]]
'''Note!''' The offset parameter should almost always be 0, if not used to show a seconds page in a pagination or similar.
 
See also: [[OCLOperators Sqlpassthrough|Sqlpassthrough]], [[OCLOperators PSEvalValue|PSEvalValue]], [[OCLOperators PSEvalTuples|PSEvalTuples]]
[[Category:OCLOperators]]
{{Edited|July|12|2024}}

Revision as of 15:39, 10 February 2024

The OCLOperator PSEval makes it possible to 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 doesn't subscribe to 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! Offset is 0-based.

Example:

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

For example, this expression from a method has "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 execute your expression efficiently.

Note! The offset parameter should almost always be 0, if not used to show a seconds page in a pagination or similar.

See also: Sqlpassthrough, PSEvalValue, PSEvalTuples

This page was edited 9 days ago on 05/03/2024. What links here