In relational database terminology, a domain defines the range of values allowed for an attribute of an entity. IBM Cúram Social Program Management uses domain definitions in a similar way. Domains are datatype definitions which resolve to either a primitive datatype or another domain. Equivalent primitive types are supported across client, middleware, server and database components of a Cúram application:
Cúram Architecture Layer |
Datatypes |
---|---|
Server Remote Interface Layer |
Java datatypes |
Server Business Object Layer |
Java datatypes |
Server Data Access Layer |
Java datatypes |
Database |
Database datatypes |
By working with domains, rather than primitive types, developers are protected from having to worry about different representations of data in the various application layers. For this reason, entity and structure attributes must be defined in terms of a previously defined domain - it is not possible to use primitive datatypes directly.
Validations on each domain type are also allowed to be defined in the client application. A specific validation can then be executed for all attributes defined in terms of a given domain type, before transactions are invoked on the server. This client-side pre-flight validation gives the user feedback on basic datatype validation without having to call the server, resulting in lower network overhead because of the reduced number of failed transactions.