Detail Design

© Domicel Systems
All rights reserved

Design Goals


Implementation

Domicel is written in Java as pure server-side software, currently using Apache Tomcat and mySQL, but designed to be independent of server and database. The front end uses a standard web browser (though it is only tested with MS Explorer and Mozilla Firefox).

Objects

Objects are the basic building block of Domicel Applications. They are defined by the Services they support, and implemented by Classes. Every object supports the Domicel Base Service, plus zero or more user-defined services. Objects are identified by an Object ID, a Domicel ID, and a Host ID. Host IDs and Domicel IDs are unique system-wide. Object IDs are unique to a particular Domicel on a particular Host. 

Services

Services define an object's messages and attributes. Services, themselves, are defined by XML files which are isomorphic to a subset of the Web Service standard (the intention is to make them identical to the Web Service standard in the future).

Domicel Base Service

The Domicel Base Service defines the methods that all objects support. Every class must explicitly support this service (the reason: so that new versions of the Domicel Base Service can be created without making old objects obsolete). The methods in this service are described by Domicel Base Messages. Services are identified by a Host ID and a Service ID.

Classes

Objects are instances of classes. Whereas services are system-wide, classes are specific to the host on which its objects (instances) reside. Classes explicitly implement zero or more services (the Domicel Base Service is implemented implicitly). Non-base-service functionality is implemented by a Java class which is specified by the Domicel class.

Methods

Methods are defined by services. The service defines the input SOAP message, and the output SOAP message. 

Attributes

Methods which begin with the prefix: GetAttr define attributes. The type of the attribute is determined by the output message of the method. When a Host creates a class, the class's services are read. A SQL table is created by the host for implementing objects which are instances of the class: one column for every attribute.