@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.
- package/README.md +4 -2
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +8 -6
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +6 -6
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +18 -8
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +341 -99
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +25 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +328 -271
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +52 -11
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +14 -3
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +8 -5
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +175 -259
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +97 -103
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +5 -10
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +101 -100
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +17 -17
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +274 -334
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +115 -35
- package/examples/gpca-pump/model/catalog/project.sysml +5 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -7
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -8
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -3
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +133 -128
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +139 -157
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +56 -33
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +25 -26
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +16 -23
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +12 -0
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +4 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +12 -6
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +58 -75
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +1 -1
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -18
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +43 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +57 -68
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +40 -70
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +4 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +52 -84
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +22 -33
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +13 -10
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +28 -25
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +57 -33
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +102 -79
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +5 -5
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +21 -6
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +28 -125
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +2 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
- package/extensions/LICENSES/MIT.txt +19 -0
- package/extensions/README.md +94 -0
- package/extensions/aadl/memo.package.yaml +18 -0
- package/extensions/aadl/src/aadl_extension.sysml +6 -0
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
- package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
- package/extensions/cloud/memo.package.yaml +18 -0
- package/extensions/cloud/src/cloud_extension.sysml +44 -0
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
- package/extensions/container/memo.package.yaml +18 -0
- package/extensions/container/src/container_extension.sysml +37 -0
- package/extensions/container/src/methodology/container_methodology.sysml +17 -0
- package/extensions/messaging/memo.package.yaml +18 -0
- package/extensions/messaging/src/messaging_extension.sysml +64 -0
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
- package/extensions/ros/memo.package.yaml +18 -0
- package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
- package/extensions/ros/src/ros_extension.sysml +200 -0
- package/extensions/template/src/extension.sysml +37 -0
- package/memo.manifest.yaml +13 -2
- 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 +5 -3
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +23 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +51 -23
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -36
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -22
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +40 -13
- package/src/architecture/implementation/ui/memo_ui.sysml +83 -43
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -12
- package/src/architecture/logical/structure/memo_logical_structure.sysml +26 -25
- package/src/architecture/operational/activities/memo_activities.sysml +27 -29
- package/src/architecture/operational/context/actors/memo_actors.sysml +8 -10
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +16 -33
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -17
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +36 -84
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -27
- package/src/architecture/operational/workflows/memo_workflows.sysml +45 -28
- package/src/architecture/realization/deployment/memo_deployment.sysml +115 -20
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +29 -4
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +16 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +3 -1
- package/src/artifacts/standards/cfr_21_820.sysml +116 -0
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
- package/src/artifacts/standards/iec_60601_1.sysml +149 -0
- package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
- package/src/artifacts/standards/iec_60812.sysml +51 -0
- package/src/artifacts/standards/iec_62304.sysml +210 -0
- package/src/artifacts/standards/iec_62366_1.sysml +113 -0
- package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
- package/src/artifacts/standards/iso_13485.sysml +113 -0
- package/src/artifacts/standards/iso_14971.sysml +94 -0
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
- package/src/artifacts/templates/dhf/21cfr820/design-input.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-output.md +5 -5
- package/src/artifacts/templates/dhf/21cfr820/design-review.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/design-validation.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/design-verification.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/dhf-index.md +2 -2
- package/src/artifacts/templates/dhf/21cfr820/transfer-plan.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/user-needs.md +1 -1
- package/src/artifacts/templates/dhf/21cfr820/vv-plan.md +3 -3
- package/src/artifacts/templates/dhf/21cfr820/vv-report.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/incident-response.md +1 -1
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/security-arch.md +2 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/threat-model.md +4 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/artifacts/templates/dhf/iec-62304/detailed-design.md +1 -1
- package/src/artifacts/templates/dhf/iec-62304/integration-test.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/sad.md +6 -5
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +3 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +5 -4
- package/src/artifacts/templates/dhf/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +54 -20
- package/src/artifacts/templates/dhf/iec-62304/sw-traceability.md +3 -3
- package/src/artifacts/templates/dhf/iec-62304/system-test.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +40 -4
- package/src/artifacts/templates/dhf/iec-62366/ue-plan.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +42 -19
- package/src/artifacts/templates/dhf/iso-14971/har.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/rmp.md +2 -2
- package/src/artifacts/templates/dhf/system/sad.md +173 -0
- package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
- package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
- package/src/artifacts/templates/dhf/system/syrs.md +128 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +40 -21
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +7 -20
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +90 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +16 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +25 -6
- package/src/core/common/memo_common.sysml +130 -21
- package/src/core/consistency_rules/consistency_rules.sysml +1 -1
- package/src/core/dimensions/dimensions.sysml +12 -0
- package/src/core/enumerations/memo_enumerations.sysml +60 -14
- package/src/core/relationships/memo_relationships.sysml +199 -196
- package/src/memo_namespaces.sysml +30 -0
- package/src/methodology/core/memo_core.sysml +24 -0
- package/src/methodology/profiles/memo_profiles.sysml +1 -1
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +20 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/ontology/ontology_invariants.sysml +223 -11
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +30 -30
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -3
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -3
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/default/memo.package.yaml +2 -0
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/samd/memo.package.yaml +2 -0
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/gpca-pump/gpca-pump.kpar +0 -0
- /package/{examples/extensions → extensions}/clinical/memo.package.yaml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/methodology/clinical_methodology.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /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 :>>
|
|
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 :
|
|
62
|
-
action actEstablishAccess :
|
|
63
|
-
action actMobilizeStomach :
|
|
64
|
-
action actSizeAndCreateSleeve :
|
|
65
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
|
78
|
-
action
|
|
79
|
-
action
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
connection :
|
|
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
|
}
|
|
@@ -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
|
-
|
|
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
|
|
23
|
-
action def ValidateInput specializes
|
|
24
|
-
action def ProcessInput specializes
|
|
25
|
-
action def RecordResult specializes
|
|
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 :
|
|
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 :>
|
|
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
|
-
|
|
76
|
-
|
|
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
|
-
|
|
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
|
}
|
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
49
|
+
ref :>> viewpointDefinition = contextViewpoint;
|
|
46
50
|
part :>> selectionQuery {
|
|
47
|
-
attribute :>> includeRelationshipKinds = ("InteractsWith", "
|
|
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
|
|
43
|
-
action def FxCompute specializes
|
|
44
|
-
action def FxEnforce specializes
|
|
45
|
-
action def FxDrive specializes
|
|
46
|
-
action def FxDeliverMedication specializes
|
|
47
|
-
action def FxMonitor specializes
|
|
48
|
-
action def FxDetect specializes
|
|
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 {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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 :
|
|
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 :
|
|
89
|
-
action fxHoldDose :
|
|
90
|
-
action fxCloseValve :
|
|
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 :
|
|
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
|
-
|
|
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
|
}
|