Class: Archimate::DataModel::Element

Inherits:
Object
  • Object
show all
Includes:
Comparison, Referenceable, RelationshipReferences
Defined in:
lib/archimate/data_model/element.rb

Overview

A base element type that can be extended by concrete ArchiMate types.

Note that ElementType is abstract, so one must have derived types of this type. This is indicated in xml by having a tag name of element and an attribute of xsi:type=“BusinessRole” where BusinessRole is a derived type from [ElementType].

Direct Known Subclasses

Archimate::DataModel::Elements::AndJunction, Archimate::DataModel::Elements::ApplicationCollaboration, Archimate::DataModel::Elements::ApplicationComponent, Archimate::DataModel::Elements::ApplicationEvent, Archimate::DataModel::Elements::ApplicationFunction, Archimate::DataModel::Elements::ApplicationInteraction, Archimate::DataModel::Elements::ApplicationInterface, Archimate::DataModel::Elements::ApplicationProcess, Archimate::DataModel::Elements::ApplicationService, Archimate::DataModel::Elements::Artifact, Archimate::DataModel::Elements::Assessment, Archimate::DataModel::Elements::BusinessActor, Archimate::DataModel::Elements::BusinessCollaboration, Archimate::DataModel::Elements::BusinessEvent, Archimate::DataModel::Elements::BusinessFunction, Archimate::DataModel::Elements::BusinessInteraction, Archimate::DataModel::Elements::BusinessInterface, Archimate::DataModel::Elements::BusinessObject, Archimate::DataModel::Elements::BusinessProcess, Archimate::DataModel::Elements::BusinessRole, Archimate::DataModel::Elements::BusinessService, Archimate::DataModel::Elements::Capability, Archimate::DataModel::Elements::CommunicationNetwork, Archimate::DataModel::Elements::CommunicationPath, Archimate::DataModel::Elements::Constraint, Archimate::DataModel::Elements::Contract, Archimate::DataModel::Elements::CourseOfAction, Archimate::DataModel::Elements::DataObject, Archimate::DataModel::Elements::Deliverable, Archimate::DataModel::Elements::Device, Archimate::DataModel::Elements::DistributionNetwork, Archimate::DataModel::Elements::Driver, Archimate::DataModel::Elements::Equipment, Archimate::DataModel::Elements::Facility, Archimate::DataModel::Elements::Gap, Archimate::DataModel::Elements::Goal, Archimate::DataModel::Elements::Grouping, Archimate::DataModel::Elements::ImplementationEvent, Archimate::DataModel::Elements::InfrastructureFunction, Archimate::DataModel::Elements::InfrastructureInterface, Archimate::DataModel::Elements::InfrastructureService, Archimate::DataModel::Elements::Location, Archimate::DataModel::Elements::Material, Archimate::DataModel::Elements::Meaning, Archimate::DataModel::Elements::Network, Archimate::DataModel::Elements::Node, Archimate::DataModel::Elements::OrJunction, Archimate::DataModel::Elements::Outcome, Archimate::DataModel::Elements::Path, Archimate::DataModel::Elements::Plateau, Archimate::DataModel::Elements::Principle, Archimate::DataModel::Elements::Product, Archimate::DataModel::Elements::Representation, Archimate::DataModel::Elements::Requirement, Archimate::DataModel::Elements::Resource, Archimate::DataModel::Elements::Stakeholder, Archimate::DataModel::Elements::SystemSoftware, Archimate::DataModel::Elements::TechnologyCollaboration, Archimate::DataModel::Elements::TechnologyEvent, Archimate::DataModel::Elements::TechnologyFunction, Archimate::DataModel::Elements::TechnologyInteraction, Archimate::DataModel::Elements::TechnologyInterface, Archimate::DataModel::Elements::TechnologyObject, Archimate::DataModel::Elements::TechnologyProcess, Archimate::DataModel::Elements::TechnologyService, Archimate::DataModel::Elements::Value, Archimate::DataModel::Elements::WorkPackage

Constant Summary collapse

LAYER =
Layers::None

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RelationshipReferences

define_source_relationship_creation_method, define_target_relationship_creation_method, define_typed_elements_method, define_typed_relationships_method, define_typed_targeted_elements_method, define_typed_targeted_relationships_method, included, #relationships, #source_relationships, #target_relationships

Methods included from Referenceable

#add_reference, #destroy, #model, #references, #remove_reference, #replace_item_with, #replace_with

Methods included from Comparison

#==, #[], #dig, #each, #hash, included, #initialize, #inspect, #pretty_print, #to_h

Instance Attribute Details

#documentationPreservedLangString, NilClass

Returns:



25
# File 'lib/archimate/data_model/element.rb', line 25

model_attr :documentation, writable: true, default: nil

#idString (readonly)

Returns:

  • (String)


19
# File 'lib/archimate/data_model/element.rb', line 19

model_attr :id

#nameLangString, NilClass (readonly)

Returns:



22
# File 'lib/archimate/data_model/element.rb', line 22

model_attr :name

#other_attributesArray<AnyAttribute> (readonly)

Returns:



31
# File 'lib/archimate/data_model/element.rb', line 31

model_attr :other_attributes, default: []

#other_elementsArray<AnyElement> (readonly)

Returns:



28
# File 'lib/archimate/data_model/element.rb', line 28

model_attr :other_elements, default: []

#propertiesArray<Property> (readonly)

Returns:



34
# File 'lib/archimate/data_model/element.rb', line 34

model_attr :properties, default: []

Instance Method Details

#classificationObject



44
45
46
# File 'lib/archimate/data_model/element.rb', line 44

def classification
  self.class::CLASSIFICATION
end

#diagramsObject

Diagrams that this entity is referenced in.



71
72
73
# File 'lib/archimate/data_model/element.rb', line 71

def diagrams
  references.select { |ref| ref.is_a?(Diagram) }
end

#layerObject



48
49
50
# File 'lib/archimate/data_model/element.rb', line 48

def layer
  self.class::LAYER
end

#merge(element) ⇒ Object

Copy any attributes/docs, etc. from each of the others into the original.

1. Child `label`s with different `xml:lang` attribute values
2. Child `documentation` (and different `xml:lang` attribute values)
3. Child `properties`
4. Any other elements


57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/archimate/data_model/element.rb', line 57

def merge(element)
  if !documentation
    self.documentation = element.documentation
  elsif documentation != element.documentation
    documentation.merge(element.documentation)
  end
  element.properties.each do |property|
    unless properties.find { |my_prop| my_prop.property_definition.name == property.property_definition.name && my_prop.value == property.value}
      properties << property
    end
  end
end

#to_sObject



36
37
38
# File 'lib/archimate/data_model/element.rb', line 36

def to_s
  Archimate::Color.layer_color(layer, "#{type}<#{id}>[#{name}]")
end

#typeObject



40
41
42
# File 'lib/archimate/data_model/element.rb', line 40

def type
  self.class.name.split("::").last
end