IVersioned

Interface used to define data objects that can be versioned.

Description

The IVersioned interface allows you to define data objects that can be versioned.

Important points

  • Versioning is often used as an optimistic concurrency mechanism.
  • The version doesn’t have to be a number, but it is recommended to use sequential values to determine if one object has a newer or older version than another one.
  • It is common to use the time of change as the object version.

Fields

version

Object’s version.

abstract version: String

Examples

class MyData implements IStringIdentifiable, IVersioned {
     String id;
    String  field1;
    int field2;
    @override
    String version;
    ...
}
 void updateData(String? correlationId, MyData item ) {
    ...
    if (item.version < oldItem.version) {
        throw  ConcurrencyException(null, 'VERSION_CONFLICT', 'The change has older version stored value');
    }
    ...
}