Main Content

find

Find architecture model elements using query

Description

[paths] = find(model,constraint,Name=Value) finds all element paths starting from the root architecture of the model that satisfy the constraint query, with additional options specified by one or more name-value arguments.

example

[paths, elements] = find(___) returns the component elements elements and their paths that satisfy the constraint query. Follow the syntax above for input arguments. If rootArch is not provided, then the function finds model elements in the root architecture of the model. The output argument paths contains a fully qualified named path for each component in elements from the given root architecture.

example

[elements] = find(___) finds all component, port, or connector elements elements, that satisfy the constraint query, with additional options specified by one or more name-value arguments, which must include 'Port' or 'Connector' for 'ElementType'.

example

[paths] = find(model,constraint,rootArch,Name=Value) finds all element paths starting from the specified root architecture rootArch that satisfy the constraint query, with additional options specified by one or more name-value arguments.

example

Examples

collapse all

Import a model and run a query to select architectural elements that have a stereotype based on the specified subconstraint.

import systemcomposer.query.*;
scKeylessEntrySystem
modelObj = systemcomposer.openModel("KeylessEntryArchitecture");
find(modelObj,HasStereotype(IsStereotypeDerivedFrom("AutoProfile.BaseComponent")),...
 Recurse=true,IncludeReferenceModels=true)

Create a query to find components that contain the letter c in their Name property.

constraint = contains(systemcomposer.query.Property("Name"),"c");
find(modelObj,constraint,Recurse=true,IncludeReferenceModels=true)

Find elements in an architecture model based on a System Composer™ query.

Create Model

Create an architecture model with two components.

m = systemcomposer.createModel("exModel");
comps = m.Architecture.addComponent(["c1","c2"]);

Create Profile and Stereotypes

Create a profile and stereotypes for your architecture model.

pf = systemcomposer.profile.Profile.createProfile("mProfile");
b = pf.addStereotype("BaseComp",AppliesTo="Component",Abstract=true);
s = pf.addStereotype("sComp",Parent=b);

Apply Profile and Stereotypes

Apply the profile and stereotypes to your architecture model.

m.Architecture.applyProfile(pf.Name)
comps(1).applyStereotype(s.FullyQualifiedName)

Find the Element

Find the element in your architecture model based on a query.

import systemcomposer.query.*
[p, elem] = find(m, HasStereotype(IsStereotypeDerivedFrom("mProfile.BaseComp")),...
Recurse=true,IncludeReferenceModels=true)
p = 1×1 cell array
    {'exModel/c1'}

elem = 
  Component with properties:

     IsAdapterComponent: 0
           Architecture: [1×1 systemcomposer.arch.Architecture]
                   Name: 'c1'
                 Parent: [1×1 systemcomposer.arch.Architecture]
                  Ports: [0×0 systemcomposer.arch.ComponentPort]
             OwnedPorts: [0×0 systemcomposer.arch.ComponentPort]
      OwnedArchitecture: [1×1 systemcomposer.arch.Architecture]
             Parameters: [0×0 systemcomposer.arch.Parameter]
               Position: [15 15 65 76]
                  Model: [1×1 systemcomposer.arch.Model]
         SimulinkHandle: 155.0089
    SimulinkModelHandle: 153.0017
                   UUID: '60d05e6f-1617-460a-b4dd-5c3d887ab186'
            ExternalUID: ''

Clean Up

Remove the model and the profile.

cleanUpFindElementsInModel

Create a model to query and create two components.

m = systemcomposer.createModel("exModel");
comps = m.Architecture.addComponent(["c1","c2"]);
port = comps(1).Architecture.addPort("cport1","in");

Create a query to find ports that contain the letter c in their Name property.

constraint = contains(systemcomposer.query.Property("Name"),"c");
find(m,constraint,Recurse=true,IncludeReferenceModels=true,ElementType="Port")
import systemcomposer.query.*;
scKeylessEntrySystem
modelObj = systemcomposer.openModel("KeylessEntryArchitecture");
find(modelObj,HasStereotype(IsStereotypeDerivedFrom("AutoProfile.BaseComponent")),...
 modelObj.Architecture,Recurse=true,IncludeReferenceModels=true)

Input Arguments

collapse all

Architecture model, specified as a systemcomposer.arch.Model object.

Query, specified as a systemcomposer.query.Constraint object representing specific conditions.

A constraint can contain a subconstraint that can be joined with another constraint using AND or OR. A constraint can be negated using NOT.

Query Objects and Conditions for Constraints

Query ObjectCondition
PropertyA non-evaluated value for the given property or stereotype property.
PropertyValueAn evaluated property value from a System Composer object or a stereotype property.
HasConnectorA component has a connector that satisfies the given subconstraint.
HasPortA component has a port that satisfies the given subconstraint.
HasInterfaceA port has an interface that satisfies the given subconstraint.
HasInterfaceElementAn interface has an interface element that satisfies the given subconstraint.
HasStereotypeAn architecture element has a stereotype that satisfies the given subconstraint.
IsInRangeA property value is within the given range.
AnyComponentAn element is a component and not a port or connector.
IsStereotypeDerivedFrom A stereotype is derived from the given stereotype.

Root architecture of model, specified as a systemcomposer.arch.Architecture object or the Architecture property of a systemcomposer.arch.Model object.

Example: modelObj.Architecture

Name-Value Arguments

collapse 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.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: find(model,constraint,Recurse=true,IncludeReferenceModels=true)

Option to recursively search model or to only search a specific layer, specified as 1 (true) to recursively search or 0 (false). to only search the specific layer.

Example: find(model,constraint,Recurse=true)

Data Types: logical

Option to search for reference architectures, specified as 1 (true) or 0 (false).

Example: find(model,constraint,IncludeReferenceModels=true)

Data Types: logical

Option to search by type, specified as one of these types

  • "Component" to find components to satisfy the query

  • "Port" to find ports to satisfy the query

  • "Connector' to find connectors to satisfy the query

Example: find(model,constraint,ElementType="Port")

Data Types: char | string

Output Arguments

collapse all

Element paths, returned as a cell array of character vectors that satisfy constraint.

Data Types: char

Elements, returned as systemcomposer.arch.Element objects that satisfy constraint.

More About

collapse all

Version History

Introduced in R2019a