Change representation (no metadata)

Last modified 12 Mar 2021 10:22 +01:00

A change of an item (property, reference, container, object) that describes the "old" to "new" state, and the transition between them can be represented in two equivalent ways:

  1. item-delta-item,

  2. delta set triple.

Item-delta-item

Item-delta-item contains explicit information on the old state ("item"), the change ("delta"), and the new state ("item").

Component Meaning

state before change ("old")

A set of values before the change is applied.

change ("delta")

Three sets of values: those that are added, deleted, or replaced. See item delta description.

state after change ("new")

A set of values after the change is applied.

The "new" state information is redundant. It can be always determined by application of the delta on the old state.

Each of the triad (old, delta, new) can be null. If old state is null, it is assumed that item is being created. If new state is null, item is being deleted. And if delta is null, item is unchanged.

Delta set triple

It consists of three sets of values:

Component Meaning

plus set

Values that are to be added to the respective item.

minus set

Values that are to be removed from the respective item.

zero set

Values of the respective item that are to be kept unchanged.

Plus, minus, and zero sets should be disjunctive under "Real value considering different IDs" equivalence strategy.[1]

It is obvious how delta set triple can be derived from item-delta-item: We can simply compute a difference between item old and new state and for each value we determine if it is added, deleted or kept unchanged. This results in the placement of such value in appropriate delta set.

In short (see here for details):

  1. Tplus = I' -RVDI I

  2. Tminus = I -RVDI I'

  3. Tzero = I ∩RVDI I'

The process of determining delta from original item plus delta set triple (or more commonly, triples) is called consolidation and deserves separate treatment.

Both item-delta-item and delta set triple structure need to provide special treatment for values with metadata.

1. This was not quite true before midPoint 4.2: a value could be present in more than one set at once. However, starting with 4.2 the disjunctiveness can be assumed.