@memoarchitect/ontology 0.7.0 → 0.8.24

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.
Files changed (270) hide show
  1. package/README.md +4 -2
  2. package/examples/connected-patient-monitor/memo.package.yaml +3 -0
  3. package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
  4. package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
  5. package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
  6. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
  7. package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
  8. package/examples/functional-logical-physical/memo.package.yaml +3 -0
  9. package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
  10. package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
  11. package/examples/gpca-pump/memo.package.yaml +3 -0
  12. package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
  13. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
  14. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
  15. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
  16. package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
  17. package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
  18. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
  19. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
  20. package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
  21. package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
  22. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
  23. package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
  24. package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
  25. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
  26. package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
  27. package/examples/gpca-pump/model/catalog/project.sysml +5 -0
  28. package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
  29. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
  30. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
  31. package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
  32. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
  33. package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
  34. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
  35. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
  36. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
  37. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
  38. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
  39. package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
  40. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
  41. package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
  42. package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
  43. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
  44. package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
  45. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
  46. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
  47. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
  48. package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
  49. package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
  50. package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
  51. package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
  52. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
  53. package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
  54. package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
  55. package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
  56. package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
  57. package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
  58. package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
  59. package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
  60. package/examples/multidimensional-layers/memo.package.yaml +3 -0
  61. package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
  62. package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
  63. package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
  64. package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
  65. package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
  66. package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
  67. package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
  68. package/examples/reusable-instrument/memo.package.yaml +3 -0
  69. package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
  70. package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
  71. package/examples/ros-mobile-robot/README.md +40 -0
  72. package/examples/ros-mobile-robot/memo.package.yaml +3 -0
  73. package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
  74. package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
  75. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
  76. package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
  77. package/examples/software-only-medical-device/memo.package.yaml +3 -0
  78. package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
  79. package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
  80. package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
  81. package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
  82. package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
  83. package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
  84. package/examples/surgical-robot/memo.package.yaml +3 -0
  85. package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
  86. package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
  87. package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
  88. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
  89. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
  90. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
  91. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
  92. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
  93. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
  94. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
  95. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
  96. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
  97. package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
  98. package/examples/temperature-alarm/memo.package.yaml +3 -0
  99. package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
  100. package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
  101. package/examples/ui-screen-regions/memo.package.yaml +3 -0
  102. package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
  103. package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
  104. package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
  105. package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
  106. package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
  107. package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
  108. package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
  109. package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
  110. package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
  111. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
  112. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
  113. package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
  114. package/extensions/LICENSES/MIT.txt +19 -0
  115. package/extensions/README.md +94 -0
  116. package/extensions/aadl/memo.package.yaml +18 -0
  117. package/extensions/aadl/src/aadl_extension.sysml +6 -0
  118. package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
  119. package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
  120. package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
  121. package/extensions/cloud/memo.package.yaml +18 -0
  122. package/extensions/cloud/src/cloud_extension.sysml +44 -0
  123. package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
  124. package/extensions/container/memo.package.yaml +18 -0
  125. package/extensions/container/src/container_extension.sysml +37 -0
  126. package/extensions/container/src/methodology/container_methodology.sysml +17 -0
  127. package/extensions/messaging/memo.package.yaml +18 -0
  128. package/extensions/messaging/src/messaging_extension.sysml +64 -0
  129. package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
  130. package/extensions/ros/memo.package.yaml +18 -0
  131. package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
  132. package/extensions/ros/src/ros_extension.sysml +200 -0
  133. package/extensions/template/src/extension.sysml +37 -0
  134. package/memo.manifest.yaml +13 -2
  135. package/methodologies/default/memo.package.yaml +1 -1
  136. package/methodologies/gpca/memo.package.yaml +1 -1
  137. package/ontology/memo.package.yaml +1 -1
  138. package/package.json +5 -3
  139. package/profile/memo.package.yaml +1 -1
  140. package/src/architecture/decisions/memo_decisions.sysml +23 -2
  141. package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
  142. package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
  143. package/src/architecture/functional/functions/memo_functions.sysml +93 -36
  144. package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
  145. package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
  146. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
  147. package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
  148. package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
  149. package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
  150. package/src/architecture/operational/activities/memo_activities.sysml +27 -29
  151. package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
  152. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
  153. package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
  154. package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
  155. package/src/architecture/operational/structure/memo_operational.sysml +42 -13
  156. package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
  157. package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
  158. package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
  159. package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
  160. package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
  161. package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
  162. package/src/artifacts/standards/cfr_21_820.sysml +116 -0
  163. package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
  164. package/src/artifacts/standards/iec_60601_1.sysml +149 -0
  165. package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
  166. package/src/artifacts/standards/iec_60812.sysml +51 -0
  167. package/src/artifacts/standards/iec_62304.sysml +210 -0
  168. package/src/artifacts/standards/iec_62366_1.sysml +113 -0
  169. package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
  170. package/src/artifacts/standards/iso_13485.sysml +113 -0
  171. package/src/artifacts/standards/iso_14971.sysml +94 -0
  172. package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
  173. package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
  174. package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
  175. package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
  176. package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
  177. package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
  178. package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
  179. package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
  180. package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
  181. package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
  182. package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
  183. package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
  184. package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
  185. package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
  186. package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
  187. package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
  188. package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
  189. package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
  190. package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
  191. package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
  192. package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
  193. package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
  194. package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
  195. package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
  196. package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
  197. package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
  198. package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
  199. package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
  200. package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
  201. package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
  202. package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
  203. package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
  204. package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
  205. package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
  206. package/src/artifacts/templates/dhf/system/sad.md +173 -0
  207. package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
  208. package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
  209. package/src/artifacts/templates/dhf/system/syrs.md +128 -0
  210. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
  211. package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
  212. package/src/assurance/requirements/memo_requirements.sysml +7 -20
  213. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  214. package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
  215. package/src/assurance/safety_risk/memo_risk.sysml +90 -7
  216. package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
  217. package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
  218. package/src/core/annotations/memo_annotations.sysml +25 -6
  219. package/src/core/common/memo_common.sysml +130 -21
  220. package/src/core/consistency_rules/consistency_rules.sysml +1 -1
  221. package/src/core/dimensions/dimensions.sysml +12 -0
  222. package/src/core/enumerations/memo_enumerations.sysml +60 -14
  223. package/src/core/relationships/memo_relationships.sysml +199 -196
  224. package/src/memo_namespaces.sysml +30 -0
  225. package/src/methodology/core/memo_core.sysml +24 -0
  226. package/src/methodology/profiles/memo_profiles.sysml +1 -1
  227. package/src/methodology/workflow/memo_workflow.sysml +5 -5
  228. package/src/rules/closure/closure_rules.sysml +20 -20
  229. package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
  230. package/src/rules/ontology/ontology_invariants.sysml +223 -11
  231. package/src/rules/quantitative/quantitative_rules.sysml +2 -2
  232. package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
  233. package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
  234. package/src/viewpoints/context/context_viewpoint.sysml +2 -3
  235. package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
  236. package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
  237. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
  238. package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
  239. package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
  240. package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
  241. package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
  242. package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
  243. package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
  244. package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
  245. package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
  246. package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
  247. package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
  248. package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
  249. package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
  250. package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
  251. package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
  252. package/src/viewpoints/software/software_viewpoint.sysml +1 -2
  253. package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
  254. package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
  255. package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
  256. package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
  257. package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
  258. package/templates/connected-device/memo.package.yaml +2 -0
  259. package/templates/default/memo.package.yaml +2 -0
  260. package/templates/infusion-pump/memo.package.yaml +2 -0
  261. package/templates/monitoring-device/memo.package.yaml +2 -0
  262. package/templates/samd/memo.package.yaml +2 -0
  263. package/examples/extensions/README.md +0 -16
  264. package/examples/extensions/template/src/extension.sysml +0 -15
  265. package/examples/gpca-pump/gpca-pump.kpar +0 -0
  266. /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
  267. /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
  268. /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
  269. /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
  270. /package/{examples/extensions → extensions}/template/memo.package.yaml +0 -0
