Internally, Tuscany uses a configuration model to represent the complete definition of an application that will be run. This model is loaded from various persistent artifacts (such as XML files, other configuration files, annotated Java classes, etc.) and used by the builders to create the actual runtime contexts that comprise the running application.
The configuration model is based on the SCA assembly model with additions for Tuscany-specific features and for each of the installed extensions. It should be stressed that although there is a natural similarity to the XML data model defined by the specification the configuration model is driven by the needs of the Tuscany implementation and its extensions.
The model can be described by the following UML:
[ insert a UML model here ]
The code for the core model is contained in the "model" module located at http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/model and all model object derive from the core AssemblyObject interface. We use interfaces to describe most model items and provide a factory that can be used to create instances; this is optional and it is possible (if not recommended) for extensions to add to the model using simple JavaBeans.
For a full description of the model please see the JavaDoc. Some common extension points in the model are:
Implementation interface that defines the actual implementation that should be used for a component. This would typically be extended by new component implementation types to describe the physical implementation that should be used (such as a Java class name or a script file).
Binding interface that defines a binding to be applied to an EntryPoint or ExternalService. This would typically be extended by new transport or protocol bindings to describe how invocations will be represented on the wire (such as a web-service or IIOP call).