Main Content

HasConnector

Create query to select architectural elements with connector based on specified subconstraint

Since R2020a

    Description

    query = HasConnector(subconstraint) creates a query query that the find and createView functions use to select architectural elements with a connector that satisfies the given subconstraint subconstraint.

    example

    Examples

    collapse all

    Import the namespace that contains all of the System Composer™ queries.

    import systemcomposer.query.*

    Create a profile for latency characteristics and save it.

    profile = systemcomposer.profile.Profile.createProfile("LatencyProfile");
    
    latencybase = profile.addStereotype("LatencyBase");
    latencybase.addProperty("latency",Type="double");
    latencybase.addProperty("dataRate",Type="double",DefaultValue="10");
    
    connLatency = profile.addStereotype("ConnectorLatency",...
    Parent="LatencyProfile.LatencyBase");
    connLatency.addProperty("secure",Type="boolean");
    connLatency.addProperty("linkDistance",Type="double");
    
    nodeLatency = profile.addStereotype("NodeLatency",...
    Parent="LatencyProfile.LatencyBase");
    nodeLatency.addProperty("resources",Type="double",DefaultValue="1");
    
    portLatency = profile.addStereotype("PortLatency",...
    Parent="LatencyProfile.LatencyBase");
    portLatency.addProperty("queueDepth",Type="double");
    portLatency.addProperty("dummy",Type="int32");
    
    profile.save

    Specify the LatencyProfile.NodeLatency stereotype as a component stereotype. Set the default connector stereotype.

    nodeLatency.AppliesTo = "Component";
    nodeLatency.setDefaultElementStereotype("Connector","LatencyProfile.ConnectorLatency");

    Create a model, apply the profile to the model, and add a component. Apply the stereotype on the component. Then, open the Profile Editor.

    modelName = "archModel";
    arch = systemcomposer.createModel(modelName);
    systemcomposer.openModel(modelName);
    arch.applyProfile("LatencyProfile");
    newComponent = addComponent(arch.Architecture,"Component");
    newComponent.applyStereotype("LatencyProfile.NodeLatency");
    systemcomposer.profile.editor(profile)

    Create two child components. Add ports. Then, create a connection between the ports and get stereotypes on the connector.

    childComponent1 = addComponent(newComponent.Architecture,"Child1");
    childComponent2 = addComponent(newComponent.Architecture,"Child2");
    
    outPort1 = addPort(childComponent1.Architecture,"testSig","out"); 
    inPort1 = addPort(childComponent2.Architecture,"testSig","in");
    srcPort = getPort(childComponent1,"testSig");
    destPort = getPort(childComponent2,"testSig");
    
    connector = connect(srcPort,destPort);
    stereotypes = getStereotypes(connector)
    stereotypes =
    
      1×1 cell array
    
        {'LatencyProfile.ConnectorLatency'}

    Create a query for all the elements with connectors with the ConnectorLatency stereotype and run the query.

    constraint = HasConnector(HasStereotype(Property("Name") == "ConnectorLatency"));
    baseComp = find(arch,constraint,Recurse=true,IncludeReferenceModels=true)
    baseComp =
    
      1×1 cell array
    
        {'archModel/Component'}

    Input Arguments

    collapse all

    Condition restricting the query, specified as a systemcomposer.query.Constraint object.

    Output Arguments

    collapse all

    Query, returned as a systemcomposer.query.Constraint object.

    More About

    collapse all

    Definitions

    TermDefinitionApplicationMore Information
    view

    A view shows a customizable subset of elements in a model. Views can be filtered based on stereotypes or names of components, ports, and interfaces, along with the name, type, or units of an interface element. Create views by adding elements manually. Views create a simplified way to work with complex architectures by focusing on certain parts of the architectural design.

    You can use different types of views to represent the system. Switch between a component diagram, component hierarchy, or architecture hierarchy. For software architectures, you can switch to a class diagram view. A viewpoint represents a stakeholder perspective that specifies the contents of the view.

    element group

    An element group is a grouping of components in a view.

    Use element groups to programmatically populate a view.

    query

    A query is a specification that describes certain constraints or criteria to be satisfied by model elements.

    Use queries to search elements with constraint criteria and to filter views.

    Find Elements in Model Using Queries
    component diagram

    A component diagram represents a view with components, ports, and connectors based on how the model is structured.

    Component diagrams allow you to programmatically or manually add and remove components from the view.

    Inspect Components in Custom Architecture Views
    hierarchy diagram

    You can visualize a hierarchy diagram as a view with components, ports, reference types, component stereotypes, and stereotype properties.

    System Composer has two types of hierarchy diagrams:

    • Component hierarchy diagrams display components in tree form with parents above children. In a component hierarchy view, each referenced model is represented as many times as it is used.

    • Architecture hierarchy diagrams display unique component architecture types and their relationships using composition connections. In an architecture hierarchy view, each referenced model is represented only once.

    Display Component Hierarchy and Architecture Hierarchy Using Views

    Version History

    Introduced in R2020a