Immultable events are events with properties that cannot be modified, added, or deleted. Mutable events by contrast can have their properties changed, added, or removed. Whether events are mutable or immutable is determined when they are first processed by their source into the DCF event processing flow (for example by the Flow-Listener). Most collected events are of the immutable type. It is possible to change, delete, or add properties to an immutable event in DCF (for example, by passing the event through the Event-Property-Tagger). When this happens the immutable event is encapsulated by a mutable event, where the immutable event's original properties and values are retained by the encapsulation, and the modified properties are applied to the mutable portion.
- A resulting mutable event is created with the property values changed.
- If there were new properties added, these are part of the mutable event.
- If there were properties deleted, these become part of the encapsulated immutable event.
- For any properties whose values are changed, their original values are stored in the encapsulated immutable event.
Typically, if an element further along in the event processing flow searches for a property whose value has been modified, the changed value is returned . But if a property no longer exists in the mutable event, it still exists in the encapsulated immutable event, so will nonetheless be returned.
So for example, if there is event E that contains the fields A and B and the Event Property Tagger is configured to change the value of the field A, add the field C, and delete the field B. The resulting event will be:
Encapsulated within the event, immutable
So elements further along in the processing chain will find "newValue" when searching for A; and "bValue" when searching for B. Since deleted event properties are still available in the event, they can be mapped in the database and therefore would be available in the Frontend. If property values have been changed however, only the new changed values will be available in the Frontend if these properties are mapped.