open - Open interaction - MATLAB (original) (raw)

You can use read-only API workflows to navigate sequence diagrams in System Composerâ„¢ and display information about each element.

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");

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

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 source lifeline represents the source component. The poller lifeline represents the poller component. The lampController lifeline represents the lampController component. The ped lamp lifeline represents the ped lamp component.

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){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