find
Find architecture model elements using query
Syntax
Description
[
finds all element paths starting from the root architecture of the model that satisfy the
paths
] = find(model
,constraint
,Name=Value
)constraint
query, with additional options specified by one or more
name-value arguments.
[
returns the component elements paths
, elements
] = find(___)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.
[
finds all
component, port, or connector elements elements
] = find(___)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'
.
[
finds all element paths starting from the specified root architecture
paths
] = find(model
,constraint
,rootArch
,Name=Value
)rootArch
that satisfy the constraint
query, with
additional options specified by one or more name-value arguments.
Examples
Find Model Element Paths that Satisfy Query
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 Architecture Model
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 = 1x1 cell array
{'exModel/c1'}
elem = Component with properties: IsAdapterComponent: 0 Architecture: [1x1 systemcomposer.arch.Architecture] Name: 'c1' Parent: [1x1 systemcomposer.arch.Architecture] Ports: [0x0 systemcomposer.arch.ComponentPort] OwnedPorts: [0x0 systemcomposer.arch.ComponentPort] OwnedArchitecture: [1x1 systemcomposer.arch.Architecture] Parameters: [0x0 systemcomposer.arch.Parameter] Position: [15 15 65 76] Model: [1x1 systemcomposer.arch.Model] SimulinkHandle: 154.0056 SimulinkModelHandle: 152.0012 UUID: '650b22c1-c4a6-4bc0-8411-8d09a3eb7a68' ExternalUID: ''
Clean Up
Remove the model and the profile.
cleanUpFindElementsInModel
Find Ports in Architecture Model
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")
Find Architectural Element Paths That Satisfy Query
import systemcomposer.query.*; scKeylessEntrySystem modelObj = systemcomposer.openModel("KeylessEntryArchitecture"); find(modelObj,HasStereotype(IsStereotypeDerivedFrom("AutoProfile.BaseComponent")),... modelObj.Architecture,Recurse=true,IncludeReferenceModels=true)
Input Arguments
model
— Architecture model
model object
Architecture model, specified as a systemcomposer.arch.Model
object.
constraint
— Query
query constraint 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 Object | Condition |
---|---|
Property | A non-evaluated value for the given property or stereotype property. |
PropertyValue | An evaluated property value from a System Composer object or a stereotype property. |
HasConnector | A component has a connector that satisfies the given subconstraint. |
HasPort | A component has a port that satisfies the given subconstraint. |
HasInterface | A port has an interface that satisfies the given subconstraint. |
HasInterfaceElement | An interface has an interface element that satisfies the given subconstraint. |
HasStereotype | An architecture element has a stereotype that satisfies the given subconstraint. |
IsInRange | A property value is within the given range. |
AnyComponent | An element is a component and not a port or connector. |
IsStereotypeDerivedFrom | A stereotype is derived from the given stereotype. |
rootArch
— Root architecture of model
architecture object | Architecture
property of model object
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
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)
Recurse
— Option to recursively search model
1
(true
) (default) | 0
(false
)
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
IncludeReferenceModels
— Option to search for reference architectures
0
(false
) (default) | 1
(true
)
Option to search for reference architectures, specified as 1
(true
) or 0
(false
).
Example: find(model,constraint,IncludeReferenceModels=true)
Data Types: logical
ElementType
— Option to search by type
"Component"
(default) | "Port"
| "Connector"
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
paths
— Element paths
cell array of character vectors
Element paths, returned as a cell array of character vectors that satisfy
constraint
.
Data Types: char
elements
— Elements
element objects
Elements, returned as systemcomposer.arch.Element
objects that satisfy
constraint
.
More About
Definitions
Term | Definition | Application | More Information |
---|---|---|---|
architecture | A System Composer™ architecture represents a system of components and how they interface with each other structurally and behaviorally. |
Different types of architectures describe different aspects of systems. You can use views to visualize a subset of components in an architecture. You can define parameters on the architecture level using the Parameter Editor. | |
root | A root is at the top of an architecture hierarchy. A root architecture has a boundary defined by its architecture ports that surround the system of interest. | The root architecture has a system boundary surrounding your architecture model. You can add architecture ports that define interfaces across the boundary. | |
model | A System Composer model is the file that contains architectural information, such as components, ports, connectors, interfaces, and behaviors. |
Perform operations on a model:
A System Composer model is stored as an SLX file. | Create Architecture Model with Interfaces and Requirement Links |
component | A component is a replaceable part of a system that fulfills a clear function in the context of an architecture. A component defines an architectural element, such as a function, another system, hardware, software, or other conceptual entity. A component can also be a subsystem or subfunction. | Represented as a block, a component is a part of an architecture model that can be separated into reusable artifacts. Transfer information between components with:
| |
port | A port is a node on a component or architecture that represents a point of interaction with its environment. A port permits the flow of information to and from other components or systems. |
| |
connector | Connectors are lines that provide connections between ports. Connectors describe how information flows between components or architectures. | A connector allows two components to interact without defining the nature of the interaction. Set an interface on a port to define how the components interact. |
Term | Definition | Application | More 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:
| Display Component Hierarchy and Architecture Hierarchy Using Views |
Version History
Introduced in R2019a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)