@documentation-robotics/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PYTHON_CLI_PARITY.md +265 -0
- package/PYTHON_CLI_STRUCTURE_UPDATE.md +246 -0
- package/README.md +926 -0
- package/biome.json +42 -0
- package/bunfig.toml +3 -0
- package/dist/ai/claude-client.js +71 -0
- package/dist/ai/claude-client.js.map +7 -0
- package/dist/ai/context-provider.js +129 -0
- package/dist/ai/context-provider.js.map +7 -0
- package/dist/ai/tools.js +231 -0
- package/dist/ai/tools.js.map +7 -0
- package/dist/cli.js +224 -0
- package/dist/cli.js.map +7 -0
- package/dist/commands/add.js +51 -0
- package/dist/commands/add.js.map +7 -0
- package/dist/commands/changeset.js +174 -0
- package/dist/commands/changeset.js.map +7 -0
- package/dist/commands/chat.js +111 -0
- package/dist/commands/chat.js.map +7 -0
- package/dist/commands/conformance.js +132 -0
- package/dist/commands/conformance.js.map +7 -0
- package/dist/commands/delete.js +31 -0
- package/dist/commands/delete.js.map +7 -0
- package/dist/commands/element.js +28 -0
- package/dist/commands/element.js.map +7 -0
- package/dist/commands/export.js +65 -0
- package/dist/commands/export.js.map +7 -0
- package/dist/commands/info.js +40 -0
- package/dist/commands/info.js.map +7 -0
- package/dist/commands/init.js +45 -0
- package/dist/commands/init.js.map +7 -0
- package/dist/commands/list.js +32 -0
- package/dist/commands/list.js.map +7 -0
- package/dist/commands/migrate.js +36 -0
- package/dist/commands/migrate.js.map +7 -0
- package/dist/commands/project.js +74 -0
- package/dist/commands/project.js.map +7 -0
- package/dist/commands/relationship.js +118 -0
- package/dist/commands/relationship.js.map +7 -0
- package/dist/commands/search.js +48 -0
- package/dist/commands/search.js.map +7 -0
- package/dist/commands/show.js +38 -0
- package/dist/commands/show.js.map +7 -0
- package/dist/commands/trace.js +60 -0
- package/dist/commands/trace.js.map +7 -0
- package/dist/commands/update.js +37 -0
- package/dist/commands/update.js.map +7 -0
- package/dist/commands/upgrade.js +152 -0
- package/dist/commands/upgrade.js.map +7 -0
- package/dist/commands/validate.js +71 -0
- package/dist/commands/validate.js.map +7 -0
- package/dist/commands/version.js +20 -0
- package/dist/commands/version.js.map +7 -0
- package/dist/commands/visualize.js +51 -0
- package/dist/commands/visualize.js.map +7 -0
- package/dist/core/active-changeset.js +52 -0
- package/dist/core/active-changeset.js.map +7 -0
- package/dist/core/changeset.js +244 -0
- package/dist/core/changeset.js.map +7 -0
- package/dist/core/dependency-tracker.js +322 -0
- package/dist/core/dependency-tracker.js.map +7 -0
- package/dist/core/element.js +65 -0
- package/dist/core/element.js.map +7 -0
- package/dist/core/layer.js +75 -0
- package/dist/core/layer.js.map +7 -0
- package/dist/core/manifest.js +57 -0
- package/dist/core/manifest.js.map +7 -0
- package/dist/core/migration-registry.js +131 -0
- package/dist/core/migration-registry.js.map +7 -0
- package/dist/core/model.js +455 -0
- package/dist/core/model.js.map +7 -0
- package/dist/core/projection-engine.js +288 -0
- package/dist/core/projection-engine.js.map +7 -0
- package/dist/core/reference-registry.js +188 -0
- package/dist/core/reference-registry.js.map +7 -0
- package/dist/core/relationship-registry.js +114 -0
- package/dist/core/relationship-registry.js.map +7 -0
- package/dist/core/relationships.js +78 -0
- package/dist/core/relationships.js.map +7 -0
- package/dist/export/archimate-exporter.js +111 -0
- package/dist/export/archimate-exporter.js.map +7 -0
- package/dist/export/export-manager.js +63 -0
- package/dist/export/export-manager.js.map +7 -0
- package/dist/export/graphml-exporter.js +39 -0
- package/dist/export/graphml-exporter.js.map +7 -0
- package/dist/export/index.js +17 -0
- package/dist/export/index.js.map +7 -0
- package/dist/export/json-schema-exporter.js +60 -0
- package/dist/export/json-schema-exporter.js.map +7 -0
- package/dist/export/markdown-exporter.js +99 -0
- package/dist/export/markdown-exporter.js.map +7 -0
- package/dist/export/openapi-exporter.js +85 -0
- package/dist/export/openapi-exporter.js.map +7 -0
- package/dist/export/plantuml-exporter.js +60 -0
- package/dist/export/plantuml-exporter.js.map +7 -0
- package/dist/export/types.js +36 -0
- package/dist/export/types.js.map +7 -0
- package/dist/schemas/bundled/01-motivation-layer.schema.json +942 -0
- package/dist/schemas/bundled/02-business-layer.schema.json +1293 -0
- package/dist/schemas/bundled/03-security-layer.schema.json +2177 -0
- package/dist/schemas/bundled/04-application-layer.schema.json +1328 -0
- package/dist/schemas/bundled/05-technology-layer.schema.json +1465 -0
- package/dist/schemas/bundled/06-api-layer.schema.json +1743 -0
- package/dist/schemas/bundled/07-data-model-layer.schema.json +1253 -0
- package/dist/schemas/bundled/08-datastore-layer.schema.json +892 -0
- package/dist/schemas/bundled/09-ux-layer.schema.json +1506 -0
- package/dist/schemas/bundled/10-navigation-layer.schema.json +843 -0
- package/dist/schemas/bundled/11-apm-observability-layer.schema.json +1430 -0
- package/dist/schemas/bundled/12-testing-layer.schema.json +1091 -0
- package/dist/schemas/bundled/common/layer-extensions.schema.json +266 -0
- package/dist/schemas/bundled/common/predicates.schema.json +493 -0
- package/dist/schemas/bundled/common/relationships.schema.json +791 -0
- package/dist/schemas/bundled/common/source-references.schema.json +71 -0
- package/dist/schemas/bundled/link-registry.json +1839 -0
- package/dist/schemas/bundled/link-registry.schema.json +339 -0
- package/dist/schemas/bundled/relationship-catalog.json +1302 -0
- package/dist/schemas/bundled/relationship-type.schema.json +221 -0
- package/dist/server/server.js +1207 -0
- package/dist/server/server.js.map +7 -0
- package/dist/server/telemetry-middleware.js +24 -0
- package/dist/server/telemetry-middleware.js.map +7 -0
- package/dist/telemetry/console-interceptor.js +34 -0
- package/dist/telemetry/console-interceptor.js.map +7 -0
- package/dist/telemetry/index.js +54 -0
- package/dist/telemetry/index.js.map +7 -0
- package/dist/telemetry/resilient-exporter.js +41 -0
- package/dist/telemetry/resilient-exporter.js.map +7 -0
- package/dist/telemetry/resilient-log-exporter.js +41 -0
- package/dist/telemetry/resilient-log-exporter.js.map +7 -0
- package/dist/telemetry/test-instrumentation.js +32 -0
- package/dist/telemetry/test-instrumentation.js.map +7 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +7 -0
- package/dist/utils/element-utils.js +11 -0
- package/dist/utils/element-utils.js.map +7 -0
- package/dist/utils/errors.js +105 -0
- package/dist/utils/errors.js.map +7 -0
- package/dist/utils/file-io.js +69 -0
- package/dist/utils/file-io.js.map +7 -0
- package/dist/utils/globals.js +28 -0
- package/dist/utils/globals.js.map +7 -0
- package/dist/utils/model-path.js +22 -0
- package/dist/utils/model-path.js.map +7 -0
- package/dist/utils/project-paths.js +45 -0
- package/dist/utils/project-paths.js.map +7 -0
- package/dist/utils/spec-installer.js +85 -0
- package/dist/utils/spec-installer.js.map +7 -0
- package/dist/utils/spec-version.js +33 -0
- package/dist/utils/spec-version.js.map +7 -0
- package/dist/validators/index.js +15 -0
- package/dist/validators/index.js.map +7 -0
- package/dist/validators/naming-validator.js +82 -0
- package/dist/validators/naming-validator.js.map +7 -0
- package/dist/validators/reference-validator.js +106 -0
- package/dist/validators/reference-validator.js.map +7 -0
- package/dist/validators/schema-validator.js +148 -0
- package/dist/validators/schema-validator.js.map +7 -0
- package/dist/validators/semantic-validator.js +80 -0
- package/dist/validators/semantic-validator.js.map +7 -0
- package/dist/validators/types.js +48 -0
- package/dist/validators/types.js.map +7 -0
- package/dist/validators/validator.js +67 -0
- package/dist/validators/validator.js.map +7 -0
- package/docs/TEST-INSTRUMENTATION.md +405 -0
- package/docs/telemetry.md +427 -0
- package/package.json +70 -0
- package/test-debug.js +33 -0
- package/test-special.mjs +46 -0
- package/test_runner.ts +7 -0
|
@@ -0,0 +1,1302 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Relationship Catalog",
|
|
4
|
+
"description": "Comprehensive catalog of semantic relationship types for Documentation Robotics",
|
|
5
|
+
"version": "2.1.0",
|
|
6
|
+
"generatedBy": "Manual",
|
|
7
|
+
"lastUpdated": "2025-12-15",
|
|
8
|
+
|
|
9
|
+
"relationshipTypes": [
|
|
10
|
+
{
|
|
11
|
+
"id": "composition",
|
|
12
|
+
"predicate": "composes",
|
|
13
|
+
"inversePredicate": "composed-of",
|
|
14
|
+
"category": "structural",
|
|
15
|
+
"archimateAlignment": "Composition",
|
|
16
|
+
"description": "Whole-part relationship where the part cannot exist without the whole",
|
|
17
|
+
"semantics": {
|
|
18
|
+
"directionality": "bidirectional",
|
|
19
|
+
"transitivity": false,
|
|
20
|
+
"symmetry": false
|
|
21
|
+
},
|
|
22
|
+
"applicableLayers": ["02", "03", "04", "05", "06", "07", "08", "11", "12"],
|
|
23
|
+
"examples": [
|
|
24
|
+
{
|
|
25
|
+
"source": "BusinessCollaboration",
|
|
26
|
+
"target": "BusinessRole",
|
|
27
|
+
"description": "Business collaboration composes business roles that participate in it"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"source": "TestCoverageModel",
|
|
31
|
+
"target": "TestCoverageTarget",
|
|
32
|
+
"description": "Coverage model composes targets defining what needs testing",
|
|
33
|
+
"layer": "12-testing"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"source": "TestCoverageTarget",
|
|
37
|
+
"target": "OutcomeCategory",
|
|
38
|
+
"description": "Coverage target composes expected outcome categories",
|
|
39
|
+
"layer": "12-testing"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"source": "CoverageRequirement",
|
|
43
|
+
"target": "InputPartitionSelection",
|
|
44
|
+
"description": "Coverage requirement composes partition value selections",
|
|
45
|
+
"layer": "12-testing"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"source": "Span",
|
|
49
|
+
"target": "SpanEvent",
|
|
50
|
+
"description": "Span composes timestamped events occurring during execution",
|
|
51
|
+
"layer": "11-apm-observability"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"source": "APMConfiguration",
|
|
55
|
+
"target": "TraceConfiguration",
|
|
56
|
+
"description": "APM config composes trace, log, and metric configurations",
|
|
57
|
+
"layer": "11-apm-observability"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"source": "MeterConfig",
|
|
61
|
+
"target": "MetricInstrument",
|
|
62
|
+
"description": "Meter config composes individual metric instruments",
|
|
63
|
+
"layer": "11-apm-observability"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"source": "ApplicationComponent",
|
|
67
|
+
"target": "ApplicationInterface",
|
|
68
|
+
"description": "Application component composes its interfaces"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"source": "OpenAPIDocument",
|
|
72
|
+
"target": "Paths",
|
|
73
|
+
"description": "API document composes paths object defining all endpoints",
|
|
74
|
+
"layer": "06-api"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"source": "Operation",
|
|
78
|
+
"target": "Responses",
|
|
79
|
+
"description": "API operation composes its responses object",
|
|
80
|
+
"layer": "06-api"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"source": "Components",
|
|
84
|
+
"target": "Schema",
|
|
85
|
+
"description": "Components object composes reusable schema definitions",
|
|
86
|
+
"layer": "06-api"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"source": "JSONSchema",
|
|
90
|
+
"target": "SchemaDefinition",
|
|
91
|
+
"description": "Schema document composes reusable definitions",
|
|
92
|
+
"layer": "07-data-model"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"source": "SchemaDefinition",
|
|
96
|
+
"target": "SchemaProperty",
|
|
97
|
+
"description": "Schema definition composes its properties",
|
|
98
|
+
"layer": "07-data-model"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"source": "Database",
|
|
102
|
+
"target": "DatabaseSchema",
|
|
103
|
+
"description": "Database instance contains one or more schemas",
|
|
104
|
+
"layer": "08-datastore"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"source": "DatabaseSchema",
|
|
108
|
+
"target": "Table",
|
|
109
|
+
"description": "Schema contains tables as physical storage units",
|
|
110
|
+
"layer": "08-datastore"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"source": "Table",
|
|
114
|
+
"target": "Column",
|
|
115
|
+
"description": "Table is composed of columns defining its structure",
|
|
116
|
+
"layer": "08-datastore"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"source": "Table",
|
|
120
|
+
"target": "Constraint",
|
|
121
|
+
"description": "Table contains constraints enforcing data integrity",
|
|
122
|
+
"layer": "08-datastore"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"source": "Table",
|
|
126
|
+
"target": "Index",
|
|
127
|
+
"description": "Table contains indexes for query optimization",
|
|
128
|
+
"layer": "08-datastore"
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "aggregation",
|
|
134
|
+
"predicate": "aggregates",
|
|
135
|
+
"inversePredicate": "aggregated-by",
|
|
136
|
+
"category": "structural",
|
|
137
|
+
"archimateAlignment": "Aggregation",
|
|
138
|
+
"description": "Whole-part relationship where the part can exist independently",
|
|
139
|
+
"semantics": {
|
|
140
|
+
"directionality": "bidirectional",
|
|
141
|
+
"transitivity": false,
|
|
142
|
+
"symmetry": false
|
|
143
|
+
},
|
|
144
|
+
"applicableLayers": ["01", "02", "03", "04", "05", "06", "07", "08", "11", "12"],
|
|
145
|
+
"examples": [
|
|
146
|
+
{
|
|
147
|
+
"source": "Goal",
|
|
148
|
+
"target": "Goal",
|
|
149
|
+
"description": "High-level goal aggregates sub-goals",
|
|
150
|
+
"layer": "01-motivation"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"source": "InputPartitionSelection",
|
|
154
|
+
"target": "PartitionValue",
|
|
155
|
+
"description": "Partition selection aggregates multiple partition values to cover",
|
|
156
|
+
"layer": "12-testing"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"source": "CoverageRequirement",
|
|
160
|
+
"target": "ContextVariation",
|
|
161
|
+
"description": "Requirement aggregates selected contexts for testing",
|
|
162
|
+
"layer": "12-testing"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"source": "Resource",
|
|
166
|
+
"target": "Span",
|
|
167
|
+
"description": "Resource aggregates all spans it produces",
|
|
168
|
+
"layer": "11-apm-observability"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"source": "InstrumentationScope",
|
|
172
|
+
"target": "MetricInstrument",
|
|
173
|
+
"description": "Instrumentation scope aggregates metrics it records",
|
|
174
|
+
"layer": "11-apm-observability"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"source": "TraceConfiguration",
|
|
178
|
+
"target": "ExporterConfig",
|
|
179
|
+
"description": "Trace config aggregates trace exporters",
|
|
180
|
+
"layer": "11-apm-observability"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"source": "Requirement",
|
|
184
|
+
"target": "Requirement",
|
|
185
|
+
"description": "High-level requirement aggregates detailed requirements",
|
|
186
|
+
"layer": "01-motivation"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"source": "Product",
|
|
190
|
+
"target": "BusinessService",
|
|
191
|
+
"description": "Product aggregates business services it offers"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"source": "OpenAPIDocument",
|
|
195
|
+
"target": "Server",
|
|
196
|
+
"description": "API document aggregates server definitions",
|
|
197
|
+
"layer": "06-api"
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"source": "OpenAPIDocument",
|
|
201
|
+
"target": "Tag",
|
|
202
|
+
"description": "API document aggregates tag definitions for operation grouping",
|
|
203
|
+
"layer": "06-api"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"source": "Operation",
|
|
207
|
+
"target": "SecurityRequirement",
|
|
208
|
+
"description": "Operation aggregates its security requirements",
|
|
209
|
+
"layer": "06-api"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"source": "JSONSchema",
|
|
213
|
+
"target": "DataGovernance",
|
|
214
|
+
"description": "Schema aggregates governance metadata",
|
|
215
|
+
"layer": "07-data-model"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"source": "JSONSchema",
|
|
219
|
+
"target": "DataQualityMetrics",
|
|
220
|
+
"description": "Schema aggregates quality metrics configuration",
|
|
221
|
+
"layer": "07-data-model"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"source": "Index",
|
|
225
|
+
"target": "Column",
|
|
226
|
+
"description": "Index aggregates one or more columns (composite indexes)",
|
|
227
|
+
"layer": "08-datastore"
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"source": "Constraint",
|
|
231
|
+
"target": "Column",
|
|
232
|
+
"description": "Constraint aggregates columns (composite keys, multi-column checks)",
|
|
233
|
+
"layer": "08-datastore"
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"id": "specialization",
|
|
239
|
+
"predicate": "specializes",
|
|
240
|
+
"inversePredicate": "generalized-by",
|
|
241
|
+
"category": "structural",
|
|
242
|
+
"archimateAlignment": "Specialization",
|
|
243
|
+
"description": "Type-subtype relationship (inheritance)",
|
|
244
|
+
"semantics": {
|
|
245
|
+
"directionality": "bidirectional",
|
|
246
|
+
"transitivity": true,
|
|
247
|
+
"symmetry": false
|
|
248
|
+
},
|
|
249
|
+
"applicableLayers": ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"],
|
|
250
|
+
"examples": [
|
|
251
|
+
{
|
|
252
|
+
"source": "PremiumAccount",
|
|
253
|
+
"target": "Account",
|
|
254
|
+
"description": "Premium account specializes the general account concept"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"source": "Schema",
|
|
258
|
+
"target": "Schema",
|
|
259
|
+
"description": "API schema specializes another via allOf/oneOf/anyOf composition",
|
|
260
|
+
"layer": "06-api"
|
|
261
|
+
}
|
|
262
|
+
]
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"id": "realization",
|
|
266
|
+
"predicate": "realizes",
|
|
267
|
+
"inversePredicate": "realized-by",
|
|
268
|
+
"category": "structural",
|
|
269
|
+
"archimateAlignment": "Realization",
|
|
270
|
+
"description": "Implementation element realizes abstract element",
|
|
271
|
+
"semantics": {
|
|
272
|
+
"directionality": "bidirectional",
|
|
273
|
+
"transitivity": true,
|
|
274
|
+
"symmetry": false
|
|
275
|
+
},
|
|
276
|
+
"applicableLayers": ["01", "02", "04", "05", "06", "07"],
|
|
277
|
+
"examples": [
|
|
278
|
+
{
|
|
279
|
+
"source": "Goal",
|
|
280
|
+
"target": "Value",
|
|
281
|
+
"description": "Goal realizes value for stakeholders",
|
|
282
|
+
"layer": "01-motivation"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"source": "Outcome",
|
|
286
|
+
"target": "Goal",
|
|
287
|
+
"description": "Outcome realizes achievement of goal",
|
|
288
|
+
"layer": "01-motivation"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"source": "ApplicationService",
|
|
292
|
+
"target": "BusinessService",
|
|
293
|
+
"description": "Application service realizes business service capability"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"source": "APIOperation",
|
|
297
|
+
"target": "ApplicationInterface",
|
|
298
|
+
"description": "API operation realizes application interface"
|
|
299
|
+
}
|
|
300
|
+
]
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"id": "assignment",
|
|
304
|
+
"predicate": "assigned-to",
|
|
305
|
+
"inversePredicate": "assigns",
|
|
306
|
+
"category": "structural",
|
|
307
|
+
"archimateAlignment": "Assignment",
|
|
308
|
+
"description": "Active element assigned to behavior or role",
|
|
309
|
+
"semantics": {
|
|
310
|
+
"directionality": "bidirectional",
|
|
311
|
+
"transitivity": false,
|
|
312
|
+
"symmetry": false
|
|
313
|
+
},
|
|
314
|
+
"applicableLayers": ["02", "03", "04", "05"],
|
|
315
|
+
"examples": [
|
|
316
|
+
{
|
|
317
|
+
"source": "BusinessActor",
|
|
318
|
+
"target": "BusinessRole",
|
|
319
|
+
"description": "Business actor assigned to business role"
|
|
320
|
+
}
|
|
321
|
+
]
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"id": "association",
|
|
325
|
+
"predicate": "associated-with",
|
|
326
|
+
"inversePredicate": "associated-with",
|
|
327
|
+
"category": "structural",
|
|
328
|
+
"archimateAlignment": "Association",
|
|
329
|
+
"description": "Generic relationship indicating elements are related or connected",
|
|
330
|
+
"semantics": {
|
|
331
|
+
"directionality": "bidirectional",
|
|
332
|
+
"transitivity": false,
|
|
333
|
+
"symmetry": true
|
|
334
|
+
},
|
|
335
|
+
"applicableLayers": ["01", "02", "03", "04", "05", "06"],
|
|
336
|
+
"examples": [
|
|
337
|
+
{
|
|
338
|
+
"source": "Stakeholder",
|
|
339
|
+
"target": "Driver",
|
|
340
|
+
"description": "Stakeholder has concern represented by driver",
|
|
341
|
+
"layer": "01-motivation"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"source": "Stakeholder",
|
|
345
|
+
"target": "Goal",
|
|
346
|
+
"description": "Stakeholder has interest in goal",
|
|
347
|
+
"layer": "01-motivation"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"source": "Requirement",
|
|
351
|
+
"target": "Constraint",
|
|
352
|
+
"description": "Requirement is limited by constraint",
|
|
353
|
+
"layer": "01-motivation"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"source": "Value",
|
|
357
|
+
"target": "Stakeholder",
|
|
358
|
+
"description": "Value is desired by stakeholder",
|
|
359
|
+
"layer": "01-motivation"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"source": "Outcome",
|
|
363
|
+
"target": "Value",
|
|
364
|
+
"description": "Outcome demonstrates value achievement",
|
|
365
|
+
"layer": "01-motivation"
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"source": "Meaning",
|
|
369
|
+
"target": "Value",
|
|
370
|
+
"description": "Meaning interprets significance of value",
|
|
371
|
+
"layer": "01-motivation"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"source": "Meaning",
|
|
375
|
+
"target": "Outcome",
|
|
376
|
+
"description": "Meaning provides context for outcome",
|
|
377
|
+
"layer": "01-motivation"
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"source": "Contact",
|
|
381
|
+
"target": "OpenAPIDocument",
|
|
382
|
+
"description": "Contact is associated with API document for support",
|
|
383
|
+
"layer": "06-api"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"source": "License",
|
|
387
|
+
"target": "OpenAPIDocument",
|
|
388
|
+
"description": "License is associated with API document for legal terms",
|
|
389
|
+
"layer": "06-api"
|
|
390
|
+
}
|
|
391
|
+
]
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"id": "influence",
|
|
395
|
+
"predicate": "influence",
|
|
396
|
+
"inversePredicate": "influenced-by",
|
|
397
|
+
"category": "behavioral",
|
|
398
|
+
"archimateAlignment": "Influence",
|
|
399
|
+
"description": "Element affects or impacts another element",
|
|
400
|
+
"semantics": {
|
|
401
|
+
"directionality": "bidirectional",
|
|
402
|
+
"transitivity": false,
|
|
403
|
+
"symmetry": false
|
|
404
|
+
},
|
|
405
|
+
"applicableLayers": ["01", "02", "04"],
|
|
406
|
+
"examples": [
|
|
407
|
+
{
|
|
408
|
+
"source": "Driver",
|
|
409
|
+
"target": "Assessment",
|
|
410
|
+
"description": "Driver creates need for assessment",
|
|
411
|
+
"layer": "01-motivation"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"source": "Driver",
|
|
415
|
+
"target": "Goal",
|
|
416
|
+
"description": "Driver motivates goal definition",
|
|
417
|
+
"layer": "01-motivation"
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"source": "Assessment",
|
|
421
|
+
"target": "Goal",
|
|
422
|
+
"description": "Assessment informs goal setting",
|
|
423
|
+
"layer": "01-motivation"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"source": "Goal",
|
|
427
|
+
"target": "Principle",
|
|
428
|
+
"description": "Goal drives principle establishment",
|
|
429
|
+
"layer": "01-motivation"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"source": "Principle",
|
|
433
|
+
"target": "Requirement",
|
|
434
|
+
"description": "Principle guides requirement definition",
|
|
435
|
+
"layer": "01-motivation"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"source": "Constraint",
|
|
439
|
+
"target": "Requirement",
|
|
440
|
+
"description": "Constraint restricts requirement scope",
|
|
441
|
+
"layer": "01-motivation"
|
|
442
|
+
}
|
|
443
|
+
]
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"id": "triggering",
|
|
447
|
+
"predicate": "triggers",
|
|
448
|
+
"inversePredicate": "triggered-by",
|
|
449
|
+
"category": "behavioral",
|
|
450
|
+
"archimateAlignment": "Triggering",
|
|
451
|
+
"description": "Event or behavior triggers another behavior",
|
|
452
|
+
"semantics": {
|
|
453
|
+
"directionality": "bidirectional",
|
|
454
|
+
"transitivity": false,
|
|
455
|
+
"symmetry": false
|
|
456
|
+
},
|
|
457
|
+
"applicableLayers": ["02", "04", "05", "06", "08", "11", "12"],
|
|
458
|
+
"examples": [
|
|
459
|
+
{
|
|
460
|
+
"source": "BusinessEvent",
|
|
461
|
+
"target": "BusinessProcess",
|
|
462
|
+
"description": "Business event triggers business process execution"
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"source": "PartitionDependency",
|
|
466
|
+
"target": "PartitionValue",
|
|
467
|
+
"description": "Dependency condition triggers inclusion/exclusion of partition values",
|
|
468
|
+
"layer": "12-testing"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"source": "CoverageGap",
|
|
472
|
+
"target": "CoverageRequirement",
|
|
473
|
+
"description": "Identified gap triggers need for additional coverage",
|
|
474
|
+
"layer": "12-testing"
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
"source": "DataQualityMetric",
|
|
478
|
+
"target": "LogRecord",
|
|
479
|
+
"description": "Quality violation triggers alert log record",
|
|
480
|
+
"layer": "11-apm-observability"
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"source": "Operation",
|
|
484
|
+
"target": "Callback",
|
|
485
|
+
"description": "API operation triggers callback webhooks on events",
|
|
486
|
+
"layer": "06-api"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"source": "Trigger",
|
|
490
|
+
"target": "Function",
|
|
491
|
+
"description": "Database trigger executes specified function on event",
|
|
492
|
+
"layer": "08-datastore"
|
|
493
|
+
}
|
|
494
|
+
]
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"id": "flow",
|
|
498
|
+
"predicate": "flows-to",
|
|
499
|
+
"inversePredicate": "flows-from",
|
|
500
|
+
"category": "behavioral",
|
|
501
|
+
"archimateAlignment": "Flow",
|
|
502
|
+
"description": "Sequential or data flow between behaviors",
|
|
503
|
+
"semantics": {
|
|
504
|
+
"directionality": "bidirectional",
|
|
505
|
+
"transitivity": false,
|
|
506
|
+
"symmetry": false
|
|
507
|
+
},
|
|
508
|
+
"applicableLayers": ["02", "04", "05", "09", "10", "11", "12"],
|
|
509
|
+
"examples": [
|
|
510
|
+
{
|
|
511
|
+
"source": "BusinessProcess",
|
|
512
|
+
"target": "BusinessProcess",
|
|
513
|
+
"description": "One business process flows to the next in sequence"
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"source": "TestCoverageTarget",
|
|
517
|
+
"target": "CoverageRequirement",
|
|
518
|
+
"description": "Target flows to requirements that specify its coverage",
|
|
519
|
+
"layer": "12-testing"
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"source": "CoverageRequirement",
|
|
523
|
+
"target": "TestCaseSketch",
|
|
524
|
+
"description": "Requirement flows to sketches that implement it",
|
|
525
|
+
"layer": "12-testing"
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
"source": "Span",
|
|
529
|
+
"target": "Span",
|
|
530
|
+
"description": "Span flows to child spans (request propagation)",
|
|
531
|
+
"layer": "11-apm-observability"
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"source": "LogProcessor",
|
|
535
|
+
"target": "LogProcessor",
|
|
536
|
+
"description": "Log records flow through processor pipeline in order",
|
|
537
|
+
"layer": "11-apm-observability"
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
"source": "MetricInstrument",
|
|
541
|
+
"target": "ExporterConfig",
|
|
542
|
+
"description": "Collected metrics flow to configured exporters",
|
|
543
|
+
"layer": "11-apm-observability"
|
|
544
|
+
}
|
|
545
|
+
]
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"id": "serving",
|
|
549
|
+
"predicate": "serves",
|
|
550
|
+
"inversePredicate": "served-by",
|
|
551
|
+
"category": "behavioral",
|
|
552
|
+
"archimateAlignment": "Serving",
|
|
553
|
+
"description": "Service available to consumer",
|
|
554
|
+
"semantics": {
|
|
555
|
+
"directionality": "bidirectional",
|
|
556
|
+
"transitivity": false,
|
|
557
|
+
"symmetry": false
|
|
558
|
+
},
|
|
559
|
+
"applicableLayers": ["02", "04", "05", "06", "08", "11", "12"],
|
|
560
|
+
"examples": [
|
|
561
|
+
{
|
|
562
|
+
"source": "BusinessService",
|
|
563
|
+
"target": "BusinessActor",
|
|
564
|
+
"description": "Business service serves business actor"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"source": "InputSpacePartition",
|
|
568
|
+
"target": "TestCoverageTarget",
|
|
569
|
+
"description": "Partition serves target by defining testable input space",
|
|
570
|
+
"layer": "12-testing"
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
"source": "ContextVariation",
|
|
574
|
+
"target": "TestCoverageTarget",
|
|
575
|
+
"description": "Context serves target by defining execution environments",
|
|
576
|
+
"layer": "12-testing"
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"source": "InstrumentationConfig",
|
|
580
|
+
"target": "Resource",
|
|
581
|
+
"description": "Instrumentation config serves resources it instruments",
|
|
582
|
+
"layer": "11-apm-observability"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"source": "ExporterConfig",
|
|
586
|
+
"target": "APMConfiguration",
|
|
587
|
+
"description": "Exporter serves APM configuration by delivering telemetry",
|
|
588
|
+
"layer": "11-apm-observability"
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"source": "SecurityScheme",
|
|
592
|
+
"target": "Operation",
|
|
593
|
+
"description": "Security scheme serves operations requiring authentication",
|
|
594
|
+
"layer": "06-api"
|
|
595
|
+
}
|
|
596
|
+
]
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"id": "access",
|
|
600
|
+
"predicate": "accesses",
|
|
601
|
+
"inversePredicate": "accessed-by",
|
|
602
|
+
"category": "behavioral",
|
|
603
|
+
"archimateAlignment": "Access",
|
|
604
|
+
"description": "Behavior accesses passive element (data/artifact)",
|
|
605
|
+
"semantics": {
|
|
606
|
+
"directionality": "bidirectional",
|
|
607
|
+
"transitivity": false,
|
|
608
|
+
"symmetry": false
|
|
609
|
+
},
|
|
610
|
+
"applicableLayers": ["02", "04", "05", "06", "07", "08", "11", "12"],
|
|
611
|
+
"examples": [
|
|
612
|
+
{
|
|
613
|
+
"source": "BusinessProcess",
|
|
614
|
+
"target": "BusinessObject",
|
|
615
|
+
"description": "Business process accesses business object data"
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"source": "TestCaseSketch",
|
|
619
|
+
"target": "InputSelection",
|
|
620
|
+
"description": "Test sketch accesses input selections for test execution",
|
|
621
|
+
"layer": "12-testing"
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
"source": "CoverageRequirement",
|
|
625
|
+
"target": "InputPartitionSelection",
|
|
626
|
+
"description": "Requirement accesses partition selections for coverage",
|
|
627
|
+
"layer": "12-testing"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"source": "LogProcessor",
|
|
631
|
+
"target": "Attribute",
|
|
632
|
+
"description": "Log processor accesses attributes for filtering/transformation",
|
|
633
|
+
"layer": "11-apm-observability"
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
"source": "MetricInstrument",
|
|
637
|
+
"target": "Attribute",
|
|
638
|
+
"description": "Metric instrument accesses attributes for labeling",
|
|
639
|
+
"layer": "11-apm-observability"
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"source": "APIOperation",
|
|
643
|
+
"target": "DataObject",
|
|
644
|
+
"description": "API operation accesses data object"
|
|
645
|
+
}
|
|
646
|
+
]
|
|
647
|
+
},
|
|
648
|
+
{
|
|
649
|
+
"id": "uses",
|
|
650
|
+
"predicate": "uses",
|
|
651
|
+
"inversePredicate": "used-by",
|
|
652
|
+
"category": "dependency",
|
|
653
|
+
"archimateAlignment": null,
|
|
654
|
+
"description": "Element depends on another for functionality",
|
|
655
|
+
"semantics": {
|
|
656
|
+
"directionality": "bidirectional",
|
|
657
|
+
"transitivity": false,
|
|
658
|
+
"symmetry": false
|
|
659
|
+
},
|
|
660
|
+
"applicableLayers": ["02", "03", "04", "05", "09"],
|
|
661
|
+
"examples": [
|
|
662
|
+
{
|
|
663
|
+
"source": "ApplicationComponent",
|
|
664
|
+
"target": "TechnologyService",
|
|
665
|
+
"description": "Application component uses technology service"
|
|
666
|
+
}
|
|
667
|
+
]
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"id": "reference",
|
|
671
|
+
"predicate": "references",
|
|
672
|
+
"inversePredicate": "referenced-by",
|
|
673
|
+
"category": "dependency",
|
|
674
|
+
"archimateAlignment": null,
|
|
675
|
+
"description": "Pointer reference without functional dependency",
|
|
676
|
+
"semantics": {
|
|
677
|
+
"directionality": "bidirectional",
|
|
678
|
+
"transitivity": false,
|
|
679
|
+
"symmetry": false
|
|
680
|
+
},
|
|
681
|
+
"applicableLayers": ["03", "04", "06", "07", "08", "09", "11", "12"],
|
|
682
|
+
"examples": [
|
|
683
|
+
{
|
|
684
|
+
"source": "DataObject",
|
|
685
|
+
"target": "Schema",
|
|
686
|
+
"description": "Data object references JSON schema"
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"source": "TestCaseSketch",
|
|
690
|
+
"target": "CoverageRequirement",
|
|
691
|
+
"description": "Test case sketch references coverage requirement it satisfies",
|
|
692
|
+
"layer": "12-testing"
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
"source": "CoverageRequirement",
|
|
696
|
+
"target": "TestCoverageTarget",
|
|
697
|
+
"description": "Coverage requirement references target it covers",
|
|
698
|
+
"layer": "12-testing"
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"source": "InputSelection",
|
|
702
|
+
"target": "PartitionValue",
|
|
703
|
+
"description": "Input selection references selected partition value",
|
|
704
|
+
"layer": "12-testing"
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
"source": "Span",
|
|
708
|
+
"target": "Span",
|
|
709
|
+
"description": "Span references parent span via parentSpanId (trace hierarchy)",
|
|
710
|
+
"layer": "11-apm-observability"
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"source": "LogRecord",
|
|
714
|
+
"target": "Span",
|
|
715
|
+
"description": "Log record references associated span via traceContext",
|
|
716
|
+
"layer": "11-apm-observability"
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
"source": "SpanLink",
|
|
720
|
+
"target": "Span",
|
|
721
|
+
"description": "Span link references target span across traces",
|
|
722
|
+
"layer": "11-apm-observability"
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"source": "APIOperation",
|
|
726
|
+
"target": "BusinessService",
|
|
727
|
+
"description": "API operation references business service it supports"
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"source": "Schema",
|
|
731
|
+
"target": "Schema",
|
|
732
|
+
"description": "API schema references another schema via $ref",
|
|
733
|
+
"layer": "06-api"
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
"source": "Parameter",
|
|
737
|
+
"target": "Schema",
|
|
738
|
+
"description": "Parameter references a schema for its data type",
|
|
739
|
+
"layer": "06-api"
|
|
740
|
+
},
|
|
741
|
+
{
|
|
742
|
+
"source": "Link",
|
|
743
|
+
"target": "Operation",
|
|
744
|
+
"description": "Link references target operation via operationId for HATEOAS",
|
|
745
|
+
"layer": "06-api"
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
"source": "Operation",
|
|
749
|
+
"target": "Tag",
|
|
750
|
+
"description": "Operation references tags for categorization",
|
|
751
|
+
"layer": "06-api"
|
|
752
|
+
}
|
|
753
|
+
]
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
"id": "depends-on",
|
|
757
|
+
"predicate": "depends-on",
|
|
758
|
+
"inversePredicate": "dependency-of",
|
|
759
|
+
"category": "dependency",
|
|
760
|
+
"archimateAlignment": null,
|
|
761
|
+
"description": "Element requires another to function",
|
|
762
|
+
"semantics": {
|
|
763
|
+
"directionality": "bidirectional",
|
|
764
|
+
"transitivity": true,
|
|
765
|
+
"symmetry": false
|
|
766
|
+
},
|
|
767
|
+
"applicableLayers": ["04", "05", "06", "08", "09", "11", "12"],
|
|
768
|
+
"examples": [
|
|
769
|
+
{
|
|
770
|
+
"source": "ApplicationService",
|
|
771
|
+
"target": "DataObject",
|
|
772
|
+
"description": "Application service depends on data object"
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"source": "TestCaseSketch",
|
|
776
|
+
"target": "ContextVariation",
|
|
777
|
+
"description": "Test sketch depends on context for execution environment",
|
|
778
|
+
"layer": "12-testing"
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"source": "TestCaseSketch",
|
|
782
|
+
"target": "OutcomeCategory",
|
|
783
|
+
"description": "Test sketch depends on expected outcome category",
|
|
784
|
+
"layer": "12-testing"
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"source": "CoverageRequirement",
|
|
788
|
+
"target": "InputSpacePartition",
|
|
789
|
+
"description": "Requirement depends on partitions for coverage criteria",
|
|
790
|
+
"layer": "12-testing"
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
"source": "Span",
|
|
794
|
+
"target": "Resource",
|
|
795
|
+
"description": "Span depends on resource for identity context",
|
|
796
|
+
"layer": "11-apm-observability"
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"source": "Span",
|
|
800
|
+
"target": "InstrumentationScope",
|
|
801
|
+
"description": "Span depends on instrumentation scope for source context",
|
|
802
|
+
"layer": "11-apm-observability"
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"source": "LogRecord",
|
|
806
|
+
"target": "Resource",
|
|
807
|
+
"description": "Log record depends on resource for identity context",
|
|
808
|
+
"layer": "11-apm-observability"
|
|
809
|
+
},
|
|
810
|
+
{
|
|
811
|
+
"source": "MetricInstrument",
|
|
812
|
+
"target": "InstrumentationScope",
|
|
813
|
+
"description": "Metric instrument depends on instrumentation scope",
|
|
814
|
+
"layer": "11-apm-observability"
|
|
815
|
+
}
|
|
816
|
+
]
|
|
817
|
+
},
|
|
818
|
+
{
|
|
819
|
+
"id": "supports-goals",
|
|
820
|
+
"predicate": "supports-goals",
|
|
821
|
+
"inversePredicate": "supported-by",
|
|
822
|
+
"category": "traceability",
|
|
823
|
+
"archimateAlignment": null,
|
|
824
|
+
"description": "Implementation contributes to achieving goal",
|
|
825
|
+
"semantics": {
|
|
826
|
+
"directionality": "bidirectional",
|
|
827
|
+
"transitivity": true,
|
|
828
|
+
"symmetry": false
|
|
829
|
+
},
|
|
830
|
+
"applicableLayers": ["02", "04", "05", "06"],
|
|
831
|
+
"fieldPaths": ["motivation.supports-goals", "x-supports-goals"],
|
|
832
|
+
"examples": [
|
|
833
|
+
{
|
|
834
|
+
"source": "BusinessService",
|
|
835
|
+
"sourceLayer": "02-business",
|
|
836
|
+
"target": "Goal",
|
|
837
|
+
"targetLayer": "01-motivation",
|
|
838
|
+
"value": "goal-revenue-growth",
|
|
839
|
+
"description": "Payment service supports revenue growth goal"
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"source": "Operation",
|
|
843
|
+
"sourceLayer": "06-api",
|
|
844
|
+
"target": "Goal",
|
|
845
|
+
"targetLayer": "01-motivation",
|
|
846
|
+
"value": "goal-customer-satisfaction",
|
|
847
|
+
"description": "GET /products operation supports customer satisfaction goal"
|
|
848
|
+
}
|
|
849
|
+
]
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"id": "fulfills-requirements",
|
|
853
|
+
"predicate": "fulfills-requirements",
|
|
854
|
+
"inversePredicate": "fulfilled-by",
|
|
855
|
+
"category": "traceability",
|
|
856
|
+
"archimateAlignment": null,
|
|
857
|
+
"description": "Implementation satisfies requirement",
|
|
858
|
+
"semantics": {
|
|
859
|
+
"directionality": "bidirectional",
|
|
860
|
+
"transitivity": false,
|
|
861
|
+
"symmetry": false
|
|
862
|
+
},
|
|
863
|
+
"applicableLayers": ["02", "04", "05", "06", "03", "11"],
|
|
864
|
+
"fieldPaths": ["motivation.fulfills-requirements", "x-fulfills-requirements"],
|
|
865
|
+
"examples": [
|
|
866
|
+
{
|
|
867
|
+
"source": "ApplicationService",
|
|
868
|
+
"target": "Requirement",
|
|
869
|
+
"description": "OAuth service fulfills authentication requirement"
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"source": "Operation",
|
|
873
|
+
"sourceLayer": "06-api",
|
|
874
|
+
"target": "Requirement",
|
|
875
|
+
"targetLayer": "01-motivation",
|
|
876
|
+
"value": "req-product-creation-capability",
|
|
877
|
+
"description": "POST /products operation fulfills product creation requirement"
|
|
878
|
+
}
|
|
879
|
+
]
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"id": "delivers-value",
|
|
883
|
+
"predicate": "delivers-value",
|
|
884
|
+
"inversePredicate": "delivered-by",
|
|
885
|
+
"category": "traceability",
|
|
886
|
+
"archimateAlignment": null,
|
|
887
|
+
"description": "Implementation provides business value",
|
|
888
|
+
"semantics": {
|
|
889
|
+
"directionality": "bidirectional",
|
|
890
|
+
"transitivity": false,
|
|
891
|
+
"symmetry": false
|
|
892
|
+
},
|
|
893
|
+
"applicableLayers": ["02"],
|
|
894
|
+
"fieldPaths": ["motivation.delivers-value"],
|
|
895
|
+
"examples": [
|
|
896
|
+
{
|
|
897
|
+
"source": "BusinessService",
|
|
898
|
+
"target": "Value",
|
|
899
|
+
"description": "Loyalty program delivers customer retention value"
|
|
900
|
+
}
|
|
901
|
+
]
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
"id": "measures-outcome",
|
|
905
|
+
"predicate": "measures-outcome",
|
|
906
|
+
"inversePredicate": "measured-by",
|
|
907
|
+
"category": "traceability",
|
|
908
|
+
"archimateAlignment": null,
|
|
909
|
+
"description": "Metric validates outcome achievement",
|
|
910
|
+
"semantics": {
|
|
911
|
+
"directionality": "bidirectional",
|
|
912
|
+
"transitivity": false,
|
|
913
|
+
"symmetry": false
|
|
914
|
+
},
|
|
915
|
+
"applicableLayers": ["11", "12"],
|
|
916
|
+
"fieldPaths": ["motivationMapping.measuresOutcome"],
|
|
917
|
+
"examples": [
|
|
918
|
+
{
|
|
919
|
+
"source": "Metric",
|
|
920
|
+
"target": "Outcome",
|
|
921
|
+
"description": "Response time metric measures performance outcome"
|
|
922
|
+
}
|
|
923
|
+
]
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"id": "governed-by-principles",
|
|
927
|
+
"predicate": "governed-by-principles",
|
|
928
|
+
"inversePredicate": "governs",
|
|
929
|
+
"category": "governance",
|
|
930
|
+
"archimateAlignment": null,
|
|
931
|
+
"description": "Element follows architectural principle",
|
|
932
|
+
"semantics": {
|
|
933
|
+
"directionality": "bidirectional",
|
|
934
|
+
"transitivity": false,
|
|
935
|
+
"symmetry": false
|
|
936
|
+
},
|
|
937
|
+
"applicableLayers": ["02", "04", "05", "06", "07"],
|
|
938
|
+
"fieldPaths": ["motivation.governed-by-principles", "x-governed-by-principles"],
|
|
939
|
+
"examples": [
|
|
940
|
+
{
|
|
941
|
+
"source": "APIOperation",
|
|
942
|
+
"target": "Principle",
|
|
943
|
+
"description": "REST API governed by RESTful design principles"
|
|
944
|
+
}
|
|
945
|
+
]
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
"id": "constrainedby",
|
|
949
|
+
"predicate": "constrained-by",
|
|
950
|
+
"inversePredicate": "constrains",
|
|
951
|
+
"category": "governance",
|
|
952
|
+
"archimateAlignment": null,
|
|
953
|
+
"description": "Element limited by constraint",
|
|
954
|
+
"semantics": {
|
|
955
|
+
"directionality": "bidirectional",
|
|
956
|
+
"transitivity": false,
|
|
957
|
+
"symmetry": false
|
|
958
|
+
},
|
|
959
|
+
"applicableLayers": ["03", "04", "05", "06", "07"],
|
|
960
|
+
"fieldPaths": ["motivation.constrained-by", "x-constrained-by"],
|
|
961
|
+
"examples": [
|
|
962
|
+
{
|
|
963
|
+
"source": "APIOperation",
|
|
964
|
+
"target": "Constraint",
|
|
965
|
+
"description": "API operation constrained by rate limit"
|
|
966
|
+
}
|
|
967
|
+
]
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
"id": "enforces-requirement",
|
|
971
|
+
"predicate": "enforces-requirement",
|
|
972
|
+
"inversePredicate": "enforced-by",
|
|
973
|
+
"category": "governance",
|
|
974
|
+
"archimateAlignment": null,
|
|
975
|
+
"description": "Element actively enforces requirement",
|
|
976
|
+
"semantics": {
|
|
977
|
+
"directionality": "bidirectional",
|
|
978
|
+
"transitivity": false,
|
|
979
|
+
"symmetry": false
|
|
980
|
+
},
|
|
981
|
+
"applicableLayers": ["03", "10"],
|
|
982
|
+
"fieldPaths": ["motivationAlignment.enforcesRequirement"],
|
|
983
|
+
"examples": [
|
|
984
|
+
{
|
|
985
|
+
"source": "NavigationGuard",
|
|
986
|
+
"target": "Requirement",
|
|
987
|
+
"description": "Auth guard enforces authentication requirement"
|
|
988
|
+
}
|
|
989
|
+
]
|
|
990
|
+
},
|
|
991
|
+
{
|
|
992
|
+
"id": "traces",
|
|
993
|
+
"predicate": "traces",
|
|
994
|
+
"inversePredicate": "traced-by",
|
|
995
|
+
"category": "apm",
|
|
996
|
+
"archimateAlignment": null,
|
|
997
|
+
"description": "Distributed tracing relationships",
|
|
998
|
+
"semantics": {
|
|
999
|
+
"directionality": "bidirectional",
|
|
1000
|
+
"transitivity": false,
|
|
1001
|
+
"symmetry": false
|
|
1002
|
+
},
|
|
1003
|
+
"applicableLayers": ["04", "06", "11"],
|
|
1004
|
+
"fieldPaths": ["apm.traces", "x-traces"],
|
|
1005
|
+
"examples": [
|
|
1006
|
+
{
|
|
1007
|
+
"source": "APIOperation",
|
|
1008
|
+
"target": "DistributedTrace",
|
|
1009
|
+
"description": "API operation participates in distributed trace"
|
|
1010
|
+
}
|
|
1011
|
+
]
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
"id": "monitors",
|
|
1015
|
+
"predicate": "monitors",
|
|
1016
|
+
"inversePredicate": "monitored-by",
|
|
1017
|
+
"category": "apm",
|
|
1018
|
+
"archimateAlignment": null,
|
|
1019
|
+
"description": "Health/performance monitoring",
|
|
1020
|
+
"semantics": {
|
|
1021
|
+
"directionality": "bidirectional",
|
|
1022
|
+
"transitivity": false,
|
|
1023
|
+
"symmetry": false
|
|
1024
|
+
},
|
|
1025
|
+
"applicableLayers": ["11"],
|
|
1026
|
+
"fieldPaths": ["apm.monitors", "x-monitors"],
|
|
1027
|
+
"examples": [
|
|
1028
|
+
{
|
|
1029
|
+
"source": "HealthCheck",
|
|
1030
|
+
"target": "ApplicationService",
|
|
1031
|
+
"description": "Health check monitors application service"
|
|
1032
|
+
}
|
|
1033
|
+
]
|
|
1034
|
+
},
|
|
1035
|
+
{
|
|
1036
|
+
"id": "measures",
|
|
1037
|
+
"predicate": "measures",
|
|
1038
|
+
"inversePredicate": "measured-by",
|
|
1039
|
+
"category": "apm",
|
|
1040
|
+
"archimateAlignment": null,
|
|
1041
|
+
"description": "Metric collection relationships",
|
|
1042
|
+
"semantics": {
|
|
1043
|
+
"directionality": "bidirectional",
|
|
1044
|
+
"transitivity": false,
|
|
1045
|
+
"symmetry": false
|
|
1046
|
+
},
|
|
1047
|
+
"applicableLayers": ["11"],
|
|
1048
|
+
"fieldPaths": ["apm.measures", "x-measures"],
|
|
1049
|
+
"examples": [
|
|
1050
|
+
{
|
|
1051
|
+
"source": "Metric",
|
|
1052
|
+
"target": "APIOperation",
|
|
1053
|
+
"description": "Response time metric measures API operation"
|
|
1054
|
+
}
|
|
1055
|
+
]
|
|
1056
|
+
},
|
|
1057
|
+
{
|
|
1058
|
+
"id": "protects",
|
|
1059
|
+
"predicate": "protects",
|
|
1060
|
+
"inversePredicate": "protected-by",
|
|
1061
|
+
"category": "security",
|
|
1062
|
+
"archimateAlignment": null,
|
|
1063
|
+
"description": "Security control relationships",
|
|
1064
|
+
"semantics": {
|
|
1065
|
+
"directionality": "bidirectional",
|
|
1066
|
+
"transitivity": false,
|
|
1067
|
+
"symmetry": false
|
|
1068
|
+
},
|
|
1069
|
+
"applicableLayers": ["03"],
|
|
1070
|
+
"fieldPaths": ["security.protects", "x-protects"],
|
|
1071
|
+
"examples": [
|
|
1072
|
+
{
|
|
1073
|
+
"source": "SecurityControl",
|
|
1074
|
+
"target": "ApplicationService",
|
|
1075
|
+
"description": "Encryption control protects sensitive data service"
|
|
1076
|
+
}
|
|
1077
|
+
]
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
"id": "authenticates",
|
|
1081
|
+
"predicate": "authenticates",
|
|
1082
|
+
"inversePredicate": "authenticated-by",
|
|
1083
|
+
"category": "security",
|
|
1084
|
+
"archimateAlignment": null,
|
|
1085
|
+
"description": "Authentication flows",
|
|
1086
|
+
"semantics": {
|
|
1087
|
+
"directionality": "bidirectional",
|
|
1088
|
+
"transitivity": false,
|
|
1089
|
+
"symmetry": false
|
|
1090
|
+
},
|
|
1091
|
+
"applicableLayers": ["03"],
|
|
1092
|
+
"fieldPaths": ["security.authenticates", "x-authenticates"],
|
|
1093
|
+
"examples": [
|
|
1094
|
+
{
|
|
1095
|
+
"source": "AuthenticationService",
|
|
1096
|
+
"target": "User",
|
|
1097
|
+
"description": "OAuth service authenticates user"
|
|
1098
|
+
}
|
|
1099
|
+
]
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"id": "authorization",
|
|
1103
|
+
"predicate": "authorizes",
|
|
1104
|
+
"inversePredicate": "authorized-by",
|
|
1105
|
+
"category": "security",
|
|
1106
|
+
"archimateAlignment": null,
|
|
1107
|
+
"description": "Permission grants",
|
|
1108
|
+
"semantics": {
|
|
1109
|
+
"directionality": "bidirectional",
|
|
1110
|
+
"transitivity": false,
|
|
1111
|
+
"symmetry": false
|
|
1112
|
+
},
|
|
1113
|
+
"applicableLayers": ["03"],
|
|
1114
|
+
"fieldPaths": ["security.authorizes", "x-authorizes"],
|
|
1115
|
+
"examples": [
|
|
1116
|
+
{
|
|
1117
|
+
"source": "Role",
|
|
1118
|
+
"target": "Operation",
|
|
1119
|
+
"description": "Admin role authorizes delete operation"
|
|
1120
|
+
}
|
|
1121
|
+
]
|
|
1122
|
+
},
|
|
1123
|
+
{
|
|
1124
|
+
"id": "renders",
|
|
1125
|
+
"predicate": "renders",
|
|
1126
|
+
"inversePredicate": "rendered-by",
|
|
1127
|
+
"category": "ux",
|
|
1128
|
+
"archimateAlignment": null,
|
|
1129
|
+
"description": "UI rendering relationships",
|
|
1130
|
+
"semantics": {
|
|
1131
|
+
"directionality": "bidirectional",
|
|
1132
|
+
"transitivity": false,
|
|
1133
|
+
"symmetry": false
|
|
1134
|
+
},
|
|
1135
|
+
"applicableLayers": ["09"],
|
|
1136
|
+
"fieldPaths": ["ux.renders", "x-renders"],
|
|
1137
|
+
"examples": [
|
|
1138
|
+
{
|
|
1139
|
+
"source": "UIComponent",
|
|
1140
|
+
"target": "UIView",
|
|
1141
|
+
"description": "Layout component renders view content"
|
|
1142
|
+
}
|
|
1143
|
+
]
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"id": "binds-to",
|
|
1147
|
+
"predicate": "binds-to",
|
|
1148
|
+
"inversePredicate": "bound-by",
|
|
1149
|
+
"category": "ux",
|
|
1150
|
+
"archimateAlignment": null,
|
|
1151
|
+
"description": "Data binding relationships",
|
|
1152
|
+
"semantics": {
|
|
1153
|
+
"directionality": "bidirectional",
|
|
1154
|
+
"transitivity": false,
|
|
1155
|
+
"symmetry": false
|
|
1156
|
+
},
|
|
1157
|
+
"applicableLayers": ["09"],
|
|
1158
|
+
"fieldPaths": ["ux.binds-to", "x-binds-to"],
|
|
1159
|
+
"examples": [
|
|
1160
|
+
{
|
|
1161
|
+
"source": "UIComponent",
|
|
1162
|
+
"target": "DataObject",
|
|
1163
|
+
"description": "Form component binds to user data object"
|
|
1164
|
+
}
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
"id": "navigates-to",
|
|
1169
|
+
"predicate": "navigates-to",
|
|
1170
|
+
"inversePredicate": "navigated-from",
|
|
1171
|
+
"category": "ux",
|
|
1172
|
+
"archimateAlignment": null,
|
|
1173
|
+
"description": "Navigation flows",
|
|
1174
|
+
"semantics": {
|
|
1175
|
+
"directionality": "bidirectional",
|
|
1176
|
+
"transitivity": false,
|
|
1177
|
+
"symmetry": false
|
|
1178
|
+
},
|
|
1179
|
+
"applicableLayers": ["09", "10"],
|
|
1180
|
+
"fieldPaths": ["navigation.navigates-to", "x-navigates-to"],
|
|
1181
|
+
"examples": [
|
|
1182
|
+
{
|
|
1183
|
+
"source": "UIView",
|
|
1184
|
+
"target": "UIView",
|
|
1185
|
+
"description": "Login view navigates to dashboard view"
|
|
1186
|
+
}
|
|
1187
|
+
]
|
|
1188
|
+
},
|
|
1189
|
+
{
|
|
1190
|
+
"id": "maps-to",
|
|
1191
|
+
"predicate": "maps-to",
|
|
1192
|
+
"inversePredicate": "mapped-from",
|
|
1193
|
+
"category": "data",
|
|
1194
|
+
"archimateAlignment": null,
|
|
1195
|
+
"description": "Schema/table mapping",
|
|
1196
|
+
"semantics": {
|
|
1197
|
+
"directionality": "bidirectional",
|
|
1198
|
+
"transitivity": false,
|
|
1199
|
+
"symmetry": false
|
|
1200
|
+
},
|
|
1201
|
+
"applicableLayers": ["07", "08"],
|
|
1202
|
+
"fieldPaths": ["data.maps-to", "x-maps-to"],
|
|
1203
|
+
"examples": [
|
|
1204
|
+
{
|
|
1205
|
+
"source": "DataObject",
|
|
1206
|
+
"target": "DatabaseTable",
|
|
1207
|
+
"description": "User data object maps to users table"
|
|
1208
|
+
}
|
|
1209
|
+
]
|
|
1210
|
+
},
|
|
1211
|
+
{
|
|
1212
|
+
"id": "references-table",
|
|
1213
|
+
"predicate": "references-table",
|
|
1214
|
+
"inversePredicate": "table-referenced-by",
|
|
1215
|
+
"category": "data",
|
|
1216
|
+
"archimateAlignment": null,
|
|
1217
|
+
"description": "Foreign key relationships",
|
|
1218
|
+
"semantics": {
|
|
1219
|
+
"directionality": "bidirectional",
|
|
1220
|
+
"transitivity": false,
|
|
1221
|
+
"symmetry": false
|
|
1222
|
+
},
|
|
1223
|
+
"applicableLayers": ["08"],
|
|
1224
|
+
"fieldPaths": ["data.references-table", "x-references-table"],
|
|
1225
|
+
"examples": [
|
|
1226
|
+
{
|
|
1227
|
+
"source": "OrderTable",
|
|
1228
|
+
"target": "CustomerTable",
|
|
1229
|
+
"description": "Order table references customer table via foreign key"
|
|
1230
|
+
}
|
|
1231
|
+
]
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
"id": "derivedfrom",
|
|
1235
|
+
"predicate": "derives-from",
|
|
1236
|
+
"inversePredicate": "derived-by",
|
|
1237
|
+
"category": "data",
|
|
1238
|
+
"archimateAlignment": null,
|
|
1239
|
+
"description": "Calculated field relationships",
|
|
1240
|
+
"semantics": {
|
|
1241
|
+
"directionality": "bidirectional",
|
|
1242
|
+
"transitivity": false,
|
|
1243
|
+
"symmetry": false
|
|
1244
|
+
},
|
|
1245
|
+
"applicableLayers": ["03", "07", "08"],
|
|
1246
|
+
"fieldPaths": ["data.derives-from", "x-derives-from"],
|
|
1247
|
+
"examples": [
|
|
1248
|
+
{
|
|
1249
|
+
"source": "TotalPrice",
|
|
1250
|
+
"target": "Quantity, UnitPrice",
|
|
1251
|
+
"description": "Total price derives from quantity times unit price"
|
|
1252
|
+
}
|
|
1253
|
+
]
|
|
1254
|
+
},
|
|
1255
|
+
{
|
|
1256
|
+
"id": "validates",
|
|
1257
|
+
"predicate": "validates",
|
|
1258
|
+
"inversePredicate": "validated-by",
|
|
1259
|
+
"category": "testing",
|
|
1260
|
+
"archimateAlignment": null,
|
|
1261
|
+
"description": "Test element validates that a requirement or target is satisfied",
|
|
1262
|
+
"semantics": {
|
|
1263
|
+
"directionality": "bidirectional",
|
|
1264
|
+
"transitivity": false,
|
|
1265
|
+
"symmetry": false
|
|
1266
|
+
},
|
|
1267
|
+
"applicableLayers": ["12"],
|
|
1268
|
+
"examples": [
|
|
1269
|
+
{
|
|
1270
|
+
"source": "TestCaseSketch",
|
|
1271
|
+
"target": "CoverageRequirement",
|
|
1272
|
+
"description": "Test sketch validates requirement is satisfied",
|
|
1273
|
+
"layer": "12-testing"
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
"source": "TargetCoverageSummary",
|
|
1277
|
+
"target": "TestCoverageTarget",
|
|
1278
|
+
"description": "Summary validates coverage completeness of target",
|
|
1279
|
+
"layer": "12-testing"
|
|
1280
|
+
}
|
|
1281
|
+
]
|
|
1282
|
+
}
|
|
1283
|
+
],
|
|
1284
|
+
|
|
1285
|
+
"metadata": {
|
|
1286
|
+
"totalRelationships": 34,
|
|
1287
|
+
"categoryCounts": {
|
|
1288
|
+
"structural": 6,
|
|
1289
|
+
"behavioral": 5,
|
|
1290
|
+
"dependency": 3,
|
|
1291
|
+
"traceability": 4,
|
|
1292
|
+
"governance": 3,
|
|
1293
|
+
"apm": 3,
|
|
1294
|
+
"security": 3,
|
|
1295
|
+
"ux": 3,
|
|
1296
|
+
"data": 3,
|
|
1297
|
+
"testing": 1
|
|
1298
|
+
},
|
|
1299
|
+
"archimateAligned": 11,
|
|
1300
|
+
"documentationRoboticsExtensions": 23
|
|
1301
|
+
}
|
|
1302
|
+
}
|