Main Content

systemcomposer.interaction.Lifeline

Lifeline in interaction

Since R2024a

    Description

    A Lifeline object represents a participant of an interaction. A lifeline sends and receives messages between other participants. On the sequence diagram representing the interaction, a lifeline is shown as a vertical line with a header at the top containing the name of the lifeline. A lifeline corresponds to a component in the architecture model.

    Lifelines can have at most one parent lifeline, and zero or more children lifelines. Children are represented in the sequence diagram as vertical lines with headers that are drawn underneath the parent lifeline.

    Creation

    Access Lifeline objects via the RootFragment property of the corresponding systemcomposer.interaction.Interaction object. Access the CoveredLifelines property of the root fragment to inspect all the lifelines.

    Properties

    expand all

    Name of lifeline, specified as a string.

    Example: "mechanicsComponent"

    Data Types: string

    Full path of lifeline, specified as a string.

    Example: "mySequenceDiagram/mechanicsComponent"

    Data Types: string

    Parent lifeline, specified as a systemcomposer.interaction.Lifeline object.

    Array of child lifelines, specified as an array of systemcomposer.interaction.Lifeline objects.

    Component represented by lifeline, specified as a systemcomposer.arch.Component object.

    Universal unique identifier, specified as a character vector.

    Example: '91d5de2c-b14c-4c76-a5d6-5dd0037c52df'

    Data Types: char

    Examples

    collapse all

    This example shows how to use read-only API workflows to navigate sequence diagrams in System Composer™ and display information about each of the elements.

    Open Traffic Light Example

    Open the traffic light example architecture model so that you can inspect the sequence diagrams visually and confirm the programmatic outputs.

    model = systemcomposer.openModel("TLExample");

    On the System Composer toolstrip, navigate to Modeling > Sequence Diagram to view the sequence diagrams associated with the model.

    The press detection sequence diagram in the views gallery of the top model.

    Programmatically Navigate Sequence Diagram

    Collect the sequence diagrams represented by interactions that contain specific interactions of elements in the model.

    interactions = model.getInteractions;

    For the first interaction, extract the name of the sequence diagram.

    disp("The first sequence diagram is called " + interactions(1).Name + ".")
    The first sequence diagram is called SignalSequence.
    

    For this sequence diagram, display each lifeline and the component the lifeline represents.

    for i = 1:length(interactions(1).Lifelines)
        disp("The " + interactions(1).Lifelines(i).Name + ...
        " lifeline represents the " + ...
        interactions(1).Lifelines(i).RelatedElements.Name + ...
        " component.")
    end
    The ped lamp lifeline represents the ped lamp component.
    The lampController lifeline represents the lampController component.
    The poller lifeline represents the poller component.
    The source lifeline represents the source component.
    

    Now, display the contents of one message in the root fragment.

    disp("The sequence diagram message starting at the " + ...
        interactions(1).RootFragment.Operands.Fragments(1).Name + ...
        " message end is of type " + ...
        string(interactions(1).RootFragment.Operands.Fragments(1).Message.Type) + ...
        " and the message label is " + ...
        interactions(1).RootFragment.Operands.Fragments(1).Message.Condition + ".")
    The sequence diagram message starting at the switchout message end is of type Signal and the message label is rising(sw-1).
    

    Use Iterator Utility to Step Through Sequence Diagram

    Step through the Inhibit sequence diagram using the Iterator utility.

    interaction = model.getInteraction('Inhibit');
    interaction.open

    Inhibit sequence diagram from the top model.

    Display the annotation from the interaction.

    disp(interaction.Annotations.Content)
    When inhibit is true, it means pedestrian crossing is not controlled by a walk signal on this intersection.
    

    Use an iterator to navigate through all elements of a sequence diagram before extracting their properties.

    iterator = systemcomposer.interaction.Iterator(interaction.RootFragment);
    next = iterator.next;
    while ~isempty(next)
        disp(class(next))
        next = iterator.next;
    end
    systemcomposer.interaction.RootFragment
    systemcomposer.interaction.Operand
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.AltFragment
    systemcomposer.interaction.Operand
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.Operand
    systemcomposer.interaction.MessageEvent
    systemcomposer.interaction.MessageEvent
    

    More About

    expand all

    Version History

    Introduced in R2024a