Main Content

HasConnector

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

    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

    Version History

    Introduced in R2020a