archimate 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +1 -1
- data/Gemfile +1 -0
- data/README.md +10 -55
- data/Rakefile +19 -1
- data/archimate.gemspec +16 -14
- data/bin/archimate +12 -0
- data/lib/archimate/cli/archi.rb +38 -19
- data/lib/archimate/cli/cleanup.rb +41 -25
- data/lib/archimate/cli/duper.rb +0 -1
- data/lib/archimate/cli/mapper.rb +53 -40
- data/lib/archimate/cli/svger.rb +33 -4
- data/lib/archimate/core_refinements.rb +41 -0
- data/lib/archimate/data_model/bounds.rb +14 -4
- data/lib/archimate/data_model/comparison.rb +3 -27
- data/lib/archimate/data_model/connection.rb +26 -11
- data/lib/archimate/data_model/diagram.rb +17 -10
- data/lib/archimate/data_model/element.rb +21 -9
- data/lib/archimate/data_model/elements.rb +24 -18
- data/lib/archimate/data_model/lang_string.rb +34 -10
- data/lib/archimate/data_model/layer.rb +6 -0
- data/lib/archimate/data_model/location.rb +10 -13
- data/lib/archimate/data_model/model.rb +55 -43
- data/lib/archimate/data_model/organization.rb +21 -5
- data/lib/archimate/data_model/property.rb +0 -6
- data/lib/archimate/data_model/referenceable.rb +29 -3
- data/lib/archimate/data_model/referenceable_list.rb +34 -14
- data/lib/archimate/data_model/relationship.rb +29 -8
- data/lib/archimate/data_model/relationship_references.rb +115 -6
- data/lib/archimate/data_model/relationships.rb +15 -0
- data/lib/archimate/data_model/view_node.rb +20 -13
- data/lib/archimate/data_model/viewpoint.rb +13 -1
- data/lib/archimate/data_model/viewpoints.rb +416 -0
- data/lib/archimate/data_model.rb +7 -1
- data/lib/archimate/derived_relations.rb +2 -11
- data/lib/archimate/export/cypher.rb +6 -5
- data/lib/archimate/file_format.rb +1 -0
- data/lib/archimate/file_formats/archi_file_reader.rb +11 -1
- data/lib/archimate/file_formats/archi_file_writer.rb +15 -46
- data/lib/archimate/file_formats/archi_file_writer_4.rb +14 -0
- data/lib/archimate/file_formats/model_exchange_file_reader.rb +2 -1
- data/lib/archimate/file_formats/model_exchange_file_writer_21.rb +1 -0
- data/lib/archimate/file_formats/sax/archi/diagram.rb +53 -13
- data/lib/archimate/file_formats/sax/archi/location.rb +1 -3
- data/lib/archimate/file_formats/sax/model_exchange_file/diagram.rb +13 -2
- data/lib/archimate/file_formats/sax.rb +1 -0
- data/lib/archimate/file_formats/serializer/archi/archi_file_writer.rb +63 -0
- data/lib/archimate/file_formats/serializer/archi/archi_file_writer_3.rb +18 -0
- data/lib/archimate/file_formats/serializer/archi/archi_file_writer_4.rb +18 -0
- data/lib/archimate/file_formats/serializer/archi/bounds.rb +2 -2
- data/lib/archimate/file_formats/serializer/archi/connection.rb +24 -13
- data/lib/archimate/file_formats/serializer/archi/diagram.rb +3 -3
- data/lib/archimate/file_formats/serializer/archi/element.rb +2 -2
- data/lib/archimate/file_formats/serializer/archi/organization.rb +1 -1
- data/lib/archimate/file_formats/serializer/archi/property.rb +1 -1
- data/lib/archimate/file_formats/serializer/archi/relationship.rb +2 -2
- data/lib/archimate/file_formats/serializer/archi/view_node.rb +20 -22
- data/lib/archimate/file_formats/serializer/archi/viewpoint3.rb +43 -0
- data/lib/archimate/file_formats/serializer/archi/viewpoint4.rb +41 -0
- data/lib/archimate/file_formats/serializer/model_exchange_file/style.rb +3 -7
- data/lib/archimate/file_formats/serializer/model_exchange_file/v21/diagram.rb +3 -3
- data/lib/archimate/file_formats/serializer/model_exchange_file/v21/model.rb +9 -2
- data/lib/archimate/file_formats/serializer/model_exchange_file/v21/view_node.rb +1 -1
- data/lib/archimate/file_formats/serializer/model_exchange_file/v21/viewpoint.rb +23 -0
- data/lib/archimate/file_formats/serializer/model_exchange_file/v30/diagram.rb +3 -3
- data/lib/archimate/file_formats/serializer/model_exchange_file/v30/model.rb +5 -7
- data/lib/archimate/file_formats/serializer/model_exchange_file/v30/view_node.rb +3 -3
- data/lib/archimate/file_formats/serializer/writer.rb +0 -5
- data/lib/archimate/file_formats/serializer.rb +6 -2
- data/lib/archimate/lint/duplicate_entities.rb +5 -5
- data/lib/archimate/lint/linter.rb +4 -4
- data/lib/archimate/maybe_io.rb +3 -2
- data/lib/archimate/svg/archimate.css +19 -21
- data/lib/archimate/svg/connection.rb +1 -1
- data/lib/archimate/svg/diagram.rb +1 -6
- data/lib/archimate/svg/entity/application_component.rb +9 -3
- data/lib/archimate/svg/entity/constraint.rb +0 -1
- data/lib/archimate/svg/entity/contract.rb +9 -0
- data/lib/archimate/svg/entity/data_entity.rb +1 -1
- data/lib/archimate/svg/entity/device.rb +1 -1
- data/lib/archimate/svg/entity/event_entity.rb +24 -7
- data/lib/archimate/svg/entity/group.rb +23 -4
- data/lib/archimate/svg/entity/grouping.rb +37 -0
- data/lib/archimate/svg/entity/interface_entity.rb +1 -1
- data/lib/archimate/svg/entity/node.rb +1 -1
- data/lib/archimate/svg/entity/outcome.rb +0 -1
- data/lib/archimate/svg/entity/principle.rb +0 -1
- data/lib/archimate/svg/entity/process_entity.rb +1 -1
- data/lib/archimate/svg/entity/requirement.rb +0 -1
- data/lib/archimate/svg/entity/service_entity.rb +6 -13
- data/lib/archimate/svg/entity.rb +1 -0
- data/lib/archimate/svg/entity_factory.rb +9 -5
- data/lib/archimate/svg/path.rb +57 -46
- data/lib/archimate/svg/point.rb +4 -0
- data/lib/archimate/svg/segment.rb +30 -0
- data/lib/archimate/svg/svg_template.svg.erb +11 -3
- data/lib/archimate/svg/view_node.rb +22 -0
- data/lib/archimate/version.rb +1 -1
- data/lib/archimate.rb +3 -2
- metadata +54 -54
- data/exe/archidiff +0 -7
- data/exe/archidiff-summary +0 -7
- data/exe/archimerge +0 -7
- data/exe/fmtxml +0 -7
- data/lib/archimate/data_model/viewpoint_type.rb +0 -389
- data/lib/archimate/file_formats/serializer/archi/location.rb +0 -26
- data/lib/archimate/file_formats/serializer/archi/viewpoint_type.rb +0 -45
- data/lib/archimate/svg/child.rb +0 -29
@@ -0,0 +1,416 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "ruby-enum"
|
4
|
+
|
5
|
+
module Archimate
|
6
|
+
module DataModel
|
7
|
+
# This module contains an enumeration of built-in ArchiMate viewpoint
|
8
|
+
# types. These viewpoints are a summary of the viewpoint types defined
|
9
|
+
# in ArchiMate versions 2 and 3.
|
10
|
+
class Viewpoints
|
11
|
+
include Ruby::Enum
|
12
|
+
|
13
|
+
# Basic Viewpoints
|
14
|
+
define :Introductory, Viewpoint.new(
|
15
|
+
id: "VIEWPOINT-INTRODUCTORY",
|
16
|
+
name: "Introductory",
|
17
|
+
allowed_element_types: Elements.core_elements,
|
18
|
+
allowed_relationship_types: Relationships.classes
|
19
|
+
)
|
20
|
+
|
21
|
+
# Category:Composition Viewpoints that defines internal compositions and aggregations of elements.
|
22
|
+
define :Organization, Viewpoint.new(
|
23
|
+
id: "VIEWPOINT-ORGANIZATION",
|
24
|
+
name: "Organization",
|
25
|
+
allowed_element_types: ConnectorType.values + [
|
26
|
+
Elements::BusinessActor, Elements::BusinessCollaboration,
|
27
|
+
Elements::BusinessInterface, Elements::BusinessRole,
|
28
|
+
Elements::Location
|
29
|
+
],
|
30
|
+
allowed_relationship_types: Relationships.default - [Relationships::Access, Relationships::Realization]
|
31
|
+
)
|
32
|
+
|
33
|
+
define :Application_platform, Viewpoint.new(
|
34
|
+
id: "VIEWPOINT-APPLICATION_PLATFORM",
|
35
|
+
name: "Application Platform",
|
36
|
+
allowed_element_types: Elements.core_elements,
|
37
|
+
allowed_relationship_types: Relationships.classes
|
38
|
+
)
|
39
|
+
|
40
|
+
define :Information_structure, Viewpoint.new(
|
41
|
+
id: "VIEWPOINT-INFORMATION_STRUCTURE",
|
42
|
+
name: "Information Structure",
|
43
|
+
allowed_element_types: ConnectorType.values + [
|
44
|
+
Elements::Artifact, Elements::BusinessObject, Elements::DataObject,
|
45
|
+
Elements::Meaning, Elements::Representation
|
46
|
+
],
|
47
|
+
allowed_relationship_types: Relationships.default - [Relationships::Assignment, Relationships::Serving]
|
48
|
+
)
|
49
|
+
|
50
|
+
define :Technology, Viewpoint.new(
|
51
|
+
id: "VIEWPOINT-TECHNOLOGY",
|
52
|
+
name: "Technology",
|
53
|
+
allowed_element_types: Elements.core_elements,
|
54
|
+
allowed_relationship_types: Relationships.classes
|
55
|
+
)
|
56
|
+
|
57
|
+
define :Layered, Viewpoint.new(
|
58
|
+
id: "VIEWPOINT-LAYERED",
|
59
|
+
name: "Layered",
|
60
|
+
allowed_element_types: Elements.classes + ConnectorType.values,
|
61
|
+
allowed_relationship_types: Relationships.classes
|
62
|
+
)
|
63
|
+
|
64
|
+
define :Physical, Viewpoint.new(
|
65
|
+
id: "VIEWPOINT-PHYSICAL",
|
66
|
+
name: "Physical",
|
67
|
+
allowed_element_types: Elements.core_elements,
|
68
|
+
allowed_relationship_types: Relationships.classes
|
69
|
+
)
|
70
|
+
|
71
|
+
# Category:Support Viewpoints where you are looking at elements that are
|
72
|
+
# supported by other elements. Typically from one layer and upwards to an
|
73
|
+
# above layer.
|
74
|
+
define :Product, Viewpoint.new(
|
75
|
+
id: "VIEWPOINT-PRODUCT",
|
76
|
+
name: "Product",
|
77
|
+
allowed_element_types: ConnectorType.values + [
|
78
|
+
Elements::ApplicationComponent, Elements::ApplicationInterface,
|
79
|
+
Elements::ApplicationService, Elements::BusinessActor,
|
80
|
+
Elements::BusinessEvent, Elements::BusinessFunction,
|
81
|
+
Elements::BusinessInteraction, Elements::BusinessInterface,
|
82
|
+
Elements::BusinessProcess, Elements::BusinessRole,
|
83
|
+
Elements::BusinessService, Elements::Contract,
|
84
|
+
Elements::Product, Elements::Value
|
85
|
+
],
|
86
|
+
allowed_relationship_types: Relationships.default
|
87
|
+
)
|
88
|
+
|
89
|
+
define :Application_usage, Viewpoint.new(
|
90
|
+
id: "VIEWPOINT-APPLICATION_USAGE",
|
91
|
+
name: "Application Usage",
|
92
|
+
allowed_element_types: ConnectorType.values + [
|
93
|
+
Elements::ApplicationCollaboration, Elements::ApplicationComponent,
|
94
|
+
Elements::ApplicationInterface, Elements::ApplicationService,
|
95
|
+
Elements::BusinessEvent, Elements::BusinessFunction,
|
96
|
+
Elements::BusinessInteraction, Elements::BusinessObject,
|
97
|
+
Elements::BusinessProcess, Elements::BusinessRole,
|
98
|
+
Elements::DataObject
|
99
|
+
],
|
100
|
+
allowed_relationship_types: Relationships.default
|
101
|
+
)
|
102
|
+
|
103
|
+
define :Technology_usage, Viewpoint.new(
|
104
|
+
id: "VIEWPOINT-TECHNOLOGY_USAGE",
|
105
|
+
name: "Technology Usage",
|
106
|
+
allowed_element_types: Elements.core_elements,
|
107
|
+
allowed_relationship_types: Relationships.classes
|
108
|
+
)
|
109
|
+
|
110
|
+
# Category:Cooperation Towards peer elements which cooperate with each
|
111
|
+
# other. Typically across aspects.
|
112
|
+
define :Business_process_cooperation, Viewpoint.new(
|
113
|
+
id: "VIEWPOINT-BUSINESS_PROCESS_COOPERATION",
|
114
|
+
name: "Business Process Cooperation",
|
115
|
+
allowed_element_types: ConnectorType.values + [
|
116
|
+
Elements::ApplicationService, Elements::BusinessActor,
|
117
|
+
Elements::BusinessCollaboration, Elements::BusinessEvent,
|
118
|
+
Elements::BusinessFunction, Elements::BusinessInteraction,
|
119
|
+
Elements::BusinessObject, Elements::BusinessProcess,
|
120
|
+
Elements::BusinessRole, Elements::BusinessService,
|
121
|
+
Elements::Location, Elements::Representation
|
122
|
+
],
|
123
|
+
allowed_relationship_types: Relationships.default
|
124
|
+
)
|
125
|
+
|
126
|
+
define :Application_cooperation, Viewpoint.new(
|
127
|
+
id: "VIEWPOINT-APPLICATION_COOPERATION",
|
128
|
+
name: "Application Cooperation",
|
129
|
+
allowed_element_types: ConnectorType.values + [
|
130
|
+
Elements::ApplicationCollaboration, Elements::ApplicationComponent,
|
131
|
+
Elements::ApplicationFunction, Elements::ApplicationInteraction,
|
132
|
+
Elements::ApplicationInterface, Elements::ApplicationService,
|
133
|
+
Elements::DataObject, Elements::Location
|
134
|
+
],
|
135
|
+
allowed_relationship_types: Relationships.default
|
136
|
+
)
|
137
|
+
|
138
|
+
# Category:Realization Viewpoints where you are looking at elements that
|
139
|
+
# realize other elements. Typically from one layer and downwards to a
|
140
|
+
# below layer.
|
141
|
+
define :Service_realization, Viewpoint.new(
|
142
|
+
id: "VIEWPOINT-SERVICE_REALIZATION",
|
143
|
+
name: "Service Realization",
|
144
|
+
allowed_element_types: ConnectorType.values + [
|
145
|
+
Elements::ApplicationCollaboration, Elements::ApplicationComponent,
|
146
|
+
Elements::ApplicationService, Elements::BusinessActor,
|
147
|
+
Elements::BusinessCollaboration, Elements::BusinessEvent,
|
148
|
+
Elements::BusinessFunction, Elements::BusinessInteraction,
|
149
|
+
Elements::BusinessObject, Elements::BusinessProcess,
|
150
|
+
Elements::BusinessRole, Elements::BusinessService,
|
151
|
+
Elements::DataObject
|
152
|
+
],
|
153
|
+
allowed_relationship_types: Relationships.default
|
154
|
+
)
|
155
|
+
|
156
|
+
define :Implementation_and_deployment, Viewpoint.new(
|
157
|
+
id: "VIEWPOINT-IMPLEMENTATION_AND_DEPLOYMENT",
|
158
|
+
name: "Implementation and Deployment",
|
159
|
+
allowed_element_types: ConnectorType.values + [
|
160
|
+
Elements::ApplicationCollaboration, Elements::ApplicationComponent,
|
161
|
+
Elements::Artifact, Elements::CommunicationPath,
|
162
|
+
Elements::DataObject, Elements::Device,
|
163
|
+
Elements::InfrastructureService, Elements::Network, Elements::Node,
|
164
|
+
Elements::SystemSoftware
|
165
|
+
],
|
166
|
+
allowed_relationship_types: Relationships.default
|
167
|
+
)
|
168
|
+
|
169
|
+
define :Goal_realization, Viewpoint.new(
|
170
|
+
id: "VIEWPOINT-GOAL_REALIZATION",
|
171
|
+
name: "Goal Realization",
|
172
|
+
allowed_element_types: [
|
173
|
+
Elements::Constraint, Elements::Goal, Elements::Principle,
|
174
|
+
Elements::Requirement
|
175
|
+
],
|
176
|
+
allowed_relationship_types: [
|
177
|
+
Relationships::Aggregation, Relationships::Association,
|
178
|
+
Relationships::Composition, Relationships::Influence,
|
179
|
+
Relationships::Realization, Relationships::Specialization
|
180
|
+
]
|
181
|
+
)
|
182
|
+
|
183
|
+
define :Goal_contribution, Viewpoint.new(
|
184
|
+
id: "VIEWPOINT-GOAL_CONTRIBUTION",
|
185
|
+
name: "Goal Contribution",
|
186
|
+
allowed_element_types: [
|
187
|
+
Elements::Constraint, Elements::Goal, Elements::Principle,
|
188
|
+
Elements::Requirement
|
189
|
+
],
|
190
|
+
allowed_relationship_types: [
|
191
|
+
Relationships::Aggregation, Relationships::Association,
|
192
|
+
Relationships::Composition, Relationships::Influence,
|
193
|
+
Relationships::Realization, Relationships::Specialization
|
194
|
+
]
|
195
|
+
)
|
196
|
+
|
197
|
+
define :Principles, Viewpoint.new(
|
198
|
+
id: "VIEWPOINT-PRINCIPLES",
|
199
|
+
name: "Principles",
|
200
|
+
allowed_element_types: [Elements::Goal, Elements::Principle],
|
201
|
+
allowed_relationship_types: [
|
202
|
+
Relationships::Aggregation, Relationships::Association,
|
203
|
+
Relationships::Composition, Relationships::Influence,
|
204
|
+
Relationships::Realization, Relationships::Specialization
|
205
|
+
]
|
206
|
+
)
|
207
|
+
|
208
|
+
define :Requirements_realization, Viewpoint.new(
|
209
|
+
id: "VIEWPOINT-REQUIREMENTS_REALIZATION",
|
210
|
+
name: "Requirements Realization",
|
211
|
+
allowed_element_types: Elements.core_elements + ConnectorType.values + [
|
212
|
+
Elements::Constraint, Elements::Goal, Elements::Requirement
|
213
|
+
],
|
214
|
+
allowed_relationship_types: Relationships.default
|
215
|
+
)
|
216
|
+
|
217
|
+
define :Motivation, Viewpoint.new(
|
218
|
+
id: "VIEWPOINT-MOTIVATION",
|
219
|
+
name: "Motivation",
|
220
|
+
allowed_element_types: [
|
221
|
+
Elements::Assessment, Elements::Constraint, Elements::Driver,
|
222
|
+
Elements::Goal, Elements::Principle, Elements::Requirement,
|
223
|
+
Elements::Stakeholder
|
224
|
+
],
|
225
|
+
allowed_relationship_types: [
|
226
|
+
Relationships::Aggregation, Relationships::Association,
|
227
|
+
Relationships::Composition, Relationships::Flow,
|
228
|
+
Relationships::Influence, Relationships::Realization,
|
229
|
+
Relationships::Specialization
|
230
|
+
]
|
231
|
+
)
|
232
|
+
|
233
|
+
# Strategy Viewpoints
|
234
|
+
define :Strategy, Viewpoint.new(
|
235
|
+
id: "VIEWPOINT-STRATEGY",
|
236
|
+
name: "Strategy",
|
237
|
+
allowed_element_types: Elements.core_elements,
|
238
|
+
allowed_relationship_types: Relationships.classes
|
239
|
+
)
|
240
|
+
|
241
|
+
define :Capability_map, Viewpoint.new(
|
242
|
+
id: "VIEWPOINT-CAPABILITY_MAP",
|
243
|
+
name: "Capability Map",
|
244
|
+
allowed_element_types: Elements.core_elements,
|
245
|
+
allowed_relationship_types: Relationships.classes
|
246
|
+
)
|
247
|
+
|
248
|
+
define :Outcome_realization, Viewpoint.new(
|
249
|
+
id: "VIEWPOINT-OUTCOME_REALIZATION",
|
250
|
+
name: "Outcome Realization",
|
251
|
+
allowed_element_types: Elements.core_elements,
|
252
|
+
allowed_relationship_types: Relationships.classes
|
253
|
+
)
|
254
|
+
|
255
|
+
define :Resource_map, Viewpoint.new(
|
256
|
+
id: "VIEWPOINT-RESOURCE_MAP",
|
257
|
+
name: "Resource Map",
|
258
|
+
allowed_element_types: Elements.core_elements,
|
259
|
+
allowed_relationship_types: Relationships.classes
|
260
|
+
)
|
261
|
+
|
262
|
+
# Implementation and Migration Viewpoints
|
263
|
+
define :Project, Viewpoint.new(
|
264
|
+
id: "VIEWPOINT-PROJECT",
|
265
|
+
name: "Project",
|
266
|
+
allowed_element_types: ConnectorType.values + [
|
267
|
+
Elements::BusinessActor, Elements::BusinessRole,
|
268
|
+
Elements::Deliverable, Elements::Goal, Elements::WorkPackage
|
269
|
+
],
|
270
|
+
allowed_relationship_types: Relationships.default - [Relationships::Access]
|
271
|
+
)
|
272
|
+
|
273
|
+
define :Migration, Viewpoint.new(
|
274
|
+
id: "VIEWPOINT-MIGRATION",
|
275
|
+
name: "Migration",
|
276
|
+
allowed_element_types: ConnectorType.values + [Elements::Gap, Elements::Plateau],
|
277
|
+
allowed_relationship_types: [
|
278
|
+
Relationships::AndJunction, Relationships::Association,
|
279
|
+
Relationships::Composition, Relationships::Flow,
|
280
|
+
Relationships::Junction, Relationships::OrJunction,
|
281
|
+
Relationships::Triggering
|
282
|
+
]
|
283
|
+
)
|
284
|
+
|
285
|
+
define :Implementation_and_migration, Viewpoint.new(
|
286
|
+
id: "VIEWPOINT-IMPLEMENTATION_AND_MIGRATION",
|
287
|
+
name: "Implementation and Migration",
|
288
|
+
allowed_element_types: Elements.core_elements + ConnectorType.values + [
|
289
|
+
Elements::Location, Elements::Requirement, Elements::Constraint,
|
290
|
+
Elements::Goal, Elements::BusinessRole, Elements::WorkPackage,
|
291
|
+
Elements::Deliverable, Elements::BusinessActor, Elements::Plateau,
|
292
|
+
Elements::Gap
|
293
|
+
],
|
294
|
+
allowed_relationship_types: Relationships.default
|
295
|
+
)
|
296
|
+
|
297
|
+
# Other Viewpoints
|
298
|
+
define :Stakeholder, Viewpoint.new(
|
299
|
+
id: "VIEWPOINT-STAKEHOLDER",
|
300
|
+
name: "Stakeholder",
|
301
|
+
allowed_element_types: [
|
302
|
+
Elements::Assessment, Elements::Driver, Elements::Goal,
|
303
|
+
Elements::Stakeholder
|
304
|
+
],
|
305
|
+
allowed_relationship_types: [
|
306
|
+
Relationships::Aggregation, Relationships::Association,
|
307
|
+
Relationships::Composition, Relationships::Influence,
|
308
|
+
Relationships::Specialization
|
309
|
+
]
|
310
|
+
)
|
311
|
+
|
312
|
+
# Other older viewpoints
|
313
|
+
define :Actor_cooperation, Viewpoint.new(
|
314
|
+
id: "VIEWPOINT-ACTOR_COOPERATION",
|
315
|
+
name: "Actor Co-operation",
|
316
|
+
allowed_element_types: ConnectorType.values + [
|
317
|
+
Elements::ApplicationComponent, Elements::ApplicationInterface,
|
318
|
+
Elements::ApplicationService, Elements::BusinessActor,
|
319
|
+
Elements::BusinessCollaboration, Elements::BusinessInterface,
|
320
|
+
Elements::BusinessRole, Elements::BusinessService
|
321
|
+
],
|
322
|
+
allowed_relationship_types: Relationships.default - [Relationships::Access]
|
323
|
+
)
|
324
|
+
|
325
|
+
define :Business_function, Viewpoint.new(
|
326
|
+
id: "VIEWPOINT-BUSINESS_FUNCTION",
|
327
|
+
name: "Business Function",
|
328
|
+
allowed_element_types: ConnectorType.values + [
|
329
|
+
Elements::BusinessActor, Elements::BusinessFunction,
|
330
|
+
Elements::BusinessRole
|
331
|
+
],
|
332
|
+
allowed_relationship_types: Relationships.default - [Relationships::Access, Relationships::Realization]
|
333
|
+
)
|
334
|
+
|
335
|
+
define :Business_process, Viewpoint.new(
|
336
|
+
id: "VIEWPOINT-BUSINESS_PROCESS",
|
337
|
+
name: "Business Process",
|
338
|
+
allowed_element_types: ConnectorType.values + [
|
339
|
+
Elements::ApplicationService, Elements::BusinessActor,
|
340
|
+
Elements::BusinessCollaboration, Elements::BusinessEvent,
|
341
|
+
Elements::BusinessFunction, Elements::BusinessInteraction,
|
342
|
+
Elements::BusinessObject, Elements::BusinessProcess,
|
343
|
+
Elements::BusinessRole, Elements::BusinessService,
|
344
|
+
Elements::Location, Elements::Representation
|
345
|
+
],
|
346
|
+
allowed_relationship_types: Relationships.default
|
347
|
+
)
|
348
|
+
|
349
|
+
define :Application_behavior, Viewpoint.new(
|
350
|
+
id: "VIEWPOINT-APPLICATION_BEHAVIOR",
|
351
|
+
name: "Application Behavior",
|
352
|
+
allowed_element_types: ConnectorType.values + [
|
353
|
+
Elements::ApplicationCollaboration, Elements::ApplicationComponent,
|
354
|
+
Elements::ApplicationFunction, Elements::ApplicationInteraction,
|
355
|
+
Elements::ApplicationInterface, Elements::ApplicationService,
|
356
|
+
Elements::DataObject
|
357
|
+
],
|
358
|
+
allowed_relationship_types: Relationships.default
|
359
|
+
)
|
360
|
+
|
361
|
+
define :Application_structure, Viewpoint.new(
|
362
|
+
id: "VIEWPOINT-APPLICATION_STRUCTURE",
|
363
|
+
name: "Application Structure",
|
364
|
+
allowed_element_types: ConnectorType.values + [
|
365
|
+
Elements::ApplicationCollaboration, Elements::ApplicationComponent,
|
366
|
+
Elements::ApplicationInterface, Elements::DataObject
|
367
|
+
],
|
368
|
+
allowed_relationship_types: Relationships.default - [Relationships::Realization]
|
369
|
+
)
|
370
|
+
|
371
|
+
define :Infrastructure, Viewpoint.new(
|
372
|
+
id: "VIEWPOINT-INFRASTRUCTURE",
|
373
|
+
name: "Infrastructure",
|
374
|
+
allowed_element_types: ConnectorType.values + [
|
375
|
+
Elements::Artifact, Elements::CommunicationPath, Elements::Device,
|
376
|
+
Elements::InfrastructureFunction, Elements::InfrastructureInterface,
|
377
|
+
Elements::InfrastructureService, Elements::Location,
|
378
|
+
Elements::Network, Elements::Node, Elements::SystemSoftware
|
379
|
+
],
|
380
|
+
allowed_relationship_types: Relationships.default
|
381
|
+
)
|
382
|
+
|
383
|
+
define :Infrastructure_usage, Viewpoint.new(
|
384
|
+
id: "VIEWPOINT-INFRASTRUCTURE_USAGE",
|
385
|
+
name: "Infrastructure Usage",
|
386
|
+
allowed_element_types: ConnectorType.values + [
|
387
|
+
Elements::ApplicationComponent, Elements::ApplicationFunction,
|
388
|
+
Elements::CommunicationPath, Elements::Device,
|
389
|
+
Elements::InfrastructureFunction, Elements::InfrastructureInterface,
|
390
|
+
Elements::InfrastructureService, Elements::Network, Elements::Node,
|
391
|
+
Elements::SystemSoftware
|
392
|
+
],
|
393
|
+
allowed_relationship_types: Relationships.default
|
394
|
+
)
|
395
|
+
|
396
|
+
define :Landscape_map, Viewpoint.new(
|
397
|
+
id: "VIEWPOINT-LANDSCAPE_MAP",
|
398
|
+
name: "Landscape Map",
|
399
|
+
allowed_element_types: Elements.classes + ConnectorType.values,
|
400
|
+
allowed_relationship_types: Relationships.classes
|
401
|
+
)
|
402
|
+
|
403
|
+
def self.[](idx)
|
404
|
+
values[idx]
|
405
|
+
end
|
406
|
+
|
407
|
+
def self.with_name(name)
|
408
|
+
values.find { |vp| vp.name == name }
|
409
|
+
end
|
410
|
+
|
411
|
+
VIEWPOINT_CONTENT_ENUM = %w[Details Coherence Overview].freeze
|
412
|
+
|
413
|
+
VIEWPOINT_PURPOSE_ENUM = %w[Designing Deciding Informing].freeze
|
414
|
+
end
|
415
|
+
end
|
416
|
+
end
|
data/lib/archimate/data_model.rb
CHANGED
@@ -30,13 +30,19 @@ module Archimate
|
|
30
30
|
require 'archimate/data_model/relationship_references'
|
31
31
|
require 'archimate/data_model/element'
|
32
32
|
require 'archimate/data_model/elements'
|
33
|
-
require 'archimate/data_model/viewpoint_type'
|
34
33
|
require 'archimate/data_model/concern'
|
35
34
|
require 'archimate/data_model/viewpoint'
|
35
|
+
require 'archimate/data_model/viewpoints'
|
36
36
|
require 'archimate/data_model/location'
|
37
37
|
require 'archimate/data_model/connection'
|
38
38
|
require 'archimate/data_model/view_node'
|
39
39
|
require 'archimate/data_model/diagram'
|
40
40
|
require 'archimate/data_model/model'
|
41
|
+
|
42
|
+
# Returns a lambda that matches entities with the given name
|
43
|
+
def by_name(name)
|
44
|
+
->(entity) { entity.name == name }
|
45
|
+
end
|
46
|
+
module_function :by_name
|
41
47
|
end
|
42
48
|
end
|
@@ -117,20 +117,11 @@ module Archimate
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
-
def element_by_name(name)
|
121
|
-
@model.elements.find { |el| el.name.to_s == name.to_s }
|
122
|
-
end
|
123
|
-
|
124
|
-
def element_relationships(el)
|
125
|
-
@model
|
126
|
-
.relationships
|
127
|
-
.select { |rel| rel.source.id == el.id }
|
128
|
-
end
|
129
|
-
|
130
120
|
private
|
131
121
|
|
132
122
|
def concrete_relationships(el, relation_filter, from_path)
|
133
|
-
|
123
|
+
el
|
124
|
+
.source_relationships
|
134
125
|
.select(&relation_filter)
|
135
126
|
.reject { |rel| from_path.include?(rel) }
|
136
127
|
end
|
@@ -49,7 +49,7 @@ module Archimate
|
|
49
49
|
elements.each do |element|
|
50
50
|
props = add_docs(
|
51
51
|
{
|
52
|
-
layer: element.layer.
|
52
|
+
layer: element.layer.to_s,
|
53
53
|
name: element.name.to_s,
|
54
54
|
nodeId: element.id
|
55
55
|
}.merge(
|
@@ -99,11 +99,12 @@ module Archimate
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def source(rel)
|
102
|
-
"(s #{props(nodeId: rel.source)})"
|
102
|
+
"(s #{props(nodeId: rel.source.id)})"
|
103
103
|
end
|
104
104
|
|
105
|
-
def add_docs(h,
|
106
|
-
|
105
|
+
def add_docs(h, documentation)
|
106
|
+
return h unless documentation
|
107
|
+
t = documentation.to_s.strip
|
107
108
|
return h if t.empty?
|
108
109
|
h.merge(documentation: t)
|
109
110
|
end
|
@@ -121,7 +122,7 @@ module Archimate
|
|
121
122
|
end
|
122
123
|
|
123
124
|
def target(rel)
|
124
|
-
"(t #{props(nodeId: rel.target)})"
|
125
|
+
"(t #{props(nodeId: rel.target.id)})"
|
125
126
|
end
|
126
127
|
|
127
128
|
def write(str)
|
@@ -13,7 +13,17 @@ module Archimate
|
|
13
13
|
handler_factory = Sax::Archi::ArchiHandlerFactory.new
|
14
14
|
parser = Nokogiri::XML::SAX::Parser.new(Sax::Document.new(handler_factory))
|
15
15
|
parser.parse(@string_or_io)
|
16
|
-
parser.document.model
|
16
|
+
model = parser.document.model
|
17
|
+
model
|
18
|
+
.diagrams
|
19
|
+
.flat_map(&:connections)
|
20
|
+
.each do |connection|
|
21
|
+
connection.bendpoints.each do |bendpoint|
|
22
|
+
bendpoint.x += connection.start_location.x.to_i
|
23
|
+
bendpoint.y += connection.start_location.y.to_i
|
24
|
+
end
|
25
|
+
end
|
26
|
+
model
|
17
27
|
end
|
18
28
|
end
|
19
29
|
end
|
@@ -1,57 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
2
|
+
|
3
|
+
require "forwardable"
|
3
4
|
|
4
5
|
module Archimate
|
5
6
|
module FileFormats
|
6
|
-
class ArchiFileWriter
|
7
|
-
|
8
|
-
include Serializer::Archi::Connection
|
9
|
-
include Serializer::Archi::Diagram
|
10
|
-
include Serializer::Archi::Documentation
|
11
|
-
include Serializer::Archi::Element
|
12
|
-
include Serializer::Archi::Location
|
13
|
-
include Serializer::Archi::Model
|
14
|
-
include Serializer::Archi::Organization
|
15
|
-
include Serializer::Archi::Property
|
16
|
-
include Serializer::Archi::Relationship
|
17
|
-
include Serializer::Archi::ViewNode
|
7
|
+
class ArchiFileWriter
|
8
|
+
extend Forwardable
|
18
9
|
|
19
|
-
|
20
|
-
[' ', '
'],
|
21
|
-
['"', '"'],
|
22
|
-
['>', '>'],
|
23
|
-
['&', '&']
|
24
|
-
].freeze
|
10
|
+
def_delegators :@writer, :write
|
25
11
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
12
|
+
def self.write(model, output_io)
|
13
|
+
writer = new(model)
|
14
|
+
writer.write(output_io)
|
29
15
|
end
|
30
16
|
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
39
|
-
doc_str.gsub(
|
40
|
-
%r{<(/)?archimate:}, "<\\1"
|
41
|
-
).gsub(
|
42
|
-
%r{<(/)?model}, "<\\1archimate:model"
|
43
|
-
)
|
44
|
-
end
|
45
|
-
|
46
|
-
def write(archifile_io)
|
47
|
-
builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
48
|
-
serialize_model(xml, model)
|
49
|
-
end
|
50
|
-
archifile_io.write(
|
51
|
-
process_text(
|
52
|
-
builder.to_xml
|
53
|
-
)
|
54
|
-
)
|
17
|
+
def initialize(model)
|
18
|
+
@writer = case model.version
|
19
|
+
when /^3\./
|
20
|
+
Serializer::Archi::ArchiFileWriter3
|
21
|
+
else
|
22
|
+
Serializer::Archi::ArchiFileWriter4
|
23
|
+
end.new(model)
|
55
24
|
end
|
56
25
|
end
|
57
26
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Archimate
|
4
|
+
module FileFormats
|
5
|
+
class ArchiFileWriter4 < Serializer::Archi::ArchiFileWriter
|
6
|
+
include Serializer::Archi::Viewpoint4
|
7
|
+
|
8
|
+
def initialize(model)
|
9
|
+
super
|
10
|
+
@version = model.version || "4.0.0"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "nokogiri"
|
3
4
|
|
4
5
|
module Archimate
|
@@ -8,7 +9,7 @@ module Archimate
|
|
8
9
|
@string_or_io = doc
|
9
10
|
end
|
10
11
|
|
11
|
-
def parse
|
12
|
+
def parse
|
12
13
|
handler_factory = Sax::ModelExchangeFile::ModelExchangeHandlerFactory.new
|
13
14
|
parser = Nokogiri::XML::SAX::Parser.new(Sax::Document.new(handler_factory))
|
14
15
|
parser.parse(@string_or_io)
|
@@ -26,6 +26,7 @@ module Archimate
|
|
26
26
|
include Serializer::ModelExchangeFile::Relationship
|
27
27
|
include Serializer::ModelExchangeFile::Style
|
28
28
|
include Serializer::ModelExchangeFile::V21::ViewNode
|
29
|
+
include Serializer::ModelExchangeFile::V21::Viewpoint
|
29
30
|
|
30
31
|
def initialize(model)
|
31
32
|
super
|