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
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');
}
...
}