Skip to content

memo_architecture_operational_context_use_context

SysML API

Public namespace memo::architecture::operational::context::use_context
Declared package memo_architecture_operational_context_use_context
Source src/architecture/operational/context/use_context/memo_use_context.sysml

Namespace hierarchy

memomemo::architecturememo::architecture::operationalmemo::architecture::operational::contextmemo::architecture::operational::context::use_context

Packages

Package
memo_architecture_operational_context_use_context

Imports

Visibility Target
private Metaobjects::SemanticMetadata
private ScalarValues::*
private memo_core_common::*
private memo_core_enumerations::*
private memo_core_relationships::*
private memo_architecture_operational_context_actors::*

Declarations

Name SysML kind Description Specializes
UseContext part def Use context definition specializing MemoPart. MemoPart
UseEnvironment part def The physical/organizational environment of use (IEC 62366-1 3.20), separable from the care-setting context so environments are reusable. MemoPart
InteractsInContext connection def Typed relationship for interacts in context. MemoRelationship
InteractsWith connection def Typed relationship for interacts with. MemoRelationship
AppliesInContext connection def ConnectsPhysically is native connect (R10-S6): write connection connect source ::> <a> to target ::> <b>; — the ordinary untyped binary connection — instead of a connection def for it. MemoRelationship
SituatedIn connection def Typed relationship for situated in. MemoRelationship

UseContext

part def UseContext specializes MemoPart
Property Value
Description Use context definition specializing MemoPart.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_architecture_operational_context_use_context

UseEnvironment

part def UseEnvironment specializes MemoPart
Property Value
Description The physical/organizational environment of use (IEC 62366-1 3.20), separable from the care-setting context so environments are reusable.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_architecture_operational_context_use_context

InteractsInContext

connection def InteractsInContext :> MemoRelationship
Property Value
Description Typed relationship for interacts in context.
Kind connection def
Abstract No
Specializes MemoRelationship
Owning package memo_architecture_operational_context_use_context

InteractsWith

connection def InteractsWith :> MemoRelationship
Property Value
Description Typed relationship for interacts with.
Kind connection def
Abstract No
Specializes MemoRelationship
Owning package memo_architecture_operational_context_use_context

AppliesInContext

connection def AppliesInContext :> MemoRelationship
Property Value
Description ConnectsPhysically is native connect (R10-S6): write connection connect source ::> <a> to target ::> <b>; — the ordinary untyped binary connection — instead of a connection def for it.
Kind connection def
Abstract No
Specializes MemoRelationship
Owning package memo_architecture_operational_context_use_context

SituatedIn

connection def SituatedIn :> MemoRelationship
Property Value
Description Typed relationship for situated in.
Kind connection def
Abstract No
Specializes MemoRelationship
Owning package memo_architecture_operational_context_use_context

Source

architecture/operational/context/use_context/memo_use_context.sysml
// Operational use context (IEC 62366-1 use specification). Intended use and
// reasonably foreseeable misuse are assurance requirements/risk inputs and
// live in memo_assurance_requirements.
//
// This package once defined `ExchangesWith` for directional context-level data
// flow between boundary entities. It is deleted: SysML v2's own `flow` covers
// every case and is strictly stronger, because `of <ItemDef>` says WHAT moves
// and two untyped connection ends cannot. Delegation between a boundary port
// and the interior it stands for is `bind` — identity, not transport. SysML v2
// keeps the two apart the same way: training ch. 13 wires components with
// `flow`, ch. 12 delegates across a boundary with `bind`.
package memo_architecture_operational_context_use_context {
    private import Metaobjects::SemanticMetadata;
    private import ScalarValues::*;

    private import memo_core_common::*;
    private import memo_core_enumerations::*;
    private import memo_core_relationships::*;
    private import memo_architecture_operational_context_actors::*;

    part def UseContext specializes MemoPart {
        attribute careSetting : String;
        attribute environment : String;
        attribute jurisdiction : String;
        attribute connectedUse : Boolean;
    }

    // The physical/organizational environment of use (IEC 62366-1 3.20),
    // separable from the care-setting context so environments are reusable.
    part def UseEnvironment specializes MemoPart {
        attribute lighting : String;
        attribute noise : String;
        attribute vibration : String;
        attribute temperatureRange : String;
        attribute infectionControlConstraints : String;
        attribute mobility : String;
    }

    // The single relation a system context view draws.
    //
    // A context diagram labels its edges with open-ended verbs — "directs
    // procedure", "electrical power", "fluid supply", "environmental
    // conditions". Enumerating those as relation kinds never terminates, so the
    // ontology fixes the *role* an edge plays and leaves the verb to the
    // project: a project declares `connection def SuppliesFluid :>
    // InteractsInContext` and the view picks it up through the specialization
    // closure, exactly as a FirmwareComponent is recognised as a
    // SoftwareComponent.
    //
    // Keeping it separate from InteractsWith is the point: a context view draws
    // this relation and nothing else, so a model's general-purpose edges cannot
    // leak into the boundary picture.
    connection def InteractsInContext :> MemoRelationship {
        // Which side of the boundary picture the participant belongs on.
        attribute contextSide : ContextSideKind;
        // The verb, as it should read on the edge ("Directs procedure").
        attribute interactionLabel : String[0..1];
        end contextParticipant : MemoPart :>> source;
        // Untyped: the system of interest may be a part or an operational activity.
        end systemOfInterest :>> target;
    }
    abstract connection interactsInContextLinks : InteractsInContext[*];
    metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
        :> annotatedElement : SysML::ConnectionDefinition;
        :> annotatedElement : SysML::ConnectionUsage;
        :>> baseType = interactsInContextLinks meta SysML::Usage;
    }

    connection def InteractsWith :> MemoRelationship {
        end contextParticipant : OperationalParticipant :>> source;
        // Untyped so operational activities (action def) can be targets as well as parts.
        end target;
    }
    abstract connection interactsWithLinks : InteractsWith[*];
    metadata def <interactsWith> InteractsWithMetadata :> SemanticMetadata {
        :> annotatedElement : SysML::ConnectionDefinition;
        :> annotatedElement : SysML::ConnectionUsage;
        :>> baseType = interactsWithLinks meta SysML::Usage;
    }
    // `ConnectsPhysically` is native `connect` (R10-S6): write
    // `connection connect source ::> <a> to target ::> <b>;` — the ordinary
    // untyped binary connection — instead of a connection def for it.
    connection def AppliesInContext :> MemoRelationship {
        end useContext : UseContext :>> source;
        end subjectElement : MemoPart :>> target;
    }
    abstract connection appliesInContextLinks : AppliesInContext[*];
    metadata def <appliesInContext> AppliesInContextMetadata :> SemanticMetadata {
        :> annotatedElement : SysML::ConnectionDefinition;
        :> annotatedElement : SysML::ConnectionUsage;
        :>> baseType = appliesInContextLinks meta SysML::Usage;
    }
    connection def SituatedIn :> MemoRelationship {
        end useContext : UseContext :>> source;
        end environment : UseEnvironment :>> target;
    }
    abstract connection situatedInLinks : SituatedIn[*];
    metadata def <situatedIn> SituatedInMetadata :> SemanticMetadata {
        :> annotatedElement : SysML::ConnectionDefinition;
        :> annotatedElement : SysML::ConnectionUsage;
        :>> baseType = situatedInLinks meta SysML::Usage;
    }
}