Module: Ea::Model

Defined in:
lib/ea/model.rb,
lib/ea/model/base.rb,
lib/ea/model/klass.rb,
lib/ea/model/point.rb,
lib/ea/model/bounds.rb,
lib/ea/model/diagram.rb,
lib/ea/model/package.rb,
lib/ea/model/document.rb,
lib/ea/model/metadata.rb,
lib/ea/model/property.rb,
lib/ea/model/waypoint.rb,
lib/ea/model/data_type.rb,
lib/ea/model/interface.rb,
lib/ea/model/operation.rb,
lib/ea/model/parameter.rb,
lib/ea/model/annotation.rb,
lib/ea/model/classifier.rb,
lib/ea/model/dependency.rb,
lib/ea/model/stereotype.rb,
lib/ea/model/association.rb,
lib/ea/model/enumeration.rb,
lib/ea/model/realization.rb,
lib/ea/model/relationship.rb,
lib/ea/model/tagged_value.rb,
lib/ea/model/generalization.rb,
lib/ea/model/primitive_type.rb,
lib/ea/model/diagram_element.rb,
lib/ea/model/polymorphic_maps.rb,
lib/ea/model/diagram_connector.rb,
lib/ea/model/enumeration_literal.rb

Overview

Ea::Model is the canonical domain model for what Sparx Enterprise Architect models.

It is intentionally independent of any source format. QEA and XMI are translated into Ea::Model by source adapters (Ea::Sources::Qea, Ea::Sources::Xmi). Consumers (Ea::Spa, future exporters, validators, differs) project from Ea::Model — they do not redefine the modeling types.

Architectural principle: Hexagonal / Ports & Adapters. Ea::Model is the hexagon. Source adapters are driving ports; consumer adapters are driven ports. Dependencies point inward only.

Defined Under Namespace

Classes: Annotation, Association, Base, Bounds, Classifier, DataType, Dependency, Diagram, DiagramConnector, DiagramElement, Document, Enumeration, EnumerationLiteral, Generalization, Interface, Klass, Metadata, Operation, Package, Parameter, Point, PrimitiveType, Property, Realization, Relationship, Stereotype, TaggedValue, Waypoint

Constant Summary collapse

CLASSIFIER_POLYMORPHIC_MAP =

Polymorphic dispatch maps for collections that hold subclasses of an abstract base. The discriminator field carries the concrete subclass name on every instance; lutaml-model uses this map to pick the right class on deserialize.

{
  attribute: "modelKind",
  class_map: {
    "class" => "Ea::Model::Klass",
    "data_type" => "Ea::Model::DataType",
    "primitive_type" => "Ea::Model::PrimitiveType",
    "enumeration" => "Ea::Model::Enumeration",
    "interface" => "Ea::Model::Interface"
  }
}.freeze
RELATIONSHIP_POLYMORPHIC_MAP =
{
  attribute: "relationshipKind",
  class_map: {
    "association" => "Ea::Model::Association",
    "generalization" => "Ea::Model::Generalization",
    "realization" => "Ea::Model::Realization",
    "dependency" => "Ea::Model::Dependency"
  }
}.freeze