Main Content

addFragment

Add fragment to operand

Since R2024b

    Description

    fragment = addFragment(operand,fragmentType) adds a fragment of type fragmentType to the operand specified by operand.

    example

    fragment = addFragment(___,Name=Value) specifies options using one or more name-value arguments in addition to the input arguments in previous syntaxes. For example, to add the fragment after an existing fragment, set After to a valid fragment object.

    example

    Examples

    collapse all

    Create a sequence diagram programmatically to describe the scenario of a pedestrian crossing the street at an intersection with traffic lights.

    To learn more about sequence diagrams, see Author Sequence Diagrams Interactively.

    Open Traffic Light Example

    Load the TLExample architecture model.

    model = systemcomposer.openModel('TLExample');

    TLExample architecture model with various components.

    Create a new sequence diagram named 'InhibitCopy'.

    diagram = model.addInteraction('InhibitCopy');

    Add Lifelines

    Add a lifeline for each component in the architecture.

    sourceLifeline = diagram.addLifeline('TLExample/source');
    pollerLifeline = diagram.addLifeline('TLExample/poller');
    switchLifeline = diagram.addLifeline('TLExample/switch');
    lampLifeline = diagram.addLifeline('TLExample/lampController');
    controllerLifeline = diagram.addLifeline('TLExample/controller');

    Get the root fragment and root operand of the interaction.

    rootFragment = diagram.RootFragment;
    rootOperand = rootFragment.Operands(1);

    Add Messages and Fragments

    Add two messages to the root operand.

    sourceToPollerMsg = rootOperand.addMessage(sourceLifeline, "switchout", pollerLifeline, "sw", "rising(sw-1){sw==1}");
    pollerToSwitchMsg = rootOperand.addMessage(pollerLifeline, "switchEvent", switchLifeline, "switchEvent", "switchEvent{switchEvent==1}");

    Add an alternative fragment to the root operand.

    altFrag = rootOperand.addFragment('Alt');

    Specify the guard expressions for each operand of the alternative fragment.

    op1 = altFrag.Operands(1);
    op1.Guard = "switch/inhibit==0";
    op2 = altFrag.addOperand("switch/inhibit==1");

    Add two messages to the first operand of the alternative fragment.

    switchToLampControllerMsg1 = op1.addMessage(switchLifeline, "lampColor", lampLifeline, "switchPed", "switchPed{switchPed==1}");
    switchToControllerMsg = op1.addMessage(switchLifeline, "switchPush", controllerLifeline, "pedRequest", "pedRequest");

    Add a message to the second operand of the alternative fragment.

    switchToLampControllerMsg2 = op2.addMessage(switchLifeline, "lampColor", lampLifeline, "switchPed", "switchPed{switchPed==2}");

    Add Duration Constraints

    Add a duration constraint between the two messages in the first operand of the alternative fragment.

    startEvent = switchToLampControllerMsg1.End;
    endEvent = switchToControllerMsg.End;
    expression = "t > 12msec";
    durationConstraint = diagram.addDurationConstraint(startEvent, endEvent, expression);

    Open Sequence Diagram

    Open the newly created sequence diagram.

    open(diagram);

    Newly created sequence diagram called 'InhibitCopy'.

    Input Arguments

    collapse all

    Operand, specified as a systemcomposer.interaction.Operand object.

    Type of fragment, specified as one of these values:

    • "Opt" – Optional fragment

    • "Alt" – Alternative fragment

    • "Loop" – Loop fragment

    • "Par" – Parallel fragment

    • "Strict" – Weak sequencing fragment

    • "Seq" – Strict sequencing fragment

    Data Types: char | string

    Name-Value Arguments

    expand all

    Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

    Example: addFragment(op, "Loop", MinIterations=1, MaxIterations=5)

    Fragments

    expand all

    Element in sequence diagram after which to place new fragment, specified as one of these objects:

    Example: addFragment(op, "Seq", After=frag)

    Number of operands in new fragment, specified as a double.

    Only systemcomposer.interaction.AltFragment and systemcomposer.interaction.ParFragment objects support more than one operand.

    Example: addFragment(op, "Alt", NumOperands=2)

    Data Types: double

    Loop Fragments

    expand all

    Minimum number of times a loop fragment repeats, specified as a double.

    Example: addFragment(op, "Loop", MinIterations=1, MaxIterations=5)

    Data Types: double

    Maximum number of times a loop fragment repeats, specified as a double.

    Example: addFragment(op, "Loop", MinIterations=1, MaxIterations=5)

    Data Types: double

    More About

    collapse all

    Version History

    Introduced in R2024b