Layer Responsibilities
Data Authority Modules have a clear structure of internal layers described in the Data Authority Module page:
- Protocol Adaptors
- Services
- Persistence
- Proxies
Each layer has a set of responsibilities that guide what code should go into each layer.
Persistence¶
- Storage and retrieval of entity values from persistent storage.
- Management of Bitemporal changes to entity values.
- Validation and Management of “collections” of entity values (concept of
Universe) like uniqueness, ordering, etc.
Services¶
- Definition of the data structure, validation and behavior of individual Endtities and Value objects managed by the Service. All business logic that can be implemented by traversing the Object Graph reachable from an Entity Instance belongs in the Service Layer.
- Transactional boundary of the module. Typically individual operations of a service represent transactional updates to the state of the entities managed by the module.
- Coordination of Persistence Operations across multiple Universes (e.g. to ensure referencial integrity between separate entities).
- Coordination of Proxy Operations that invoke services of other modules, including distributed
commit/rollbackscenarios (e.g. participating in saga patterns). - Generation of Entity Identities and Names Adn and interpretation of ADNs to resolve to Entity Values (e.g. querying the appropriate persistence layer Universes).
- Generation and emitting of Notifications in response to changes.
Protocol Adaptors¶
- Conversion between the Wire Representation of messages (Request/Response and Streaming messages) and internal data types, including validation of data formats, optionality, etc.
- Conversion between the Wire timing and concurrency models and the internal Service Concurrency Model (e.g. Synchronous vs. Asynchronous, Multipart messages, etc.)
Copyright: © Arda Systems 2025-2026, All rights reserved