@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
|
@@ -11,87 +11,76 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_intercon
|
|
|
11
11
|
private import memo_viewpoints_logical_logical_viewpoint::*;
|
|
12
12
|
private import memo_core_enumerations::*;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
part
|
|
14
|
+
// Ports are owned by the part whose boundary they are, which is what lets
|
|
15
|
+
// a delegation be written at all: SysML v2 checks a flow's source for
|
|
16
|
+
// `out`-ness relative to the owner, so a boundary port only reads as a
|
|
17
|
+
// source from INSIDE its part. The subassemblies are nested the same way —
|
|
18
|
+
// real containment, not a port-to-port `Composes` edge, which is what
|
|
19
|
+
// CR-ONT-065 used to forbid before nesting made the rule unnecessary.
|
|
20
|
+
part coffeeMachine : LogicalComponent {
|
|
21
|
+
attribute :>> name = "Coffee Machine";
|
|
22
|
+
in port mainsWaterIn : DataPort { in item payload : MemoItem; }
|
|
23
|
+
out port beverageOut : DataPort { out item payload : MemoItem; }
|
|
24
|
+
inout port serviceInterface : DataPort {
|
|
25
|
+
inout item payload : MemoItem;
|
|
26
|
+
out port diagnostics : DataPort { out item payload : MemoItem; }
|
|
27
|
+
}
|
|
21
28
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
out port heatedWaterOut : DataPort { out item payload : MemoExchangeItem; }
|
|
32
|
-
in port brewWaterIn : DataPort { in item payload : MemoExchangeItem; }
|
|
33
|
-
out port brewedCoffeeOut : DataPort { out item payload : MemoExchangeItem; }
|
|
34
|
-
out port heaterStatusOut : DataPort { out item payload : MemoExchangeItem; }
|
|
29
|
+
part waterTank : LogicalComponent {
|
|
30
|
+
attribute :>> name = "Water Reservoir";
|
|
31
|
+
out port tankWaterOut : DataPort { out item payload : MemoItem; }
|
|
32
|
+
in port tankWaterIn : DataPort { in item payload : MemoItem; }
|
|
33
|
+
}
|
|
34
|
+
part heaterAssembly : LogicalComponent {
|
|
35
|
+
attribute :>> name = "Thermal Control Assembly";
|
|
36
|
+
in port heaterWaterIn : DataPort { in item payload : MemoItem; }
|
|
37
|
+
out port heatedWaterOut : DataPort { out item payload : MemoItem; }
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
39
|
+
part heatingElement : LogicalComponent {
|
|
40
|
+
attribute :>> name = "Water Heating Element";
|
|
41
|
+
out port heaterStatusOut : DataPort { out item payload : MemoItem; }
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
part brewGroup : LogicalComponent {
|
|
45
|
+
attribute :>> name = "Brew Group";
|
|
46
|
+
in port brewWaterIn : DataPort { in item payload : MemoItem; }
|
|
47
|
+
out port brewedCoffeeOut : DataPort { out item payload : MemoItem; }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
part waterSupply : LogicalComponent {
|
|
51
|
+
attribute :>> name = "Water Supply";
|
|
52
|
+
out port supplyWaterOut : DataPort { out item payload : MemoItem; }
|
|
53
|
+
}
|
|
54
|
+
part cup : LogicalComponent {
|
|
55
|
+
attribute :>> name = "Cup";
|
|
56
|
+
in port cupBeverageIn : DataPort { in item payload : MemoItem; }
|
|
57
|
+
}
|
|
53
58
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
// Transport between two components: `out` to `in`, one item moving.
|
|
60
|
+
flow from waterSupply.supplyWaterOut to coffeeMachine.mainsWaterIn;
|
|
61
|
+
flow from coffeeMachine.waterTank.tankWaterOut to coffeeMachine.heaterAssembly.heaterWaterIn;
|
|
62
|
+
flow from coffeeMachine.heaterAssembly.heatedWaterOut to coffeeMachine.brewGroup.brewWaterIn;
|
|
63
|
+
flow from coffeeMachine.beverageOut to cup.cupBeverageIn;
|
|
64
|
+
|
|
65
|
+
// Delegation between a boundary port and the interior it stands for. These
|
|
66
|
+
// are `in`-to-`in` and `out`-to-`out`, because nothing travels: the two
|
|
67
|
+
// features are the same feature. SysML v2 spells that `bind` (training
|
|
68
|
+
// ch. 12), not `flow` (ch. 13).
|
|
69
|
+
bind coffeeMachine.mainsWaterIn = coffeeMachine.waterTank.tankWaterIn;
|
|
70
|
+
bind coffeeMachine.brewGroup.brewedCoffeeOut = coffeeMachine.beverageOut;
|
|
71
|
+
bind coffeeMachine.heaterAssembly.heatingElement.heaterStatusOut = coffeeMachine.serviceInterface.diagnostics;
|
|
61
72
|
|
|
62
73
|
view sampleInterconnectionView : MemoDiagramView {
|
|
63
74
|
expose coffeeMachine::**;
|
|
64
75
|
expose waterSupply::**;
|
|
65
76
|
expose cup::**;
|
|
66
77
|
attribute depth = 2;
|
|
67
|
-
attribute :>> title = "Coffee Machine · Thermal & Fluid IBD";
|
|
68
78
|
attribute :>> shortDescription = "Balanced internal architecture with readable boundary ports, nested service diagnostics, and external water and beverage interfaces.";
|
|
69
79
|
attribute :>> viewKind = DiagramViewKind::interconnection;
|
|
70
80
|
attribute :>> diagramType = "ibd";
|
|
71
|
-
|
|
81
|
+
ref :>> viewpointDefinition = logicalArchitectureViewpoint;
|
|
72
82
|
part :>> selectionQuery {
|
|
73
|
-
attribute :>> includeRelationshipKinds = ("Composes", "
|
|
83
|
+
attribute :>> includeRelationshipKinds = ("Composes", "flow", "bind");
|
|
74
84
|
}
|
|
75
85
|
}
|
|
76
|
-
|
|
77
|
-
connection : IncludedIn connect sourceElement ::> coffeeMachine to targetView ::> sampleInterconnectionView;
|
|
78
|
-
connection : IncludedIn connect sourceElement ::> waterSupply to targetView ::> sampleInterconnectionView;
|
|
79
|
-
connection : IncludedIn connect sourceElement ::> waterTank to targetView ::> sampleInterconnectionView;
|
|
80
|
-
connection : IncludedIn connect sourceElement ::> heaterAssembly to targetView ::> sampleInterconnectionView;
|
|
81
|
-
connection : IncludedIn connect sourceElement ::> heatingElement to targetView ::> sampleInterconnectionView;
|
|
82
|
-
connection : IncludedIn connect sourceElement ::> brewGroup to targetView ::> sampleInterconnectionView;
|
|
83
|
-
connection : IncludedIn connect sourceElement ::> cup to targetView ::> sampleInterconnectionView;
|
|
84
|
-
connection : IncludedIn connect sourceElement ::> mainsWaterIn to targetView ::> sampleInterconnectionView;
|
|
85
|
-
connection : IncludedIn connect sourceElement ::> beverageOut to targetView ::> sampleInterconnectionView;
|
|
86
|
-
connection : IncludedIn connect sourceElement ::> supplyWaterOut to targetView ::> sampleInterconnectionView;
|
|
87
|
-
connection : IncludedIn connect sourceElement ::> cupBeverageIn to targetView ::> sampleInterconnectionView;
|
|
88
|
-
connection : IncludedIn connect sourceElement ::> serviceInterface to targetView ::> sampleInterconnectionView;
|
|
89
|
-
connection : IncludedIn connect sourceElement ::> diagnostics to targetView ::> sampleInterconnectionView;
|
|
90
|
-
connection : IncludedIn connect sourceElement ::> tankWaterOut to targetView ::> sampleInterconnectionView;
|
|
91
|
-
connection : IncludedIn connect sourceElement ::> tankWaterIn to targetView ::> sampleInterconnectionView;
|
|
92
|
-
connection : IncludedIn connect sourceElement ::> heaterWaterIn to targetView ::> sampleInterconnectionView;
|
|
93
|
-
connection : IncludedIn connect sourceElement ::> heatedWaterOut to targetView ::> sampleInterconnectionView;
|
|
94
|
-
connection : IncludedIn connect sourceElement ::> brewWaterIn to targetView ::> sampleInterconnectionView;
|
|
95
|
-
connection : IncludedIn connect sourceElement ::> brewedCoffeeOut to targetView ::> sampleInterconnectionView;
|
|
96
|
-
connection : IncludedIn connect sourceElement ::> heaterStatusOut to targetView ::> sampleInterconnectionView;
|
|
97
86
|
}
|
|
@@ -18,10 +18,10 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operatio
|
|
|
18
18
|
attribute :>> itemKind = InterfaceItemKind::signal;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
action def OpPrescribeTherapy specializes
|
|
22
|
-
action def OpVerifyPrescription specializes
|
|
23
|
-
action def OpRequestBolus specializes
|
|
24
|
-
action def OpCheckLockout specializes
|
|
21
|
+
action def OpPrescribeTherapy specializes OperativeAction { out item prescription : OpPrescription; }
|
|
22
|
+
action def OpVerifyPrescription specializes OperativeAction { in item prescription : OpPrescription; }
|
|
23
|
+
action def OpRequestBolus specializes OperativeAction { out item bolusRequest : OpBolusRequest; }
|
|
24
|
+
action def OpCheckLockout specializes OperativeAction { in item bolusRequest : OpBolusRequest; }
|
|
25
25
|
|
|
26
26
|
// Use the canonical MEMO operational system type—never a sample-local
|
|
27
27
|
// placeholder—so ontology-driven Explorer grouping remains authoritative.
|
|
@@ -29,43 +29,38 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operatio
|
|
|
29
29
|
attribute :>> name = "PCA Care System";
|
|
30
30
|
attribute :>> entityKind = OperationalEntityKind::device;
|
|
31
31
|
attribute :>> responsibility = "System of interest for this context view.";
|
|
32
|
+
part opClinicalTeam : User {
|
|
33
|
+
attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Clinical Team";
|
|
34
|
+
part opRolePhysician : User {
|
|
35
|
+
attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Physician"; }
|
|
36
|
+
part opRoleNurse : User {
|
|
37
|
+
attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Nurse"; }
|
|
38
|
+
part opRoleBiomed : User {
|
|
39
|
+
attribute :>> actorKind = ActorKind::technician; attribute :>> name = "Biomed Tech"; }
|
|
40
|
+
}
|
|
41
|
+
part opPatientGroup : User {
|
|
42
|
+
attribute :>> actorKind = ActorKind::patient; attribute :>> name = "Patient Interaction";
|
|
43
|
+
part opRolePatient : User {
|
|
44
|
+
attribute :>> actorKind = ActorKind::patient; attribute :>> name = "Patient"; }
|
|
45
|
+
}
|
|
32
46
|
}
|
|
33
|
-
part opClinicalTeam : User {
|
|
34
|
-
attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Clinical Team"; }
|
|
35
|
-
part opPatientGroup : User {
|
|
36
|
-
attribute :>> actorKind = ActorKind::patient; attribute :>> name = "Patient Interaction"; }
|
|
37
|
-
part opRolePhysician : User {
|
|
38
|
-
attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Physician"; }
|
|
39
|
-
part opRoleNurse : User {
|
|
40
|
-
attribute :>> actorKind = ActorKind::clinician; attribute :>> name = "Nurse"; }
|
|
41
|
-
part opRoleBiomed : User {
|
|
42
|
-
attribute :>> actorKind = ActorKind::technician; attribute :>> name = "Biomed Tech"; }
|
|
43
|
-
part opRolePatient : User {
|
|
44
|
-
attribute :>> actorKind = ActorKind::patient; attribute :>> name = "Patient"; }
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
connection : Composes connect parent ::> opCareSystem to child ::> opPatientGroup;
|
|
48
|
-
connection : Composes connect parent ::> opClinicalTeam to child ::> opRolePhysician;
|
|
49
|
-
connection : Composes connect parent ::> opClinicalTeam to child ::> opRoleNurse;
|
|
50
|
-
connection : Composes connect parent ::> opClinicalTeam to child ::> opRoleBiomed;
|
|
51
|
-
connection : Composes connect parent ::> opPatientGroup to child ::> opRolePatient;
|
|
52
|
-
|
|
53
|
-
action opSetupFlow : OperationalActivity {
|
|
48
|
+
action opSetupFlow : OperativeAction {
|
|
54
49
|
action opPrescribe : OpPrescribeTherapy { attribute :>> name = "Prescribe Therapy"; }
|
|
55
50
|
action opVerify : OpVerifyPrescription { attribute :>> name = "Verify Prescription"; }
|
|
56
51
|
fork opForkPrep;
|
|
57
|
-
action opPrime :
|
|
58
|
-
action opSelfTest :
|
|
52
|
+
action opPrime : OperativeAction { attribute :>> name = "Prime Pump & Load Reservoir"; }
|
|
53
|
+
action opSelfTest : OperativeAction { attribute :>> name = "Run Device Self-Test"; }
|
|
59
54
|
join opJoinPrep;
|
|
60
|
-
action opProgram :
|
|
61
|
-
action opConnect :
|
|
62
|
-
action opStart :
|
|
63
|
-
action opAdminister :
|
|
55
|
+
action opProgram : OperativeAction { attribute :>> name = "Program Pump Parameters"; }
|
|
56
|
+
action opConnect : OperativeAction { attribute :>> name = "Connect to Patient"; }
|
|
57
|
+
action opStart : OperativeAction { attribute :>> name = "Start Infusion"; }
|
|
58
|
+
action opAdminister : OperativeAction {
|
|
64
59
|
attribute :>> name = "Administer PCA Therapy";
|
|
65
60
|
action opRequestBolus : OpRequestBolus { attribute :>> name = "Request Bolus"; }
|
|
66
61
|
action opCheckLockout : OpCheckLockout { attribute :>> name = "Check Lockout"; }
|
|
67
|
-
action opDeliverDose :
|
|
68
|
-
action opLogEvent :
|
|
62
|
+
action opDeliverDose : OperativeAction { attribute :>> name = "Deliver Dose"; }
|
|
63
|
+
action opLogEvent : OperativeAction { attribute :>> name = "Log Dose Event"; }
|
|
69
64
|
flow of OpBolusRequest from opRequestBolus.bolusRequest to opCheckLockout.bolusRequest;
|
|
70
65
|
first start then opRequestBolus;
|
|
71
66
|
first opRequestBolus then opCheckLockout;
|
|
@@ -88,51 +83,26 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_operatio
|
|
|
88
83
|
first opAdminister then done;
|
|
89
84
|
}
|
|
90
85
|
|
|
91
|
-
allocate opSetupFlow.opPrescribe to opRolePhysician;
|
|
92
|
-
allocate opSetupFlow.opVerify to opRoleNurse;
|
|
93
|
-
allocate opSetupFlow.opPrime to opRoleNurse;
|
|
94
|
-
allocate opSetupFlow.opSelfTest to opRoleBiomed;
|
|
95
|
-
allocate opSetupFlow.opProgram to opRoleNurse;
|
|
96
|
-
allocate opSetupFlow.opConnect to opRoleNurse;
|
|
97
|
-
allocate opSetupFlow.opStart to opRoleNurse;
|
|
98
|
-
allocate opSetupFlow.opAdminister to opRoleNurse;
|
|
99
|
-
allocate opSetupFlow.opAdminister.opRequestBolus to opRolePatient;
|
|
100
|
-
allocate opSetupFlow.opAdminister.opCheckLockout to opRoleNurse;
|
|
101
|
-
allocate opSetupFlow.opAdminister.opDeliverDose to opRoleNurse;
|
|
102
|
-
allocate opSetupFlow.opAdminister.opLogEvent to opRoleNurse;
|
|
86
|
+
allocate opSetupFlow.opPrescribe to opCareSystem.opClinicalTeam.opRolePhysician;
|
|
87
|
+
allocate opSetupFlow.opVerify to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
88
|
+
allocate opSetupFlow.opPrime to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
89
|
+
allocate opSetupFlow.opSelfTest to opCareSystem.opClinicalTeam.opRoleBiomed;
|
|
90
|
+
allocate opSetupFlow.opProgram to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
91
|
+
allocate opSetupFlow.opConnect to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
92
|
+
allocate opSetupFlow.opStart to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
93
|
+
allocate opSetupFlow.opAdminister to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
94
|
+
allocate opSetupFlow.opAdminister.opRequestBolus to opCareSystem.opPatientGroup.opRolePatient;
|
|
95
|
+
allocate opSetupFlow.opAdminister.opCheckLockout to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
96
|
+
allocate opSetupFlow.opAdminister.opDeliverDose to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
97
|
+
allocate opSetupFlow.opAdminister.opLogEvent to opCareSystem.opClinicalTeam.opRoleNurse;
|
|
103
98
|
|
|
104
99
|
view opSetupView : MemoDiagramView {
|
|
105
100
|
expose opSetupFlow::**;
|
|
106
101
|
expose opCareSystem::**;
|
|
107
|
-
expose opClinicalTeam::**;
|
|
108
|
-
expose opPatientGroup::**;
|
|
109
102
|
attribute depth = 2;
|
|
110
|
-
attribute :>> title = "Sample · Clinical PCA Setup (Operational)";
|
|
111
103
|
attribute :>> shortDescription = "Operational activity across clinical roles with concurrent preparation and a composite therapy step.";
|
|
112
104
|
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
113
105
|
attribute :>> diagramType = "ofd";
|
|
114
|
-
|
|
106
|
+
ref :>> viewpointDefinition = operationalViewpoint;
|
|
115
107
|
}
|
|
116
|
-
|
|
117
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opPrescribe to targetView ::> opSetupView;
|
|
118
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opVerify to targetView ::> opSetupView;
|
|
119
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opForkPrep to targetView ::> opSetupView;
|
|
120
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opPrime to targetView ::> opSetupView;
|
|
121
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opSelfTest to targetView ::> opSetupView;
|
|
122
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opJoinPrep to targetView ::> opSetupView;
|
|
123
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opProgram to targetView ::> opSetupView;
|
|
124
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opConnect to targetView ::> opSetupView;
|
|
125
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opStart to targetView ::> opSetupView;
|
|
126
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister to targetView ::> opSetupView;
|
|
127
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opRequestBolus to targetView ::> opSetupView;
|
|
128
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opCheckLockout to targetView ::> opSetupView;
|
|
129
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opDeliverDose to targetView ::> opSetupView;
|
|
130
|
-
connection : IncludedIn connect sourceElement ::> opSetupFlow.opAdminister.opLogEvent to targetView ::> opSetupView;
|
|
131
|
-
connection : IncludedIn connect sourceElement ::> opCareSystem to targetView ::> opSetupView;
|
|
132
|
-
connection : IncludedIn connect sourceElement ::> opClinicalTeam to targetView ::> opSetupView;
|
|
133
|
-
connection : IncludedIn connect sourceElement ::> opPatientGroup to targetView ::> opSetupView;
|
|
134
|
-
connection : IncludedIn connect sourceElement ::> opRolePhysician to targetView ::> opSetupView;
|
|
135
|
-
connection : IncludedIn connect sourceElement ::> opRoleNurse to targetView ::> opSetupView;
|
|
136
|
-
connection : IncludedIn connect sourceElement ::> opRoleBiomed to targetView ::> opSetupView;
|
|
137
|
-
connection : IncludedIn connect sourceElement ::> opRolePatient to targetView ::> opSetupView;
|
|
138
108
|
}
|
|
@@ -46,20 +46,16 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_requirem
|
|
|
46
46
|
view sampleRequirementsView : MemoDiagramView {
|
|
47
47
|
expose needSafeTherapy::**;
|
|
48
48
|
expose needTimelyAlarms::**;
|
|
49
|
+
expose reqDoseLimit;
|
|
50
|
+
expose reqOcclusionAlarm;
|
|
51
|
+
expose reqAlarmLoudness;
|
|
49
52
|
attribute depth = 1;
|
|
50
|
-
attribute :>> title = "Sample · Requirements";
|
|
51
53
|
attribute :>> shortDescription = "Stakeholder needs deriving into system requirements, wired by DerivesFrom trace edges.";
|
|
52
54
|
attribute :>> viewKind = DiagramViewKind::general;
|
|
53
55
|
attribute :>> diagramType = "req";
|
|
54
|
-
|
|
56
|
+
ref :>> viewpointDefinition = requirementsViewpoint;
|
|
55
57
|
part :>> selectionQuery {
|
|
56
58
|
attribute :>> includeRelationshipKinds = ("DerivesFrom");
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
|
|
60
|
-
connection : IncludedIn connect sourceElement ::> needSafeTherapy to targetView ::> sampleRequirementsView;
|
|
61
|
-
connection : IncludedIn connect sourceElement ::> needTimelyAlarms to targetView ::> sampleRequirementsView;
|
|
62
|
-
connection : IncludedIn connect sourceElement ::> reqDoseLimit to targetView ::> sampleRequirementsView;
|
|
63
|
-
connection : IncludedIn connect sourceElement ::> reqOcclusionAlarm to targetView ::> sampleRequirementsView;
|
|
64
|
-
connection : IncludedIn connect sourceElement ::> reqAlarmLoudness to targetView ::> sampleRequirementsView;
|
|
65
61
|
}
|
|
@@ -24,28 +24,9 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_standard
|
|
|
24
24
|
view standardActivityView : MemoDiagramView {
|
|
25
25
|
expose CustomerProcess::**;
|
|
26
26
|
attribute depth = 2;
|
|
27
|
-
attribute :>> title = "Sample · Customer Purchase Process";
|
|
28
27
|
attribute :>> shortDescription = "Customer login, guarded validation, shopping loop, checkout, credit approval, and explicit completion outcomes.";
|
|
29
28
|
attribute :>> viewKind = DiagramViewKind::actionflow;
|
|
30
29
|
attribute :>> diagramType = "afd";
|
|
31
|
-
|
|
30
|
+
ref :>> viewpointDefinition = functionalViewpoint;
|
|
32
31
|
}
|
|
33
|
-
|
|
34
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::customerLogsIn to targetView ::> standardActivityView;
|
|
35
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::validUserDecision to targetView ::> standardActivityView;
|
|
36
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::rejected to targetView ::> standardActivityView;
|
|
37
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::browseCatalog to targetView ::> standardActivityView;
|
|
38
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::viewBookStore to targetView ::> standardActivityView;
|
|
39
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::selectBookForPurchase to targetView ::> standardActivityView;
|
|
40
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::addToShoppingBasket to targetView ::> standardActivityView;
|
|
41
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::viewShoppingBasket to targetView ::> standardActivityView;
|
|
42
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::shoppingDecision to targetView ::> standardActivityView;
|
|
43
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::commitOrder to targetView ::> standardActivityView;
|
|
44
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::supplyCreditCardDetails to targetView ::> standardActivityView;
|
|
45
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::creditDecision to targetView ::> standardActivityView;
|
|
46
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::rejectCreditCard to targetView ::> standardActivityView;
|
|
47
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::closeOrder to targetView ::> standardActivityView;
|
|
48
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::confirmPurchase to targetView ::> standardActivityView;
|
|
49
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::itemsDelivered to targetView ::> standardActivityView;
|
|
50
|
-
connection : IncludedIn connect sourceElement ::> CustomerProcess::orderComplete to targetView ::> standardActivityView;
|
|
51
32
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// State transition sample (statetransition view kind, `stm` diagram type). A
|
|
2
|
-
// behaviour machine owns its mode states
|
|
3
|
-
//
|
|
2
|
+
// behaviour machine owns its mode states by containing them, and each native
|
|
3
|
+
// transition lives inside the state whose substates it connects.
|
|
4
4
|
package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_transition_view {
|
|
5
5
|
private import ScalarValues::*;
|
|
6
6
|
|
|
@@ -9,103 +9,71 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_state_tr
|
|
|
9
9
|
private import memo_viewpoints_definitions::*;
|
|
10
10
|
private import memo_viewpoints_functional_functional_viewpoint::*;
|
|
11
11
|
private import memo_core_enumerations::*;
|
|
12
|
+
private import memo_core_common::*;
|
|
12
13
|
|
|
13
|
-
state pumpModes : StateMachine {
|
|
14
|
+
state pumpModes : StateMachine {
|
|
15
|
+
attribute :>> name = "Pump Operating Modes";
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
state infusing : ModeState { attribute :>> name = "Infusing"; }
|
|
17
|
-
state paused : ModeState { attribute :>> name = "Paused"; }
|
|
18
|
-
state alarm : ModeState { attribute :>> name = "Alarm"; }
|
|
17
|
+
state idle : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Idle"; }
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
// Infusing is a composite state: its substates show what the pump is
|
|
20
|
+
// doing while it is infusing, and containment is the nesting itself —
|
|
21
|
+
// not a parallel set of Composes edges.
|
|
22
|
+
state infusing : MemoState {
|
|
23
|
+
attribute :>> stateKind = StateKind::mode;
|
|
24
|
+
attribute :>> name = "Infusing";
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
attribute :>> sourceState = "Idle"; attribute :>> targetState = "Infusing";
|
|
30
|
-
}
|
|
31
|
-
part tPause : Transition {
|
|
32
|
-
attribute :>> name = "pause";
|
|
33
|
-
attribute :>> trigger = "pauseRequested";
|
|
34
|
-
attribute :>> sourceState = "Infusing"; attribute :>> targetState = "Paused";
|
|
35
|
-
}
|
|
36
|
-
part tResume : Transition {
|
|
37
|
-
attribute :>> name = "resume";
|
|
38
|
-
attribute :>> trigger = "resumeRequested";
|
|
39
|
-
attribute :>> sourceState = "Paused"; attribute :>> targetState = "Infusing";
|
|
40
|
-
}
|
|
41
|
-
part tFault : Transition {
|
|
42
|
-
attribute :>> name = "fault";
|
|
43
|
-
attribute :>> trigger = "occlusionDetected";
|
|
44
|
-
attribute :>> sourceState = "Infusing"; attribute :>> targetState = "Alarm";
|
|
45
|
-
}
|
|
46
|
-
part tRecover : Transition {
|
|
47
|
-
attribute :>> name = "acknowledge";
|
|
48
|
-
attribute :>> trigger = "alarmCleared";
|
|
49
|
-
attribute :>> sourceState = "Alarm"; attribute :>> targetState = "Idle";
|
|
50
|
-
}
|
|
51
|
-
part tStop : Transition {
|
|
52
|
-
attribute :>> name = "stop";
|
|
53
|
-
attribute :>> trigger = "stopInfusion";
|
|
54
|
-
attribute :>> sourceState = "Infusing"; attribute :>> targetState = "Idle";
|
|
55
|
-
}
|
|
26
|
+
state priming : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Priming"; }
|
|
27
|
+
state delivering : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Delivering"; }
|
|
28
|
+
state holding : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Holding (KVO)"; }
|
|
56
29
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
attribute :>> name = "
|
|
69
|
-
attribute :>>
|
|
70
|
-
attribute :>> sourceState = "Holding (KVO)"; attribute :>> targetState = "Delivering";
|
|
71
|
-
}
|
|
30
|
+
transition tPrimed first priming then delivering {
|
|
31
|
+
@TransitionRecord { :>> name = "primed"; :>> trigger = "primeComplete"; }
|
|
32
|
+
}
|
|
33
|
+
transition tKvo first delivering then holding {
|
|
34
|
+
@TransitionRecord { :>> name = "keepVeinOpen"; :>> trigger = "doseComplete"; }
|
|
35
|
+
}
|
|
36
|
+
transition tResumeDose first holding then delivering {
|
|
37
|
+
@TransitionRecord { :>> name = "resumeDose"; :>> trigger = "doseScheduled"; }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
state paused : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Paused"; }
|
|
42
|
+
state alarm : MemoState { attribute :>> stateKind = StateKind::mode; attribute :>> name = "Alarm"; }
|
|
72
43
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
44
|
+
transition tStart first idle then infusing {
|
|
45
|
+
@TransitionRecord { :>> name = "start"; :>> trigger = "startInfusion"; }
|
|
46
|
+
}
|
|
47
|
+
transition tPause first infusing then paused {
|
|
48
|
+
@TransitionRecord { :>> name = "pause"; :>> trigger = "pauseRequested"; }
|
|
49
|
+
}
|
|
50
|
+
transition tResume first paused then infusing {
|
|
51
|
+
@TransitionRecord { :>> name = "resume"; :>> trigger = "resumeRequested"; }
|
|
52
|
+
}
|
|
53
|
+
transition tFault first infusing then alarm {
|
|
54
|
+
@TransitionRecord { :>> name = "fault"; :>> trigger = "occlusionDetected"; }
|
|
55
|
+
}
|
|
56
|
+
transition tRecover first alarm then idle {
|
|
57
|
+
@TransitionRecord { :>> name = "acknowledge"; :>> trigger = "alarmCleared"; }
|
|
58
|
+
}
|
|
59
|
+
transition tStop first infusing then idle {
|
|
60
|
+
@TransitionRecord { :>> name = "stop"; :>> trigger = "stopInfusion"; }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
80
63
|
|
|
81
64
|
view sampleStateTransitionView : MemoDiagramView {
|
|
82
65
|
expose pumpModes::**;
|
|
83
66
|
attribute depth = 2;
|
|
84
|
-
attribute :>> title = "Sample · State Transition";
|
|
85
67
|
attribute :>> shortDescription = "A pump-mode state machine — Idle, Infusing, Paused, Alarm — where Infusing is a composite state nesting Priming, Delivering and Holding.";
|
|
86
68
|
attribute :>> viewKind = DiagramViewKind::statetransition;
|
|
87
69
|
attribute :>> diagramType = "stm";
|
|
88
|
-
|
|
70
|
+
ref :>> viewpointDefinition = functionalViewpoint;
|
|
89
71
|
part :>> selectionQuery {
|
|
90
|
-
attribute :>> includeElementKinds = ("StateMachine", "
|
|
72
|
+
attribute :>> includeElementKinds = ("StateMachine", "MemoState");
|
|
91
73
|
}
|
|
92
74
|
}
|
|
93
75
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
connection : IncludedIn connect sourceElement ::> paused to targetView ::> sampleStateTransitionView;
|
|
98
|
-
connection : IncludedIn connect sourceElement ::> alarm to targetView ::> sampleStateTransitionView;
|
|
99
|
-
connection : IncludedIn connect sourceElement ::> tStart to targetView ::> sampleStateTransitionView;
|
|
100
|
-
connection : IncludedIn connect sourceElement ::> tPause to targetView ::> sampleStateTransitionView;
|
|
101
|
-
connection : IncludedIn connect sourceElement ::> tResume to targetView ::> sampleStateTransitionView;
|
|
102
|
-
connection : IncludedIn connect sourceElement ::> tFault to targetView ::> sampleStateTransitionView;
|
|
103
|
-
connection : IncludedIn connect sourceElement ::> tRecover to targetView ::> sampleStateTransitionView;
|
|
104
|
-
connection : IncludedIn connect sourceElement ::> tStop to targetView ::> sampleStateTransitionView;
|
|
105
|
-
connection : IncludedIn connect sourceElement ::> priming to targetView ::> sampleStateTransitionView;
|
|
106
|
-
connection : IncludedIn connect sourceElement ::> delivering to targetView ::> sampleStateTransitionView;
|
|
107
|
-
connection : IncludedIn connect sourceElement ::> holding to targetView ::> sampleStateTransitionView;
|
|
108
|
-
connection : IncludedIn connect sourceElement ::> tPrimed to targetView ::> sampleStateTransitionView;
|
|
109
|
-
connection : IncludedIn connect sourceElement ::> tKvo to targetView ::> sampleStateTransitionView;
|
|
110
|
-
connection : IncludedIn connect sourceElement ::> tResumeDose to targetView ::> sampleStateTransitionView;
|
|
76
|
+
// The machine is one containment tree, so exposing its root reaches every
|
|
77
|
+
// state and transition; the former per-element IncludedIn list restated
|
|
78
|
+
// that tree a second time and is gone with it.
|
|
111
79
|
}
|
package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml
CHANGED
|
@@ -8,51 +8,40 @@ package memo_examples_sysml_diagram_samples_viewpoints_unassigned_views_tree_vie
|
|
|
8
8
|
private import memo_viewpoints_physical_physical_viewpoint::*;
|
|
9
9
|
private import memo_core_enumerations::*;
|
|
10
10
|
|
|
11
|
-
part rootA : HardwareAssembly {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
part rootA : HardwareAssembly {
|
|
12
|
+
attribute :>> name = "Root A";
|
|
13
|
+
part branchA1 : HardwareAssembly {
|
|
14
|
+
attribute :>> name = "Branch A.1";
|
|
15
|
+
part leafA11 : HardwareAssembly {
|
|
16
|
+
attribute :>> name = "Leaf A.1.1";
|
|
17
|
+
attribute :>> partNumber = "PN-001";
|
|
18
|
+
}
|
|
19
|
+
part leafA12 : HardwareAssembly { attribute :>> name = "Leaf A.1.2"; }
|
|
20
|
+
}
|
|
21
|
+
part branchA2 : HardwareAssembly {
|
|
22
|
+
attribute :>> name = "Branch A.2 With A Deliberately Long Label";
|
|
23
|
+
part leafA21 : HardwareAssembly { attribute :>> name = "Leaf A.2.1"; }
|
|
24
|
+
}
|
|
25
|
+
part rootB : HardwareAssembly {
|
|
26
|
+
attribute :>> name = "Root B";
|
|
27
|
+
part branchB1 : HardwareAssembly {
|
|
28
|
+
attribute :>> name = "Branch B.1";
|
|
29
|
+
part leafB11 : HardwareAssembly { attribute :>> name = "Leaf B.1.1"; }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
19
32
|
}
|
|
20
|
-
part leafA12 : HardwareAssembly { attribute :>> name = "Leaf A.1.2"; }
|
|
21
|
-
part leafA21 : HardwareAssembly { attribute :>> name = "Leaf A.2.1"; }
|
|
22
|
-
part leafB11 : HardwareAssembly { attribute :>> name = "Leaf B.1.1"; }
|
|
23
|
-
|
|
24
|
-
connection : Composes connect parent ::> rootA to child ::> branchA1;
|
|
25
|
-
connection : Composes connect parent ::> rootA to child ::> branchA2;
|
|
26
|
-
connection : Composes connect parent ::> rootA to child ::> rootB;
|
|
27
|
-
connection : Composes connect parent ::> branchA1 to child ::> leafA11;
|
|
28
|
-
connection : Composes connect parent ::> branchA1 to child ::> leafA12;
|
|
29
|
-
connection : Composes connect parent ::> branchA2 to child ::> leafA21;
|
|
30
|
-
connection : Composes connect parent ::> rootB to child ::> branchB1;
|
|
31
|
-
connection : Composes connect parent ::> branchB1 to child ::> leafB11;
|
|
32
33
|
|
|
33
34
|
view sampleTreeView : MemoDiagramView {
|
|
34
35
|
expose rootA::**;
|
|
35
|
-
expose rootB::**;
|
|
36
36
|
attribute depth = 2;
|
|
37
|
-
attribute :>> title = "Sample · Tree";
|
|
38
37
|
attribute :>> shortDescription = "One connected dummy hierarchy with varied branch depths for tree layout development.";
|
|
39
38
|
attribute :>> viewKind = DiagramViewKind::general;
|
|
40
39
|
attribute :>> diagramType = "bdd";
|
|
41
|
-
|
|
40
|
+
ref :>> viewpointDefinition = physicalViewpoint;
|
|
42
41
|
attribute :>> layoutHint = "tree";
|
|
43
42
|
attribute :>> styleHint = "expanded:rootA,rootB,branchA1,branchB1";
|
|
44
43
|
part :>> selectionQuery {
|
|
45
44
|
attribute :>> includeRelationshipKinds = ("Composes");
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
|
-
|
|
49
|
-
connection : IncludedIn connect sourceElement ::> rootA to targetView ::> sampleTreeView;
|
|
50
|
-
connection : IncludedIn connect sourceElement ::> rootB to targetView ::> sampleTreeView;
|
|
51
|
-
connection : IncludedIn connect sourceElement ::> branchA1 to targetView ::> sampleTreeView;
|
|
52
|
-
connection : IncludedIn connect sourceElement ::> branchA2 to targetView ::> sampleTreeView;
|
|
53
|
-
connection : IncludedIn connect sourceElement ::> branchB1 to targetView ::> sampleTreeView;
|
|
54
|
-
connection : IncludedIn connect sourceElement ::> leafA11 to targetView ::> sampleTreeView;
|
|
55
|
-
connection : IncludedIn connect sourceElement ::> leafA12 to targetView ::> sampleTreeView;
|
|
56
|
-
connection : IncludedIn connect sourceElement ::> leafA21 to targetView ::> sampleTreeView;
|
|
57
|
-
connection : IncludedIn connect sourceElement ::> leafB11 to targetView ::> sampleTreeView;
|
|
58
47
|
}
|