Skip to content
raimu edited this page Aug 8, 2015 · 1 revision

The Kephas Model

Model element contracts

  • INamedElement
  • IModelDimension
  • IModelDimensionElement
  • IModelProjection
  • IModelSpace
  • IModelElement
  • IAnnotation
  • IClassifier
  • IProperty

Model dimensions

  • AppLayer
  • Model
  • Module
  • Scope
  • Aspect

Model projections

Model element names

The root mode space

Factories

Factory namespace

IModelSpaceProvider: shared application service contract for providing a model space.

IElementFactory: shared application service contract for creating elements of the model.

Base factory abstract class: ElementFactoryBase.

  • TryGetElementConstructorInfo: Based on the provided native element, tries to create a structure for creating the model element. If null is returned, the factory cannot create an element.
  • CreateElement: creates an element based on the provided constructor information.

ModelDimensionFactory: factory for model dimensions.

Configuring elements

Configuration namespace

IModelSpaceProvider: shared application service contract for providing a model space.

IElementFactory: shared application service contract for creating elements of the model.

Base factory abstract class: ElementFactoryBase.

  • TryGetElementConstructorInfo: Based on the provided native element, tries to create a structure for creating the model element. If null is returned, the factory cannot create an element.
  • CreateElement: creates an element based on the provided constructor information.

ModelDimensionFactory: factory for model dimensions.

Configuring elements

Configuration namespace

Once an element is created, using registered configurators the element can be configured.

IElementConfigurator: shared application service contract for configuring an element.

  • TNativeElement: the native type used for configuration.
  • TRealConfigurator: the real configurator type.

IConfigurableElement

Model elements

  • NamedElementBase
  • ModelElementBase
  • ModelDimension

TODO: insert image ModelContracts.png

INamedElement

This is the minimal interface a model element must implement.

Container: provides a reference to the container model element. Except the model space, all the elements have a container.

Name: the friendly name of the element. In the case of models constructed using code first, this is the name computed from the runtime type or member name.

QualifiedName: the name of the element unique within its container’s members. This name is used to build the full name.

Some elements have the qualified name the same as their name, but others will use a discriminator prefix to avoid name collisions. For example, attributes use the "@" discriminator, dimensions use "^", and dimension elements use ":".

FullQualifiedName: the fully qualified name, starting from the root model space. The full name is built up of qualified names separated by "/". Examples:

TODO: insert table

Clone this wiki locally