Main Content

find

Find architecture model elements using query

Description

example

[paths] = find(object,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(object,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.

Examples

collapse all

Import a model and run a query to select architecture elements that have a stereotype based on the specified sub-constraint.

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 = 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]
               Position: [15 15 65 76]
                  Model: [1x1 systemcomposer.arch.Model]
         SimulinkHandle: 2.0032
    SimulinkModelHandle: 0.0032
                   UUID: 'd23d27ff-6c50-4e4f-a477-712522fd43bf'
            ExternalUID: ''

Clean Up

Uncomment to remove the model and the profile.

% m.close('force')
% systemcomposer.profile.Profile.closeAll

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

Model, specified as a systemcomposer.arch.Model object to query using constraint.

Query, specified as a systemcomposer.query.Constraint object representing specific conditions. A constraint can contain a sub-constraint 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.
HasPortA component has a port that satisfies the given sub-constraint.
HasInterfaceA port has an interface that satisfies the given sub-constraint.
HasInterfaceElementAn interface has an interface element that satisfies the given sub-constraint.
HasStereotypeAn architecture element has a stereotype that satisfies the given sub-constraint.
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

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

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

Option to recursively search model or 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 or not, specified as 0 (false) to not search for referenced architectures or 1 (true) to search for referenced architectures.

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

Data Types: logical

Option to search by type, specified as 'Component' to find components to satisfy the query, 'Port' to find ports to satisfy the query, or 'Connector' to find connectors to satisfy the query.

Example: find(model,constraint,'ElementType','Port')

Data Types: char

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

Definitions

TermDefinitionApplicationMore Information
architectureA System Composer™ architecture represents a system of components and how they interface with each other structurally and behaviorally. You can represent specific architectures using alternate views.

Different types of architectures describe different aspects of systems:

  • Functional architecture describes the flow of data in a system.

  • Logical architecture describes the intended operation of a system.

  • Physical architecture describes the platform or hardware in a system.

Compose Architecture Visually
modelA System Composer model is the file that contains architectural information, including components, ports, connectors, interfaces, and behaviors.

Perform operations on a model:

  • Extract the root-level architecture contained in the model.

  • Apply profiles.

  • Link interface data dictionaries.

  • Generate instances from model architecture.

System Composer models are stored as SLX files.

Create an Architecture Model with Interfaces and Requirement Links
componentA component is a nontrivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of an architecture. A component defines an architecture element, such as a function, a 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.Components
portA 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.

There are different types of ports:

  • Component ports are interaction points on the component to other components.

  • Architecture ports are ports on the boundary of the system, whether the boundary is within a component or the overall architecture model.

Ports
connectorConnectors 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.Connections

TermDefinitionApplicationMore Information
viewA 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 architecture design.

You can use different types of views to represent the system:

  • Operational views demonstrate how a system will be used and should be integrated with requirements analysis.

  • Functional views focus on what the system must do to operate.

  • Physical views show how the system is constructed and configured.

A viewpoint represents a stakeholder perspective that specifies the contents of the view.

Modeling System Architecture of Keyless Entry System
element groupAn element group is a grouping of components in a view.Use element groups to programmatically populate a view.
queryA 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 diagramA 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 diagramYou can visualize a hierarchy diagram as a view with components, ports, reference types, component stereotypes, and stereotype properties.

There are 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

Introduced in R2019a