@@ -3,6 +3,7 @@
3
3
  // as context → use case → workflow → scenarios → scenario-owned activities.
4
4
  package memo_examples_surgical_closure_workflow {
5
5
  private import ScalarValues::*;
6
+ private import ModelingMetadata::*;
6
7
 
7
8
  private import memo_core_enumerations::*;
8
9
  private import memo_core_relationships::*;
@@ -39,7 +40,7 @@ package memo_examples_surgical_closure_workflow {
39
40
  }
40
41
  requirement needControlledGastricResection : Need {
41
42
  attribute :>> needKind = NeedKind::clinicalUser;
42
- attribute :>> needId = "LSG-N-001";
43
+ attribute :>> id = "LSG-N-001";
43
44
  attribute :>> statement = "The surgical team needs to perform gastric resection with controlled anatomy, haemostasis, and a checked staple line.";
44
45
  }
45
46
  use case ucPerformSleeveGastrectomy : UseCase {
@@ -53,39 +54,38 @@ package memo_examples_surgical_closure_workflow {
53
54
  ref :>> primaryUser = bariatricSurgeon;
54
55
  ref :>> supportingActors = (scrubNurse, anesthetist);
55
56
  ref :>> useContext = bariatricOr;
57
+ subject supportingSystem;
58
+ actor bariatricSurgeonInitiator = bariatricSurgeon;
56
59
  }
57
60
  connection : Motivates connect motivatingNeed ::> needControlledGastricResection to motivatedUseCase ::> ucPerformSleeveGastrectomy;
58
- connection : Initiates connect initiatingUser ::> bariatricSurgeon to initiatedUseCase ::> ucPerformSleeveGastrectomy;
59
61
 
60
62
  // ── Procedure workflow ──────────────────────────────────────
61
- action actTimeOutAndPosition : OperationalActivity { attribute :>> id = "LSG-ACT-001"; attribute :>> name = "ConfirmTimeOutAndPosition"; }
62
- action actEstablishAccess : OperationalActivity { attribute :>> id = "LSG-ACT-002"; attribute :>> name = "EstablishLaparoscopicAccess"; }
63
- action actMobilizeStomach : OperationalActivity { attribute :>> id = "LSG-ACT-003"; attribute :>> name = "MobilizeStomach"; }
64
- action actSizeAndCreateSleeve : OperationalActivity { attribute :>> id = "LSG-ACT-004"; attribute :>> name = "SizeAndCreateSleeve"; attribute :>> criticality = CriticalityKind::high; }
65
- action actAssessStapleLine : OperationalActivity { attribute :>> id = "LSG-ACT-005"; attribute :>> name = "AssessStapleLine"; attribute :>> criticality = CriticalityKind::high; }
66
- action actExtractSpecimenAndClose : OperationalActivity { attribute :>> id = "LSG-ACT-006"; attribute :>> name = "ExtractSpecimenAndClosePorts"; }
67
- action actHandover : OperationalActivity { attribute :>> id = "LSG-ACT-007"; attribute :>> name = "CompletePostoperativeHandover"; }
63
+ action actTimeOutAndPosition : OperativeAction { attribute :>> id = "LSG-ACT-001"; attribute :>> name = "ConfirmTimeOutAndPosition"; }
64
+ action actEstablishAccess : OperativeAction { attribute :>> id = "LSG-ACT-002"; attribute :>> name = "EstablishLaparoscopicAccess"; }
65
+ action actMobilizeStomach : OperativeAction { attribute :>> id = "LSG-ACT-003"; attribute :>> name = "MobilizeStomach"; }
66
+ action actSizeAndCreateSleeve : OperativeAction {
67
+ attribute :>> id = "LSG-ACT-004"; attribute :>> name = "SizeAndCreateSleeve"; attribute :>> criticality = CriticalityKind::high;
68
68
 
69
- action taskCreateStapleLine : UserTask {
70
- attribute :>> criticality = CriticalityKind::high;
71
- attribute :>> id = "LSG-TASK-001";
72
- attribute :>> name = "CreateAndInspectStapleLine";
73
- attribute :>> taskGoal = "create the planned sleeve and identify bleeding or integrity concerns before completion";
74
- attribute :>> potentialHarm = "bleeding or staple-line complication not recognized before handover";
75
- attribute :>> severityIfFailed = SeverityKind::serious;
69
+ action taskCreateStapleLine : OperativeAction {
70
+ attribute :>> criticality = CriticalityKind::high;
71
+ attribute :>> id = "LSG-TASK-001";
72
+ attribute :>> name = "CreateAndInspectStapleLine";
73
+ attribute :>> taskGoal = "create the planned sleeve and identify bleeding or integrity concerns before completion";
74
+ attribute :>> potentialHarm = "bleeding or staple-line complication not recognized before handover";
75
+ attribute :>> severityIfFailed = SeverityKind::serious;
76
+
77
+ action stConfirmAnatomy : OperativeAction { attribute :>> id = "LSG-ST-001"; attribute :>> name = "ConfirmAnatomy"; }
78
+ action stCreateStapleLine : OperativeAction { attribute :>> id = "LSG-ST-002"; attribute :>> name = "CreateStapleLine"; }
79
+ action stInspectBleeding : OperativeAction { attribute :>> id = "LSG-ST-003"; attribute :>> name = "InspectForBleeding"; }
80
+ action stAssessIntegrity : OperativeAction { attribute :>> id = "LSG-ST-004"; attribute :>> name = "AssessStapleLineIntegrity"; }
81
+ first stConfirmAnatomy then stCreateStapleLine;
82
+ first stCreateStapleLine then stInspectBleeding;
83
+ first stInspectBleeding then stAssessIntegrity;
84
+ }
76
85
  }
77
- action stConfirmAnatomy : TaskStep { attribute :>> id = "LSG-ST-001"; attribute :>> name = "ConfirmAnatomy"; }
78
- action stCreateStapleLine : TaskStep { attribute :>> id = "LSG-ST-002"; attribute :>> name = "CreateStapleLine"; }
79
- action stInspectBleeding : TaskStep { attribute :>> id = "LSG-ST-003"; attribute :>> name = "InspectForBleeding"; }
80
- action stAssessIntegrity : TaskStep { attribute :>> id = "LSG-ST-004"; attribute :>> name = "AssessStapleLineIntegrity"; }
81
- first stConfirmAnatomy then stCreateStapleLine;
82
- first stCreateStapleLine then stInspectBleeding;
83
- first stInspectBleeding then stAssessIntegrity;
84
- connection : Composes connect parent ::> actSizeAndCreateSleeve to child ::> taskCreateStapleLine;
85
- connection : Composes connect parent ::> taskCreateStapleLine to child ::> stConfirmAnatomy;
86
- connection : Composes connect parent ::> taskCreateStapleLine to child ::> stCreateStapleLine;
87
- connection : Composes connect parent ::> taskCreateStapleLine to child ::> stInspectBleeding;
88
- connection : Composes connect parent ::> taskCreateStapleLine to child ::> stAssessIntegrity;
86
+ action actAssessStapleLine : OperativeAction { attribute :>> id = "LSG-ACT-005"; attribute :>> name = "AssessStapleLine"; attribute :>> criticality = CriticalityKind::high; }
87
+ action actExtractSpecimenAndClose : OperativeAction { attribute :>> id = "LSG-ACT-006"; attribute :>> name = "ExtractSpecimenAndClosePorts"; }
88
+ action actHandover : OperativeAction { attribute :>> id = "LSG-ACT-007"; attribute :>> name = "CompletePostoperativeHandover"; }
89
89
 
90
90
  action wfSleeveGastrectomy : ClinicalProcedureWorkflow {
91
91
  attribute :>> id = "LSG-WF-001";
@@ -95,61 +95,44 @@ package memo_examples_surgical_closure_workflow {
95
95
  attribute :>> completionCondition = "staple line assessed; postoperative handover complete";
96
96
  attribute :>> clinicalObjective = "create a gastric sleeve after controlled mobilisation and staple-line assessment";
97
97
  }
98
- action wsTimeOut : WorkflowStep { ref :>> performedActivity = actTimeOutAndPosition; }
99
- action wsAccess : WorkflowStep { ref :>> performedActivity = actEstablishAccess; }
100
- action wsMobilize : WorkflowStep { ref :>> performedActivity = actMobilizeStomach; }
101
- action wsSleeve : WorkflowStep { ref :>> performedActivity = actSizeAndCreateSleeve; }
102
- action wsAssess : WorkflowStep { ref :>> performedActivity = actAssessStapleLine; }
103
- action wsClose : WorkflowStep { ref :>> performedActivity = actExtractSpecimenAndClose; }
104
- action wsHandover : WorkflowStep { ref :>> performedActivity = actHandover; }
105
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsTimeOut;
106
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsAccess;
107
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsMobilize;
108
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsSleeve;
109
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsAssess;
110
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsClose;
111
- connection : Composes connect parent ::> wfSleeveGastrectomy to child ::> wsHandover;
112
- first wsTimeOut then wsAccess;
113
- first wsAccess then wsMobilize;
114
- first wsMobilize then wsSleeve;
115
- first wsSleeve then wsAssess;
116
- first wsAssess then wsClose;
117
- first wsClose then wsHandover;
118
- connection : Supports { attribute :>> supportKind = SupportKind::useCase; connect supporter ::> wfSleeveGastrectomy to supported ::> ucPerformSleeveGastrectomy; }
119
98
 
120
99
  // ── Scenario paths, each with its own activity/action flow ──
121
- action oaCompleteSleeveProcedure : OperationalActivity {
122
- attribute :>> name = "CompleteNominalSleeveProcedure";
123
- action prepare; action createSleeve; action assess; action handover;
124
- first start then prepare; first prepare then createSleeve; first createSleeve then assess; first assess then handover; first handover then done;
125
- }
126
- action oaControlStapleLineBleeding : OperationalActivity {
127
- attribute :>> name = "ControlStapleLineBleeding";
128
- action recognizeBleeding; action controlBleeding; action reassessStapleLine; action escalateIfNeeded;
129
- first start then recognizeBleeding; first recognizeBleeding then controlBleeding; first controlBleeding then reassessStapleLine; first reassessStapleLine then escalateIfNeeded; first escalateIfNeeded then done;
130
- }
131
100
  action scNominalSleeveProcedure : OperativeScenario {
132
101
  attribute :>> id = "LSG-SC-001"; attribute :>> name = "NominalSleeveGastrectomy";
133
- attribute :>> variantKind = ScenarioVariantKind::nominal;
134
- attribute :>> operationalCondition = OperationalConditionKind::normal;
135
102
  attribute :>> pathSummary = "Time-out, access, mobilisation, sleeve creation, staple-line assessment, closure, and handover complete without rework.";
136
- ref :>> parentWorkflow = wfSleeveGastrectomy;
137
- ref :>> parentUseCase = ucPerformSleeveGastrectomy;
138
- ref :>> activities = oaCompleteSleeveProcedure;
103
+
104
+ perform actTimeOutAndPosition;
105
+ perform actEstablishAccess;
106
+ perform actMobilizeStomach;
107
+ perform actSizeAndCreateSleeve;
108
+ perform actAssessStapleLine;
109
+ perform actExtractSpecimenAndClose;
110
+ perform actHandover;
111
+ first actTimeOutAndPosition then actEstablishAccess;
112
+ first actEstablishAccess then actMobilizeStomach;
113
+ first actMobilizeStomach then actSizeAndCreateSleeve;
114
+ first actSizeAndCreateSleeve then actAssessStapleLine;
115
+ first actAssessStapleLine then actExtractSpecimenAndClose;
116
+ first actExtractSpecimenAndClose then actHandover;
139
117
  }
140
118
  action scStapleLineBleeding : OperativeScenario {
119
+ attribute :>> scenarioKind = ScenarioKind::alternate;
141
120
  attribute :>> id = "LSG-SC-002"; attribute :>> name = "StapleLineBleedingRecovery";
142
- attribute :>> variantKind = ScenarioVariantKind::recovery;
143
- attribute :>> operationalCondition = OperationalConditionKind::degraded;
144
- attribute :>> variationPoint = "bleeding observed during staple-line assessment";
145
121
  attribute :>> pathSummary = "Recognize bleeding, apply the selected control, reassess the staple line, and escalate if the condition remains unresolved.";
146
- ref :>> baseScenario = scNominalSleeveProcedure;
147
- ref :>> parentWorkflow = wfSleeveGastrectomy;
148
- ref :>> parentUseCase = ucPerformSleeveGastrectomy;
149
- ref :>> activities = oaControlStapleLineBleeding;
122
+
123
+ action oaControlStapleLineBleeding : OperativeAction {
124
+ attribute :>> name = "ControlStapleLineBleeding";
125
+ action recognizeBleeding; action controlBleeding; action reassessStapleLine; action escalateIfNeeded;
126
+ first start then recognizeBleeding; first recognizeBleeding then controlBleeding; first controlBleeding then reassessStapleLine; first reassessStapleLine then escalateIfNeeded; first escalateIfNeeded then done;
127
+ }
150
128
  }
151
- connection : Realizes connect realizing ::> scNominalSleeveProcedure to realized ::> ucPerformSleeveGastrectomy;
152
- connection : Realizes connect realizing ::> scStapleLineBleeding to realized ::> ucPerformSleeveGastrectomy;
153
- connection : Composes connect parent ::> scNominalSleeveProcedure to child ::> oaCompleteSleeveProcedure;
154
- connection : Composes connect parent ::> scStapleLineBleeding to child ::> oaControlStapleLineBleeding;
129
+ #refinement dependency scNominalSleeveProcedure to ucPerformSleeveGastrectomy;
130
+ #refinement dependency scStapleLineBleeding to ucPerformSleeveGastrectomy;
131
+
132
+ connection : RealizesUseCase connect realizingWorkflow ::> wfSleeveGastrectomy to realizedUseCase ::> ucPerformSleeveGastrectomy;
133
+
134
+
135
+ connection : HasScenario connect owningWorkflow ::> wfSleeveGastrectomy to pathScenario ::> scNominalSleeveProcedure;
136
+ connection : HasScenario connect owningWorkflow ::> wfSleeveGastrectomy to pathScenario ::> scStapleLineBleeding;
137
+
155
138
  }
@@ -6,7 +6,6 @@ package memo_examples_surgical_closure_workflow_viewpoints_unassigned_views_surg
6
6
  view surgicalClosureWorkflowOverview : MemoDiagramView {
7
7
  expose memo_examples_surgical_closure_workflow::*;
8
8
  attribute depth = 2;
9
- attribute :>> title = "Laparoscopic Sleeve Gastrectomy Workflow";
10
9
  attribute :>> viewKind = DiagramViewKind::actionflow;
11
10
  attribute :>> diagramType = "ofd";
12
11
  }
@@ -0,0 +1,3 @@
1
+ name: surgical-robot
2
+ entrypoint: model/catalog/project.sysml
3
+ include: [model]
@@ -23,7 +23,7 @@ package memo_examples_surgical_robot {
23
23
  connection : IndependentOf connect channel ::> chMotionMonitor to otherChannel ::> chMotionPrimary {
24
24
  attribute :>> independenceBasis = "separate sensing, power, and processing; common-cause analysis SR-CCA-01";
25
25
  }
26
- connection : MonitorsChannel connect monitorChannel ::> chMotionMonitor to monitoredComponent ::> chMotionPrimary;
26
+ dependency chMotionMonitor to chMotionPrimary;
27
27
 
28
28
  // Interlock: instrument exchange blocked while arm is in motion.
29
29
  part chExchangeInterlock : LogicalComponent {
@@ -6,7 +6,6 @@ package memo_examples_surgical_robot_viewpoints_unassigned_views_surgical_robot_
6
6
  view surgicalRobotOverview : MemoDiagramView {
7
7
  expose memo_examples_surgical_robot::*;
8
8
  attribute depth = 2;
9
- attribute :>> title = "Surgical Robot Overview";
10
9
  attribute :>> viewKind = DiagramViewKind::interconnection;
11
10
  attribute :>> diagramType = "ibd";
12
11
  }
@@ -7,5 +7,7 @@
7
7
  # (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
8
8
  # removed at the native semantic flip and are now rejected if present.
9
9
  name: sysml-diagram-samples
10
+ entrypoint: model/catalog/project.sysml
11
+ include: [model]
10
12
  version: 0.1.0
11
13
  description: "MEMO Architect diagram rendering samples \u2014 one openable view per standard SysML v2 diagram type. Open with: memo-architect --example standard-sysml-diagrams"
@@ -1,6 +1,7 @@
1
1
  package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_flow_view {
2
2
  private import ScalarValues::*;
3
3
  private import memo_core_relationships::*;
4
+ private import ModelingMetadata::*;
4
5
 
5
6
  private import memo_architecture_logical_structure::*;
6
7
  private import memo_architecture_logical_interfaces::*;
@@ -19,15 +20,15 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_f
19
20
  attribute :>> itemKind = InterfaceItemKind::material;
20
21
  }
21
22
 
22
- action def ReceiveInput specializes SystemAction { out item received : DataPacket; }
23
- action def ValidateInput specializes SystemAction { in item received : DataPacket; out item validated : EnergyToken; }
24
- action def ProcessInput specializes SystemAction { in item validated : EnergyToken; out item result : MaterialBatch; }
25
- action def RecordResult specializes SystemAction { in item result : MaterialBatch; }
23
+ action def ReceiveInput specializes SystemFunction { out item received : DataPacket; }
24
+ action def ValidateInput specializes SystemFunction { in item received : DataPacket; out item validated : EnergyToken; }
25
+ action def ProcessInput specializes SystemFunction { in item validated : EnergyToken; out item result : MaterialBatch; }
26
+ action def RecordResult specializes SystemFunction { in item result : MaterialBatch; }
26
27
 
27
28
  part laneA : LogicalComponent { attribute :>> name = "Lane A"; }
28
29
  part laneB : LogicalComponent { attribute :>> name = "Lane B"; }
29
30
 
30
- action sampleActionFlow : SystemAction {
31
+ action sampleActionFlow : SystemFunction {
31
32
  action receive : ReceiveInput;
32
33
  action validate : ValidateInput;
33
34
  action process : ProcessInput {
@@ -61,7 +62,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_f
61
62
  allocate sampleActionFlow.record to laneB;
62
63
 
63
64
  // MemoLink sample — the universal relation, exercised where nothing else
64
- // reaches. laneB is a `part` (LogicalComponent :> ArchitectureElement) and
65
+ // reaches. laneB is a `part` (LogicalComponent :> MemoPart) and
65
66
  // `sampleActionFlow.process` is an action usage (:> MemoAction). Those
66
67
  // foundations share no supertype, so every typed relation in the ontology
67
68
  // is unavailable here: legalRelationshipTypes returns MemoLink and nothing
@@ -72,8 +73,10 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_f
72
73
  // because a value must be a feature and a definition is not.
73
74
  connection linkLaneBProcessesInput : MemoLink
74
75
  connect linkSource ::> laneB to linkTarget ::> sampleActionFlow.process {
75
- attribute :>> linkRationale =
76
- "Lane B is the swimlane that carries the ProcessInput behaviour. The association crosses the part/action metaclass boundary, so no typed relation can express it.";
76
+ @Rationale {
77
+ :>> text =
78
+ "Lane B is the swimlane that carries the ProcessInput behaviour. The association crosses the part/action metaclass boundary, so no typed relation can express it.";
79
+ }
77
80
  }
78
81
 
79
82
  view sampleActionFlowView : MemoDiagramView {
@@ -81,18 +84,9 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_action_f
81
84
  expose laneA;
82
85
  expose laneB;
83
86
  attribute depth = 2;
84
- attribute :>> title = "Sample · Action Flow";
85
87
  attribute :>> shortDescription = "Dummy actions, typed item flows, successions, and a composite action for renderer development.";
86
88
  attribute :>> viewKind = DiagramViewKind::actionflow;
87
89
  attribute :>> diagramType = "afd";
88
- part :>> viewpointDefinition = functionalViewpoint;
90
+ ref :>> viewpointDefinition = functionalViewpoint;
89
91
  }
90
-
91
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.receive to targetView ::> sampleActionFlowView;
92
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.validate to targetView ::> sampleActionFlowView;
93
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process to targetView ::> sampleActionFlowView;
94
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process.processStepA to targetView ::> sampleActionFlowView;
95
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process.processStepB to targetView ::> sampleActionFlowView;
96
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.process.processStepC to targetView ::> sampleActionFlowView;
97
- connection : IncludedIn connect sourceElement ::> sampleActionFlow.record to targetView ::> sampleActionFlowView;
98
92
  }
@@ -32,26 +32,23 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_context_
32
32
  connection : InteractsWith connect contextParticipant ::> clinician to target ::> infusionSystem;
33
33
  connection : InteractsWith connect contextParticipant ::> patient to target ::> infusionSystem;
34
34
  connection : InteractsWith connect contextParticipant ::> biomedTech to target ::> infusionSystem;
35
- connection : ExchangesWith connect source ::> infusionSystem to target ::> pharmacySystem;
35
+ flow from infusionSystem to pharmacySystem;
36
36
  connection : AppliesInContext connect useContext ::> homeContext to subjectElement ::> infusionSystem;
37
37
 
38
38
  view sampleContextView : MemoDiagramView {
39
39
  expose infusionSystem::**;
40
+ expose clinician;
41
+ expose patient;
42
+ expose biomedTech;
43
+ expose pharmacySystem;
44
+ expose homeContext;
40
45
  attribute depth = 1;
41
- attribute :>> title = "Sample · System Context";
42
46
  attribute :>> shortDescription = "Operational system context: one black-box system boundary, its external people, peer systems, operating environment, and named boundary-crossing interactions.";
43
47
  attribute :>> viewKind = DiagramViewKind::general;
44
48
  attribute :>> diagramType = "context";
45
- part :>> viewpointDefinition = contextViewpoint;
49
+ ref :>> viewpointDefinition = contextViewpoint;
46
50
  part :>> selectionQuery {
47
- attribute :>> includeRelationshipKinds = ("InteractsWith", "ExchangesWith", "AppliesInContext");
51
+ attribute :>> includeRelationshipKinds = ("InteractsWith", "flow", "AppliesInContext");
48
52
  }
49
53
  }
50
-
51
- connection : IncludedIn connect sourceElement ::> infusionSystem to targetView ::> sampleContextView;
52
- connection : IncludedIn connect sourceElement ::> clinician to targetView ::> sampleContextView;
53
- connection : IncludedIn connect sourceElement ::> patient to targetView ::> sampleContextView;
54
- connection : IncludedIn connect sourceElement ::> biomedTech to targetView ::> sampleContextView;
55
- connection : IncludedIn connect sourceElement ::> pharmacySystem to targetView ::> sampleContextView;
56
- connection : IncludedIn connect sourceElement ::> homeContext to targetView ::> sampleContextView;
57
54
  }
@@ -39,38 +39,37 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
39
39
  }
40
40
 
41
41
  // Functions with typed in/out pins
42
- action def FxAcquire specializes SystemAction { out item reading : FxSensorReading; }
43
- action def FxCompute specializes SystemAction { in item reading : FxSensorReading; out item command : FxRateCommand; }
44
- action def FxEnforce specializes SystemAction { in item command : FxRateCommand; out item safeCommand : FxRateCommand; }
45
- action def FxDrive specializes SystemAction { in item command : FxRateCommand; out item energy : FxMotorEnergy; }
46
- action def FxDeliverMedication specializes SystemAction { in item energy : FxMotorEnergy; out item fluid : FxMedicationFluid; }
47
- action def FxMonitor specializes SystemAction { out item signal : FxOcclusionSignal; }
48
- action def FxDetect specializes SystemAction { in item signal : FxOcclusionSignal; }
42
+ action def FxAcquire specializes SystemFunction { out item reading : FxSensorReading; }
43
+ action def FxCompute specializes SystemFunction { in item reading : FxSensorReading; out item command : FxRateCommand; }
44
+ action def FxEnforce specializes SystemFunction { in item command : FxRateCommand; out item safeCommand : FxRateCommand; }
45
+ action def FxDrive specializes SystemFunction { in item command : FxRateCommand; out item energy : FxMotorEnergy; }
46
+ action def FxDeliverMedication specializes SystemFunction { in item energy : FxMotorEnergy; out item fluid : FxMedicationFluid; }
47
+ action def FxMonitor specializes SystemFunction { out item signal : FxOcclusionSignal; }
48
+ action def FxDetect specializes SystemFunction { in item signal : FxOcclusionSignal; }
49
49
 
50
50
  // Component hierarchy used by the Level control:
51
51
  // L1 system → L2 subsystems → L3 allocated components.
52
- part fxPumpSystem : LogicalComponent { attribute :>> name = "Infusion Pump System"; }
53
- part fxSensingSubsystem : LogicalComponent { attribute :>> name = "Sensing Subsystem"; }
54
- part fxControlSubsystem : LogicalComponent { attribute :>> name = "Control Subsystem"; }
55
- part fxDeliverySubsystem : LogicalComponent { attribute :>> name = "Delivery Subsystem"; }
56
- part fxSafetySubsystem : LogicalComponent { attribute :>> name = "Safety Subsystem"; }
57
-
58
- // L3 components — one natural-level swimlane each
59
- part fxSensor : LogicalComponent { attribute :>> name = "Sensor Subsystem"; }
60
- part fxController : LogicalComponent { attribute :>> name = "Infusion Controller"; }
61
- part fxActuator : LogicalComponent { attribute :>> name = "Pump Actuator"; }
62
- part fxSafety : LogicalComponent { attribute :>> name = "Safety Monitor"; }
63
-
64
- connection : Composes connect parent ::> fxPumpSystem to child ::> fxSensingSubsystem;
65
- connection : Composes connect parent ::> fxPumpSystem to child ::> fxControlSubsystem;
66
- connection : Composes connect parent ::> fxPumpSystem to child ::> fxDeliverySubsystem;
67
- connection : Composes connect parent ::> fxPumpSystem to child ::> fxSafetySubsystem;
68
- connection : Composes connect parent ::> fxSensingSubsystem to child ::> fxSensor;
69
- connection : Composes connect parent ::> fxControlSubsystem to child ::> fxController;
70
- connection : Composes connect parent ::> fxDeliverySubsystem to child ::> fxActuator;
71
- connection : Composes connect parent ::> fxSafetySubsystem to child ::> fxSafety;
52
+ part fxPumpSystem : LogicalComponent {
53
+ attribute :>> name = "Infusion Pump System";
54
+ part fxSensingSubsystem : LogicalComponent {
55
+ attribute :>> name = "Sensing Subsystem";
56
+ part fxSensor : LogicalComponent { attribute :>> name = "Sensor Subsystem"; }
57
+ }
58
+ part fxControlSubsystem : LogicalComponent {
59
+ attribute :>> name = "Control Subsystem";
60
+ part fxController : LogicalComponent { attribute :>> name = "Infusion Controller"; }
61
+ }
62
+ part fxDeliverySubsystem : LogicalComponent {
63
+ attribute :>> name = "Delivery Subsystem";
64
+ part fxActuator : LogicalComponent { attribute :>> name = "Pump Actuator"; }
65
+ }
66
+ part fxSafetySubsystem : LogicalComponent {
67
+ attribute :>> name = "Safety Subsystem";
68
+ part fxSafety : LogicalComponent { attribute :>> name = "Safety Monitor"; }
69
+ }
70
+ }
72
71
 
73
- action fxDeliveryFlow : SystemAction {
72
+ action fxDeliveryFlow : SystemFunction {
74
73
  action fxAcquire : FxAcquire { attribute :>> name = "Acquire Sensor Data"; }
75
74
  action fxCompute : FxCompute { attribute :>> name = "Compute Infusion Rate"; }
76
75
 
@@ -85,9 +84,9 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
85
84
  // Composite function — valve sub-flow (drill-in)
86
85
  action fxDeliver : FxDeliverMedication {
87
86
  attribute :>> name = "Deliver Medication";
88
- action fxOpenValve : SystemAction { attribute :>> name = "Open Valve"; }
89
- action fxHoldDose : SystemAction { attribute :>> name = "Hold Metered Dose"; }
90
- action fxCloseValve : SystemAction { attribute :>> name = "Close Valve"; }
87
+ action fxOpenValve : SystemFunction { attribute :>> name = "Open Valve"; }
88
+ action fxHoldDose : SystemFunction { attribute :>> name = "Hold Metered Dose"; }
89
+ action fxCloseValve : SystemFunction { attribute :>> name = "Close Valve"; }
91
90
 
92
91
  flow of FxMedicationFluid from fxDeliveryFlow.fxDeliver.fxHoldDose to fxCloseValve;
93
92
 
@@ -97,7 +96,7 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
97
96
  first fxCloseValve then done;
98
97
  }
99
98
 
100
- action fxLog : SystemAction { attribute :>> name = "Log Delivery"; }
99
+ action fxLog : SystemFunction { attribute :>> name = "Log Delivery"; }
101
100
 
102
101
  flow of FxSensorReading from fxAcquire.reading to fxCompute.reading;
103
102
  flow of FxRateCommand from fxEnforce.safeCommand to fxDrive.command;
@@ -119,49 +118,25 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_function
119
118
  }
120
119
 
121
120
  // Swimlane allocation — which component realises each function
122
- allocate fxDeliveryFlow.fxAcquire to fxSensor;
123
- allocate fxDeliveryFlow.fxCompute to fxController;
124
- allocate fxDeliveryFlow.fxEnforce to fxSafety;
125
- allocate fxDeliveryFlow.fxDrive to fxActuator;
126
- allocate fxDeliveryFlow.fxDeliver to fxActuator;
127
- allocate fxDeliveryFlow.fxMonitor to fxSafety;
128
- allocate fxDeliveryFlow.fxDetect to fxSafety;
129
- allocate fxDeliveryFlow.fxLog to fxController;
130
- allocate fxDeliveryFlow.fxDeliver.fxOpenValve to fxActuator;
131
- allocate fxDeliveryFlow.fxDeliver.fxHoldDose to fxActuator;
132
- allocate fxDeliveryFlow.fxDeliver.fxCloseValve to fxActuator;
121
+ allocate fxDeliveryFlow.fxAcquire to fxPumpSystem.fxSensingSubsystem.fxSensor;
122
+ allocate fxDeliveryFlow.fxCompute to fxPumpSystem.fxControlSubsystem.fxController;
123
+ allocate fxDeliveryFlow.fxEnforce to fxPumpSystem.fxSafetySubsystem.fxSafety;
124
+ allocate fxDeliveryFlow.fxDrive to fxPumpSystem.fxDeliverySubsystem.fxActuator;
125
+ allocate fxDeliveryFlow.fxDeliver to fxPumpSystem.fxDeliverySubsystem.fxActuator;
126
+ allocate fxDeliveryFlow.fxMonitor to fxPumpSystem.fxSafetySubsystem.fxSafety;
127
+ allocate fxDeliveryFlow.fxDetect to fxPumpSystem.fxSafetySubsystem.fxSafety;
128
+ allocate fxDeliveryFlow.fxLog to fxPumpSystem.fxControlSubsystem.fxController;
129
+ allocate fxDeliveryFlow.fxDeliver.fxOpenValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
130
+ allocate fxDeliveryFlow.fxDeliver.fxHoldDose to fxPumpSystem.fxDeliverySubsystem.fxActuator;
131
+ allocate fxDeliveryFlow.fxDeliver.fxCloseValve to fxPumpSystem.fxDeliverySubsystem.fxActuator;
133
132
 
134
133
  view fxDeliveryView : MemoDiagramView {
135
134
  expose fxDeliveryFlow::**;
136
135
  expose fxPumpSystem::**;
137
136
  attribute depth = 2;
138
- attribute :>> title = "Sample · Dose Delivery (Functional Flow)";
139
137
  attribute :>> 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
138
  attribute :>> viewKind = DiagramViewKind::actionflow;
141
139
  attribute :>> diagramType = "ffd";
142
- part :>> viewpointDefinition = functionalViewpoint;
140
+ ref :>> viewpointDefinition = functionalViewpoint;
143
141
  }
144
-
145
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxAcquire to targetView ::> fxDeliveryView;
146
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxCompute to targetView ::> fxDeliveryView;
147
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxForkDeliver to targetView ::> fxDeliveryView;
148
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxEnforce to targetView ::> fxDeliveryView;
149
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxDrive to targetView ::> fxDeliveryView;
150
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxDeliver to targetView ::> fxDeliveryView;
151
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxMonitor to targetView ::> fxDeliveryView;
152
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxDetect to targetView ::> fxDeliveryView;
153
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxJoinDeliver to targetView ::> fxDeliveryView;
154
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxLog to targetView ::> fxDeliveryView;
155
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxDeliver.fxOpenValve to targetView ::> fxDeliveryView;
156
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxDeliver.fxHoldDose to targetView ::> fxDeliveryView;
157
- connection : IncludedIn connect sourceElement ::> fxDeliveryFlow.fxDeliver.fxCloseValve to targetView ::> fxDeliveryView;
158
- connection : IncludedIn connect sourceElement ::> fxPumpSystem to targetView ::> fxDeliveryView;
159
- connection : IncludedIn connect sourceElement ::> fxSensingSubsystem to targetView ::> fxDeliveryView;
160
- connection : IncludedIn connect sourceElement ::> fxControlSubsystem to targetView ::> fxDeliveryView;
161
- connection : IncludedIn connect sourceElement ::> fxDeliverySubsystem to targetView ::> fxDeliveryView;
162
- connection : IncludedIn connect sourceElement ::> fxSafetySubsystem to targetView ::> fxDeliveryView;
163
- connection : IncludedIn connect sourceElement ::> fxSensor to targetView ::> fxDeliveryView;
164
- connection : IncludedIn connect sourceElement ::> fxController to targetView ::> fxDeliveryView;
165
- connection : IncludedIn connect sourceElement ::> fxActuator to targetView ::> fxDeliveryView;
166
- connection : IncludedIn connect sourceElement ::> fxSafety to targetView ::> fxDeliveryView;
167
142
  }