Class: Archimate::DataModel::Element
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
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
#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
25
|
# File 'lib/archimate/data_model/element.rb', line 25
model_attr :documentation, writable: true, default: nil
|
#id ⇒ String
19
|
# File 'lib/archimate/data_model/element.rb', line 19
model_attr :id
|
22
|
# File 'lib/archimate/data_model/element.rb', line 22
model_attr :name
|
#other_attributes ⇒ Array<AnyAttribute>
31
|
# File 'lib/archimate/data_model/element.rb', line 31
model_attr :other_attributes, default: []
|
#other_elements ⇒ Array<AnyElement>
28
|
# File 'lib/archimate/data_model/element.rb', line 28
model_attr :other_elements, default: []
|
#properties ⇒ Array<Property>
34
|
# File 'lib/archimate/data_model/element.rb', line 34
model_attr :properties, default: []
|
Instance Method Details
#classification ⇒ Object
44
45
46
|
# File 'lib/archimate/data_model/element.rb', line 44
def classification
self.class::CLASSIFICATION
end
|
#diagrams ⇒ Object
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
|
#layer ⇒ Object
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_s ⇒ Object
36
37
38
|
# File 'lib/archimate/data_model/element.rb', line 36
def to_s
Archimate::Color.layer_color(layer, "#{type}<#{id}>[#{name}]")
end
|
#type ⇒ Object
40
41
42
|
# File 'lib/archimate/data_model/element.rb', line 40
def type
self.class.name.split("::").last
end
|