@memoarchitect/ontology 0.12.1 → 0.13.2
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/README.md +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +0 -1
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.identity.yaml +216 -0
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +14 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +2 -24
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +2 -23
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +2 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +333 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +2 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +2 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -48
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +2 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +2 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +2 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +4 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +2 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +2 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +2 -22
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +1 -1
- package/profile/memo.package.yaml +1 -1
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +3 -1
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -2
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -2
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -2
- package/src/viewpoints/software/software_viewpoint.sysml +2 -2
- package/src/viewpoints/{definitions → stakeholders_concerns}/memo_stakeholders_concerns.sysml +34 -7
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -2
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
// Every view of the diagram gallery, in one package.
|
|
2
|
+
//
|
|
3
|
+
// Each sample's model content lives in its own file and package, next to
|
|
4
|
+
// this one, and is imported below. The views are gathered here so the
|
|
5
|
+
// explorer lists them together under each diagram-type viewpoint: a SysML
|
|
6
|
+
// root package is declared once, in one file, so a shared `diagram_samples`
|
|
7
|
+
// package cannot be split across the sample files themselves.
|
|
8
|
+
package diagram_samples {
|
|
9
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
10
|
+
private import ScalarValues::*;
|
|
11
|
+
private import memo_core_relationships::*;
|
|
12
|
+
private import memo_architecture_logical_structure::*;
|
|
13
|
+
private import memo_architecture_logical_interfaces::*;
|
|
14
|
+
private import memo_architecture_functional_functions::*;
|
|
15
|
+
private import memo_viewpoints_definitions::*;
|
|
16
|
+
private import memo_viewpoints_functional_functional_viewpoint::*;
|
|
17
|
+
private import memo_core_enumerations::*;
|
|
18
|
+
private import memo_core_common::*;
|
|
19
|
+
private import memo_core_common::MemoIdentity;
|
|
20
|
+
private import memo_architecture_operational_context_actors::*;
|
|
21
|
+
private import memo_architecture_operational_use_cases::*;
|
|
22
|
+
private import memo_architecture_operational_structure::*;
|
|
23
|
+
private import memo_viewpoints_operational_operational_viewpoint::*;
|
|
24
|
+
private import memo_architecture_operational_context_use_context::*;
|
|
25
|
+
private import memo_viewpoints_context_context_viewpoint::*;
|
|
26
|
+
private import memo_assurance_safety_risk_analysis::*;
|
|
27
|
+
private import memo_viewpoints_logical_logical_viewpoint::*;
|
|
28
|
+
private import memo_architecture_operational_activities::*;
|
|
29
|
+
private import memo_assurance_requirements_needs::*;
|
|
30
|
+
private import memo_assurance_requirements::*;
|
|
31
|
+
private import memo_viewpoints_requirements_requirements_viewpoint::*;
|
|
32
|
+
private import activity_example::*;
|
|
33
|
+
private import memo_architecture_functional_behavior::*;
|
|
34
|
+
private import memo_architecture_implementation_hardware_structure::*;
|
|
35
|
+
private import memo_architecture_realization_physical::*;
|
|
36
|
+
private import memo_viewpoints_physical_physical_viewpoint::*;
|
|
37
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_flow_view::*;
|
|
38
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_browser_view::*;
|
|
39
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_view::*;
|
|
40
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view::*;
|
|
41
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_view::*;
|
|
42
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_interconnection_view::*;
|
|
43
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operational_behaviour_view::*;
|
|
44
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_package_view::*;
|
|
45
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view::*;
|
|
46
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_sequence_view::*;
|
|
47
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard_activity_view::*;
|
|
48
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_transition_view::*;
|
|
49
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_view::*;
|
|
50
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_use_case_view::*;
|
|
51
|
+
|
|
52
|
+
// ─── action flow view ────────────────────────────────────────────────
|
|
53
|
+
|
|
54
|
+
// Child action-flow view — the process composite action's own steps. Its
|
|
55
|
+
// subject is `sampleActionFlow.process`, so the parent action-flow shows a
|
|
56
|
+
// "navigate to view" button on the Process node.
|
|
57
|
+
view processStepsDetail : MemoDiagramView {
|
|
58
|
+
expose sampleActionFlow::process::**;
|
|
59
|
+
attribute depth = 2;
|
|
60
|
+
@MemoIdentity { :>> shortDescription = "Internal steps of the Process action — step A through C."; }
|
|
61
|
+
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
62
|
+
attribute :>> diagramType = "afd";
|
|
63
|
+
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
view therapySessionFlow : MemoDiagramView {
|
|
67
|
+
expose sampleActionFlow::**;
|
|
68
|
+
expose laneA;
|
|
69
|
+
expose laneB;
|
|
70
|
+
attribute depth = 2;
|
|
71
|
+
@MemoIdentity { :>> shortDescription = "Dummy actions, typed item flows, successions, and a composite action for renderer development."; }
|
|
72
|
+
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
73
|
+
attribute :>> diagramType = "afd";
|
|
74
|
+
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ─── browser view ────────────────────────────────────────────────────
|
|
78
|
+
|
|
79
|
+
view operationalBrowserTree : MemoDiagramView {
|
|
80
|
+
expose controlSystem::**;
|
|
81
|
+
expose systemOperator;
|
|
82
|
+
expose maintenanceEngineer;
|
|
83
|
+
expose remoteMonitor;
|
|
84
|
+
expose startSystem::**;
|
|
85
|
+
expose runDiagnostics::**;
|
|
86
|
+
expose monitorStatus::**;
|
|
87
|
+
@MemoIdentity { :>> shortDescription = "Browser membership tree showing operational entities, actors, and use cases — demonstrates the browser view kind with mixed element types."; }
|
|
88
|
+
attribute :>> viewKind = DiagramViewKind::browser;
|
|
89
|
+
attribute :>> diagramType = "brw";
|
|
90
|
+
ref :>> viewpointDefinition = browserViewpoint;
|
|
91
|
+
part :>> selectionQuery {
|
|
92
|
+
attribute :>> includeElementKinds = ("OperationalEntity", "User", "UseCase");
|
|
93
|
+
attribute :>> includeRelationshipKinds = ("Composes", "ParticipatesIn");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// ─── context view ────────────────────────────────────────────────────
|
|
98
|
+
|
|
99
|
+
view systemContextDiagram : MemoDiagramView {
|
|
100
|
+
expose infusionSystem::**;
|
|
101
|
+
expose clinician;
|
|
102
|
+
expose patient;
|
|
103
|
+
expose biomedTech;
|
|
104
|
+
expose pharmacySystem;
|
|
105
|
+
expose homeContext;
|
|
106
|
+
attribute depth = 1;
|
|
107
|
+
@MemoIdentity { :>> shortDescription = "Operational system context: one black-box system boundary, its external people, peer systems, operating environment, and named boundary-crossing interactions."; }
|
|
108
|
+
attribute :>> viewKind = DiagramViewKind::general;
|
|
109
|
+
attribute :>> diagramType = "context";
|
|
110
|
+
ref :>> viewpointDefinition = contextDiagramViewpoint;
|
|
111
|
+
part :>> selectionQuery {
|
|
112
|
+
attribute :>> includeRelationshipKinds = ("connect", "flow", "AppliesInContext");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ─── functional flow view ────────────────────────────────────────────
|
|
117
|
+
|
|
118
|
+
view medicationDeliveryFlow : MemoDiagramView {
|
|
119
|
+
expose fxDeliveryFlow::**;
|
|
120
|
+
expose fxPumpSystem::**;
|
|
121
|
+
attribute depth = 2;
|
|
122
|
+
@MemoIdentity { :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in)."; }
|
|
123
|
+
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
124
|
+
attribute :>> diagramType = "ffd";
|
|
125
|
+
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ─── grid view ───────────────────────────────────────────────────────
|
|
129
|
+
|
|
130
|
+
view failureModeGrid : MemoDiagramView {
|
|
131
|
+
expose fmMotorRunaway::**;
|
|
132
|
+
expose fmAirSensorSilent::**;
|
|
133
|
+
expose fmOcclusionDrift::**;
|
|
134
|
+
attribute depth = 2;
|
|
135
|
+
@MemoIdentity { :>> shortDescription = "Three FailureMode rows rendered as an FMEA worksheet table — one section, columns auto-derived from the attributes the rows carry."; }
|
|
136
|
+
attribute :>> viewKind = DiagramViewKind::grid;
|
|
137
|
+
attribute :>> diagramType = "fmea";
|
|
138
|
+
ref :>> viewpointDefinition = gridViewpoint;
|
|
139
|
+
part :>> selectionQuery {
|
|
140
|
+
attribute :>> includeElementKinds = ("FailureMode");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// ─── interconnection view ────────────────────────────────────────────
|
|
145
|
+
|
|
146
|
+
// Child IBD view — the heater assembly's own internal wiring. Its subject
|
|
147
|
+
// is `heaterAssembly`, so the parent IBD shows a "navigate to view" button
|
|
148
|
+
// on the Thermal Control Assembly part.
|
|
149
|
+
view heaterAssemblyIBD : MemoDiagramView {
|
|
150
|
+
expose coffeeMachine::heaterAssembly::**;
|
|
151
|
+
attribute depth = 2;
|
|
152
|
+
@MemoIdentity { :>> shortDescription = "Internal wiring of the Thermal Control Assembly — heating element and its status output."; }
|
|
153
|
+
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
154
|
+
attribute :>> diagramType = "ibd";
|
|
155
|
+
attribute :>> rendererProfile = "ibd";
|
|
156
|
+
ref :>> viewpointDefinition = ibdViewpoint;
|
|
157
|
+
part :>> selectionQuery {
|
|
158
|
+
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
view heatingElementIBD : MemoDiagramView {
|
|
163
|
+
expose coffeeMachine::heaterAssembly::heatingElement::**;
|
|
164
|
+
attribute depth = 2;
|
|
165
|
+
@MemoIdentity { :>> shortDescription = "Third-level IBD — resistive coil and temperature sensor inside the heating element."; }
|
|
166
|
+
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
167
|
+
attribute :>> diagramType = "ibd";
|
|
168
|
+
attribute :>> rendererProfile = "ibd";
|
|
169
|
+
ref :>> viewpointDefinition = ibdViewpoint;
|
|
170
|
+
part :>> selectionQuery {
|
|
171
|
+
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
view beverageMachineIBD : MemoDiagramView {
|
|
176
|
+
expose coffeeMachine::**;
|
|
177
|
+
expose waterSupply::**;
|
|
178
|
+
expose cup::**;
|
|
179
|
+
attribute depth = 2;
|
|
180
|
+
@MemoIdentity { :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces."; }
|
|
181
|
+
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
182
|
+
attribute :>> diagramType = "ibd";
|
|
183
|
+
// The dedicated IBD renderer (Base -> Ibd class hierarchy): square
|
|
184
|
+
// wall ports, orange-in/green-out, solid grabbable nested-connector
|
|
185
|
+
// housings, orthogonal crossing-bridge routing, monochrome shading.
|
|
186
|
+
attribute :>> rendererProfile = "ibd";
|
|
187
|
+
ref :>> viewpointDefinition = ibdViewpoint;
|
|
188
|
+
part :>> selectionQuery {
|
|
189
|
+
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// ─── operational behaviour view ──────────────────────────────────────
|
|
194
|
+
|
|
195
|
+
view clinicalSetupActivity : MemoDiagramView {
|
|
196
|
+
expose opSetupFlow::**;
|
|
197
|
+
expose opCareSystem::**;
|
|
198
|
+
attribute depth = 2;
|
|
199
|
+
@MemoIdentity { :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step."; }
|
|
200
|
+
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
201
|
+
attribute :>> diagramType = "ofd";
|
|
202
|
+
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// ─── package view ────────────────────────────────────────────────────
|
|
206
|
+
|
|
207
|
+
view threeLayerPackages : MemoDiagramView {
|
|
208
|
+
expose presentation::**;
|
|
209
|
+
expose domain::**;
|
|
210
|
+
expose infrastructure::**;
|
|
211
|
+
attribute depth = 2;
|
|
212
|
+
@MemoIdentity { :>> shortDescription = "Three-layer package overview — presentation, domain, infrastructure — rendered as a browser membership tree."; }
|
|
213
|
+
attribute :>> viewKind = DiagramViewKind::browser;
|
|
214
|
+
attribute :>> diagramType = "pkg";
|
|
215
|
+
ref :>> viewpointDefinition = browserViewpoint;
|
|
216
|
+
part :>> selectionQuery {
|
|
217
|
+
attribute :>> includeRelationshipKinds = ("Composes");
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// ─── requirements view ───────────────────────────────────────────────
|
|
222
|
+
|
|
223
|
+
view needsToRequirements : MemoDiagramView {
|
|
224
|
+
expose needSafeTherapy::**;
|
|
225
|
+
expose needTimelyAlarms::**;
|
|
226
|
+
expose reqDoseLimit;
|
|
227
|
+
expose reqOcclusionAlarm;
|
|
228
|
+
expose reqAlarmLoudness;
|
|
229
|
+
attribute depth = 1;
|
|
230
|
+
@MemoIdentity { :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges."; }
|
|
231
|
+
attribute :>> viewKind = DiagramViewKind::general;
|
|
232
|
+
attribute :>> diagramType = "req";
|
|
233
|
+
ref :>> viewpointDefinition = requirementsDiagramViewpoint;
|
|
234
|
+
part :>> selectionQuery {
|
|
235
|
+
attribute :>> includeRelationshipKinds = ("DerivesFrom");
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// ─── sequence view ───────────────────────────────────────────────────
|
|
240
|
+
|
|
241
|
+
view startInfusionSequence : MemoDiagramView {
|
|
242
|
+
expose startInfusion::**;
|
|
243
|
+
expose clinician::**;
|
|
244
|
+
expose pumpController::**;
|
|
245
|
+
expose pumpMechanism::**;
|
|
246
|
+
expose monitorLoop::**;
|
|
247
|
+
expose errorHandling::**;
|
|
248
|
+
attribute depth = 2;
|
|
249
|
+
@MemoIdentity { :>> shortDescription = "Start-infusion sequence with combined fragments — loop for sensor monitoring and alt for error handling."; }
|
|
250
|
+
attribute :>> viewKind = DiagramViewKind::sequence;
|
|
251
|
+
attribute :>> diagramType = "seq";
|
|
252
|
+
ref :>> viewpointDefinition = sequenceViewpoint;
|
|
253
|
+
part :>> selectionQuery {
|
|
254
|
+
attribute :>> includeElementKinds = ("FunctionalFlowStep", "User", "LogicalComponent", "Part");
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// ─── standard activity view ──────────────────────────────────────────
|
|
259
|
+
|
|
260
|
+
view orderFulfillmentActivity : MemoDiagramView {
|
|
261
|
+
expose FulfillOrder::**;
|
|
262
|
+
attribute depth = 2;
|
|
263
|
+
@MemoIdentity { :>> shortDescription = "Order fulfilment — accept, validate, decide, fork into parallel shipment and invoice, join, notify, send receipt, and terminate."; }
|
|
264
|
+
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
265
|
+
attribute :>> diagramType = "afd";
|
|
266
|
+
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// ─── state transition view ───────────────────────────────────────────
|
|
270
|
+
|
|
271
|
+
view pumpModeStateMachine : MemoDiagramView {
|
|
272
|
+
expose pumpModes::**;
|
|
273
|
+
attribute depth = 2;
|
|
274
|
+
@MemoIdentity { :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding."; }
|
|
275
|
+
attribute :>> viewKind = DiagramViewKind::statetransition;
|
|
276
|
+
attribute :>> diagramType = "stm";
|
|
277
|
+
ref :>> viewpointDefinition = stateMachineViewpoint;
|
|
278
|
+
part :>> selectionQuery {
|
|
279
|
+
attribute :>> includeElementKinds = ("StateMachine", "MemoState");
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
view infusingSubStates : MemoDiagramView {
|
|
284
|
+
expose pumpModes::infusing::**;
|
|
285
|
+
attribute depth = 2;
|
|
286
|
+
@MemoIdentity { :>> shortDescription = "Sub-states of the Infusing composite state — Priming, Delivering, and Holding with their internal transitions."; }
|
|
287
|
+
attribute :>> viewKind = DiagramViewKind::statetransition;
|
|
288
|
+
attribute :>> diagramType = "stm";
|
|
289
|
+
ref :>> viewpointDefinition = stateMachineViewpoint;
|
|
290
|
+
part :>> selectionQuery {
|
|
291
|
+
attribute :>> includeElementKinds = ("MemoState");
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// ─── tree view ───────────────────────────────────────────────────────
|
|
296
|
+
|
|
297
|
+
view blockDecomposition : MemoDiagramView {
|
|
298
|
+
expose rootA::**;
|
|
299
|
+
attribute depth = 2;
|
|
300
|
+
@MemoIdentity { :>> shortDescription = "Block decomposition tree — hardware assemblies with varied branch depths."; }
|
|
301
|
+
attribute :>> viewKind = DiagramViewKind::general;
|
|
302
|
+
attribute :>> diagramType = "bdd";
|
|
303
|
+
ref :>> viewpointDefinition = treeViewpoint;
|
|
304
|
+
attribute :>> layoutHint = "tree";
|
|
305
|
+
attribute :>> styleHint = "expanded:rootA,rootB,branchA1,branchB1";
|
|
306
|
+
part :>> selectionQuery {
|
|
307
|
+
attribute :>> includeRelationshipKinds = ("Composes");
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// ─── use case view ───────────────────────────────────────────────────
|
|
312
|
+
|
|
313
|
+
view deviceUseCases : MemoDiagramView {
|
|
314
|
+
expose patient;
|
|
315
|
+
expose clinician;
|
|
316
|
+
expose serviceTechnician;
|
|
317
|
+
expose nursingStaff;
|
|
318
|
+
expose reviewStatus;
|
|
319
|
+
expose configureTherapy;
|
|
320
|
+
expose maintainDevice;
|
|
321
|
+
expose documentTreatment;
|
|
322
|
+
expose validateTherapySettings;
|
|
323
|
+
@MemoIdentity { :>> shortDescription = "Actors outside a device boundary with include, extend, generalization, hierarchy-level, and orthogonal-routing presentation."; }
|
|
324
|
+
attribute :>> viewKind = DiagramViewKind::general;
|
|
325
|
+
attribute :>> diagramType = "ucd";
|
|
326
|
+
ref :>> viewpointDefinition = useCaseViewpoint;
|
|
327
|
+
part :>> selectionQuery {
|
|
328
|
+
attribute :>> includeElementKinds = ("User", "UseCase");
|
|
329
|
+
attribute :>> includeRelationshipKinds = ("ParticipatesIn", "IncludesStep", "Extends", "Specialization");
|
|
330
|
+
}
|
|
331
|
+
attribute :>> layoutHint = "usecase:level=all;edge=rounded";
|
|
332
|
+
}
|
|
333
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_functional_flow_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
|
|
4
5
|
private import memo_architecture_logical_structure::*;
|
|
@@ -131,14 +132,4 @@ package diagram_samples {
|
|
|
131
132
|
allocate fxDeliveryFlow.fxDeliver.fxOpenValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
|
|
132
133
|
allocate fxDeliveryFlow.fxDeliver.fxHoldDose to fxPumpSystem.fxDeliverySubsystem.fxActuator;
|
|
133
134
|
allocate fxDeliveryFlow.fxDeliver.fxCloseValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
|
|
134
|
-
|
|
135
|
-
view medicationDeliveryFlow : MemoDiagramView {
|
|
136
|
-
expose fxDeliveryFlow::**;
|
|
137
|
-
expose fxPumpSystem::**;
|
|
138
|
-
attribute depth = 2;
|
|
139
|
-
@MemoIdentity { :>> shortDescription = "Component behaviour: functions in swimlanes per realising component, typed data/energy/material flows, a fork/join for concurrent occlusion monitoring, and a composite 'Deliver Medication' valve sub-flow (double-click to drill in)."; }
|
|
140
|
-
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
141
|
-
attribute :>> diagramType = "ffd";
|
|
142
|
-
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
143
|
-
}
|
|
144
135
|
}
|
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_grid_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
// Grid sample (grid view kind, `fmea` diagram type). The grid template groups
|
|
3
4
|
// rows by kind and derives columns from whichever attributes the rows
|
|
4
5
|
// actually carry — no fixed schema, so three FailureMode rows render as one
|
|
@@ -47,18 +48,4 @@ package diagram_samples {
|
|
|
47
48
|
attribute :>> rpn = 112;
|
|
48
49
|
attribute :>> criticality = CriticalityKind::high;
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
view failureModeGrid : MemoDiagramView {
|
|
52
|
-
expose fmMotorRunaway::**;
|
|
53
|
-
expose fmAirSensorSilent::**;
|
|
54
|
-
expose fmOcclusionDrift::**;
|
|
55
|
-
attribute depth = 2;
|
|
56
|
-
@MemoIdentity { :>> shortDescription = "Three FailureMode rows rendered as an FMEA worksheet table — one section, columns auto-derived from the attributes the rows carry."; }
|
|
57
|
-
attribute :>> viewKind = DiagramViewKind::grid;
|
|
58
|
-
attribute :>> diagramType = "fmea";
|
|
59
|
-
ref :>> viewpointDefinition = gridViewpoint;
|
|
60
|
-
part :>> selectionQuery {
|
|
61
|
-
attribute :>> includeElementKinds = ("FailureMode");
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
51
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_interconnection_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
private import memo_architecture_operational_context_actors::*;
|
|
4
5
|
private import memo_architecture_operational_context_use_context::*;
|
|
@@ -97,51 +98,4 @@ package diagram_samples {
|
|
|
97
98
|
flow from coffeeMachine.heaterAssembly.heatingElement.resistiveCoil.heatOut to coffeeMachine.heaterAssembly.heatingElement.temperatureSensor.heatIn;
|
|
98
99
|
bind coffeeMachine.heaterAssembly.heatingElement.powerIn = coffeeMachine.heaterAssembly.heatingElement.resistiveCoil.coilPowerIn;
|
|
99
100
|
bind coffeeMachine.heaterAssembly.heatingElement.temperatureSensor.sensorReadingOut = coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut;
|
|
100
|
-
|
|
101
|
-
// Child IBD view — the heater assembly's own internal wiring. Its subject
|
|
102
|
-
// is `heaterAssembly`, so the parent IBD shows a "navigate to view" button
|
|
103
|
-
// on the Thermal Control Assembly part.
|
|
104
|
-
view heaterAssemblyIBD : MemoDiagramView {
|
|
105
|
-
expose coffeeMachine.heaterAssembly::**;
|
|
106
|
-
attribute depth = 2;
|
|
107
|
-
@MemoIdentity { :>> shortDescription = "Internal wiring of the Thermal Control Assembly — heating element and its status output."; }
|
|
108
|
-
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
109
|
-
attribute :>> diagramType = "ibd";
|
|
110
|
-
attribute :>> rendererProfile = "ibd";
|
|
111
|
-
ref :>> viewpointDefinition = ibdViewpoint;
|
|
112
|
-
part :>> selectionQuery {
|
|
113
|
-
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
view heatingElementIBD : MemoDiagramView {
|
|
118
|
-
expose coffeeMachine.heaterAssembly.heatingElement::**;
|
|
119
|
-
attribute depth = 2;
|
|
120
|
-
@MemoIdentity { :>> shortDescription = "Third-level IBD — resistive coil and temperature sensor inside the heating element."; }
|
|
121
|
-
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
122
|
-
attribute :>> diagramType = "ibd";
|
|
123
|
-
attribute :>> rendererProfile = "ibd";
|
|
124
|
-
ref :>> viewpointDefinition = ibdViewpoint;
|
|
125
|
-
part :>> selectionQuery {
|
|
126
|
-
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
view beverageMachineIBD : MemoDiagramView {
|
|
131
|
-
expose coffeeMachine::**;
|
|
132
|
-
expose waterSupply::**;
|
|
133
|
-
expose cup::**;
|
|
134
|
-
attribute depth = 2;
|
|
135
|
-
@MemoIdentity { :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces."; }
|
|
136
|
-
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
137
|
-
attribute :>> diagramType = "ibd";
|
|
138
|
-
// The dedicated IBD renderer (Base -> Ibd class hierarchy): square
|
|
139
|
-
// wall ports, orange-in/green-out, solid grabbable nested-connector
|
|
140
|
-
// housings, orthogonal crossing-bridge routing, monochrome shading.
|
|
141
|
-
attribute :>> rendererProfile = "ibd";
|
|
142
|
-
ref :>> viewpointDefinition = ibdViewpoint;
|
|
143
|
-
part :>> selectionQuery {
|
|
144
|
-
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
101
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operational_behaviour_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
private import memo_architecture_operational_context_actors::*;
|
|
4
5
|
private import memo_core_relationships::*;
|
|
@@ -97,14 +98,4 @@ package diagram_samples {
|
|
|
97
98
|
allocate opSetupFlow.opAdminister.opCheckLockout to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
98
99
|
allocate opSetupFlow.opAdminister.opDeliverDose to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
99
100
|
allocate opSetupFlow.opAdminister.opLogEvent to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
100
|
-
|
|
101
|
-
view clinicalSetupActivity : MemoDiagramView {
|
|
102
|
-
expose opSetupFlow::**;
|
|
103
|
-
expose opCareSystem::**;
|
|
104
|
-
attribute depth = 2;
|
|
105
|
-
@MemoIdentity { :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step."; }
|
|
106
|
-
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
107
|
-
attribute :>> diagramType = "ofd";
|
|
108
|
-
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
109
|
-
}
|
|
110
101
|
}
|
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_package_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
private import memo_architecture_logical_structure::*;
|
|
4
5
|
private import memo_architecture_logical_interfaces::*;
|
|
@@ -52,18 +53,4 @@ package diagram_samples {
|
|
|
52
53
|
inout port netIO : DataPort { inout item payload : MemoItem; }
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
view threeLayerPackages : MemoDiagramView {
|
|
57
|
-
expose presentation::**;
|
|
58
|
-
expose domain::**;
|
|
59
|
-
expose infrastructure::**;
|
|
60
|
-
attribute depth = 2;
|
|
61
|
-
@MemoIdentity { :>> shortDescription = "Three-layer package overview — presentation, domain, infrastructure — rendered as a browser membership tree."; }
|
|
62
|
-
attribute :>> viewKind = DiagramViewKind::browser;
|
|
63
|
-
attribute :>> diagramType = "pkg";
|
|
64
|
-
ref :>> viewpointDefinition = browserViewpoint;
|
|
65
|
-
part :>> selectionQuery {
|
|
66
|
-
attribute :>> includeRelationshipKinds = ("Composes");
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
56
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirements_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
// Requirements sample (general view kind, `req` diagram type). Stakeholder needs
|
|
3
4
|
// on the left derive into system requirements; `DerivesFrom` edges render as the
|
|
4
5
|
// requirements-diagram trace lines.
|
|
@@ -44,20 +45,4 @@ package diagram_samples {
|
|
|
44
45
|
connection : DerivesFrom connect sourceDriver ::> needSafeTherapy to targetRequirement ::> reqOcclusionAlarm;
|
|
45
46
|
connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqOcclusionAlarm;
|
|
46
47
|
connection : DerivesFrom connect sourceDriver ::> needTimelyAlarms to targetRequirement ::> reqAlarmLoudness;
|
|
47
|
-
|
|
48
|
-
view needsToRequirements : MemoDiagramView {
|
|
49
|
-
expose needSafeTherapy::**;
|
|
50
|
-
expose needTimelyAlarms::**;
|
|
51
|
-
expose reqDoseLimit;
|
|
52
|
-
expose reqOcclusionAlarm;
|
|
53
|
-
expose reqAlarmLoudness;
|
|
54
|
-
attribute depth = 1;
|
|
55
|
-
@MemoIdentity { :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges."; }
|
|
56
|
-
attribute :>> viewKind = DiagramViewKind::general;
|
|
57
|
-
attribute :>> diagramType = "req";
|
|
58
|
-
ref :>> viewpointDefinition = requirementsDiagramViewpoint;
|
|
59
|
-
part :>> selectionQuery {
|
|
60
|
-
attribute :>> includeRelationshipKinds = ("DerivesFrom");
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
48
|
}
|
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_sequence_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
// Sequence sample (sequence view kind, `seq` diagram type). A FunctionalFlow
|
|
3
4
|
// owns an ordered chain of FunctionalFlowSteps; each step is `allocate`d to
|
|
4
5
|
// the lifeline (an actor or component) that performs it, and the sequence
|
|
@@ -24,12 +25,12 @@ package diagram_samples {
|
|
|
24
25
|
|
|
25
26
|
// Combined fragment definitions — referenced by steps' `fragment` attribute.
|
|
26
27
|
part monitorLoop {
|
|
27
|
-
attribute
|
|
28
|
+
attribute name = "Monitor Loop";
|
|
28
29
|
attribute fragmentType = "loop";
|
|
29
30
|
attribute guard = "vitals abnormal";
|
|
30
31
|
}
|
|
31
32
|
part errorHandling {
|
|
32
|
-
attribute
|
|
33
|
+
attribute name = "Error Handling";
|
|
33
34
|
attribute fragmentType = "alt";
|
|
34
35
|
attribute fragmentGuards = "[error recoverable]|[else]";
|
|
35
36
|
}
|
|
@@ -77,21 +78,4 @@ package diagram_samples {
|
|
|
77
78
|
allocate startInfusion.stepRetryDelivery to pumpController;
|
|
78
79
|
allocate startInfusion.stepAlertUser to clinician;
|
|
79
80
|
allocate startInfusion.stepNotify to clinician;
|
|
80
|
-
|
|
81
|
-
view startInfusionSequence : MemoDiagramView {
|
|
82
|
-
expose startInfusion::**;
|
|
83
|
-
expose clinician::**;
|
|
84
|
-
expose pumpController::**;
|
|
85
|
-
expose pumpMechanism::**;
|
|
86
|
-
expose monitorLoop::**;
|
|
87
|
-
expose errorHandling::**;
|
|
88
|
-
attribute depth = 2;
|
|
89
|
-
@MemoIdentity { :>> shortDescription = "Start-infusion sequence with combined fragments — loop for sensor monitoring and alt for error handling."; }
|
|
90
|
-
attribute :>> viewKind = DiagramViewKind::sequence;
|
|
91
|
-
attribute :>> diagramType = "seq";
|
|
92
|
-
ref :>> viewpointDefinition = sequenceViewpoint;
|
|
93
|
-
part :>> selectionQuery {
|
|
94
|
-
attribute :>> includeElementKinds = ("FunctionalFlowStep", "User", "LogicalComponent", "Part");
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
81
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard_activity_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
// Standard SysML v2 activity sample (actionflow view kind, `afd` diagram type).
|
|
3
4
|
//
|
|
4
5
|
// The view over `activity_example::CustomerProcess`, the standard-SysML activity
|
|
@@ -23,12 +24,4 @@ package diagram_samples {
|
|
|
23
24
|
|
|
24
25
|
private import memo_core_common::*;
|
|
25
26
|
private import memo_core_common::MemoIdentity;
|
|
26
|
-
view orderFulfillmentActivity : MemoDiagramView {
|
|
27
|
-
expose FulfillOrder::**;
|
|
28
|
-
attribute depth = 2;
|
|
29
|
-
@MemoIdentity { :>> shortDescription = "Order fulfilment — accept, validate, decide, fork into parallel shipment and invoice, join, notify, send receipt, and terminate."; }
|
|
30
|
-
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
31
|
-
attribute :>> diagramType = "afd";
|
|
32
|
-
ref :>> viewpointDefinition = actionFlowViewpoint;
|
|
33
|
-
}
|
|
34
27
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_transition_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
// State transition sample (statetransition view kind, `stm` diagram type). A
|
|
3
4
|
// behaviour machine owns its mode states by containing them, and each native
|
|
4
5
|
// transition lives inside the state whose substates it connects.
|
|
@@ -62,30 +63,6 @@ package diagram_samples {
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
|
|
65
|
-
view pumpModeStateMachine : MemoDiagramView {
|
|
66
|
-
expose pumpModes::**;
|
|
67
|
-
attribute depth = 2;
|
|
68
|
-
@MemoIdentity { :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding."; }
|
|
69
|
-
attribute :>> viewKind = DiagramViewKind::statetransition;
|
|
70
|
-
attribute :>> diagramType = "stm";
|
|
71
|
-
ref :>> viewpointDefinition = stateMachineViewpoint;
|
|
72
|
-
part :>> selectionQuery {
|
|
73
|
-
attribute :>> includeElementKinds = ("StateMachine", "MemoState");
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
view infusingSubStates : MemoDiagramView {
|
|
78
|
-
expose pumpModes.infusing::**;
|
|
79
|
-
attribute depth = 2;
|
|
80
|
-
@MemoIdentity { :>> shortDescription = "Sub-states of the Infusing composite state — Priming, Delivering, and Holding with their internal transitions."; }
|
|
81
|
-
attribute :>> viewKind = DiagramViewKind::statetransition;
|
|
82
|
-
attribute :>> diagramType = "stm";
|
|
83
|
-
ref :>> viewpointDefinition = stateMachineViewpoint;
|
|
84
|
-
part :>> selectionQuery {
|
|
85
|
-
attribute :>> includeElementKinds = ("MemoState");
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
66
|
// The machine is one containment tree, so exposing its root reaches every
|
|
90
67
|
// state and transition; the former per-element IncludedIn list restated
|
|
91
68
|
// that tree a second time and is gone with it.
|
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_view {
|
|
2
|
+
private import memo_examples_sysml_diagram_samples_viewpoints_unassigned::*;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
private import memo_architecture_implementation_hardware_structure::*;
|
|
4
5
|
|
|
@@ -32,18 +33,4 @@ package diagram_samples {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
view blockDecomposition : MemoDiagramView {
|
|
37
|
-
expose rootA::**;
|
|
38
|
-
attribute depth = 2;
|
|
39
|
-
@MemoIdentity { :>> shortDescription = "Block decomposition tree — hardware assemblies with varied branch depths."; }
|
|
40
|
-
attribute :>> viewKind = DiagramViewKind::general;
|
|
41
|
-
attribute :>> diagramType = "bdd";
|
|
42
|
-
ref :>> viewpointDefinition = treeViewpoint;
|
|
43
|
-
attribute :>> layoutHint = "tree";
|
|
44
|
-
attribute :>> styleHint = "expanded:rootA,rootB,branchA1,branchB1";
|
|
45
|
-
part :>> selectionQuery {
|
|
46
|
-
attribute :>> includeRelationshipKinds = ("Composes");
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
36
|
}
|