Static Models

KlumAST is centered around static data models.

What are static data models?

A static data model is a group of classes with these characteristics:

How does KlumAST implement the static data model paradigm?

KlumAST supports this style with the following techniques:

Relationship graph

Owned DSL Object relationships are a single-rooted composition tree. One or more @Owner fields may provide framework-managed backlinks for upward navigation; they do not create additional ownership. LINK fields can add side connections to existing completed DSL Objects without re-owning a target or changing the composition root. See Ownership and @Owner for the Builder-phase timing of those backlinks.

Transient fields

Fields marked with @Field(FieldType.TRANSIENT) are the explicit exception: they add transient data to a model. This data can be changed at will and does not participate in equality checks. FieldType.TRANSIENT is a KlumAST model classification, not the Java/Groovy transient modifier: it is serialized by default.