Versioned on class
No edit summary
No edit summary
Line 1: Line 1:
When you set Versioned on a class we never use sql-command-update or delete for that class. Instead we use insert with TimeStampStart and TimeStampStop added as non-attribute-db-columns.
When you set Versioned on a class, we never use sql-command-update or delete for that class. Instead, we use insert with TimeStampStart and TimeStampStop added as non-attribute-db-columns.


You can now track all the changes done on an object - and retrieve old versions of that object with operators like [[OCLOperators allInstancesAtTime|allInstancesAtTime]], [[OCLOperators atTime|atTime]], [[OCLOperators objectTimeStamp|objectTimeStamp]]
You can now track all the changes done on an object and retrieve old versions of that object with operators like [[OCLOperators allInstancesAtTime|allInstancesAtTime]], [[OCLOperators atTime|atTime]], or [[OCLOperators objectTimeStamp|objectTimeStamp.]]


If Class1 is versioned this is a valid expression:
If Class1 is versioned, this is a valid expression:
  Class1.allinstances.changepoints(0,-1)->collect(x|x,x.objectTimeStamp, x.objectTimeStamp.timeStampToTime,x.objectTimeStamp.timeStampToTime.timeToTimeStamp)
  Class1.allinstances.changepoints(0,-1)->collect(x|x,x.objectTimeStamp, x.objectTimeStamp.timeStampToTime,x.objectTimeStamp.timeStampToTime.timeToTimeStamp)
Class1.allinstances.changepoints(0,-1): Gives a list of all versions of all Class1 objects
Class1.allinstances.changepoints(0,-1): Gives a list of all versions of all Class1 objects
Line 13: Line 13:
x.objectTimeStamp.timeStampToTime.timeToTimeStamp : looks up the integer timestamp from a datetime
x.objectTimeStamp.timeStampToTime.timeToTimeStamp : looks up the integer timestamp from a datetime


I had 1 Class1 object that I had changed 3 times:
I had one Class1 object that I had changed 3 times:
{| class="wikitable"
{| class="wikitable"
|Eco.Framework.Impl.Frontside.DefaultLoopback
|Eco.Framework.Impl.Frontside.DefaultLoopback

Revision as of 08:42, 20 February 2023

When you set Versioned on a class, we never use sql-command-update or delete for that class. Instead, we use insert with TimeStampStart and TimeStampStop added as non-attribute-db-columns.

You can now track all the changes done on an object and retrieve old versions of that object with operators like allInstancesAtTime, atTime, or objectTimeStamp.

If Class1 is versioned, this is a valid expression:

Class1.allinstances.changepoints(0,-1)->collect(x|x,x.objectTimeStamp, x.objectTimeStamp.timeStampToTime,x.objectTimeStamp.timeStampToTime.timeToTimeStamp)

Class1.allinstances.changepoints(0,-1): Gives a list of all versions of all Class1 objects

x.objectTimeStamp : gives the integer number timestamp

x.objectTimeStamp.timeStampToTime : looks up the corresponding calendar datetime from ClockLog

x.objectTimeStamp.timeStampToTime.timeToTimeStamp : looks up the integer timestamp from a datetime

I had one Class1 object that I had changed 3 times:

Eco.Framework.Impl.Frontside.DefaultLoopback 0 2022-10-26 13:09:25 0
Eco.Framework.Impl.Frontside.DefaultLoopback 1 2022-10-26 13:09:28 1
Eco.Framework.Impl.Frontside.DefaultLoopback 2 2022-10-26 15:56:48 2147483647
This page was edited 127 days ago on 01/11/2024. What links here