Overview

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:

Table 1. Domain primitive types at different levels 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.