find

Найдите элементы архитектуры с помощью запроса

Описание

пример

[paths] = find(object,constraint,Name,Value) находит все пути к элементу, начинающие с корневой архитектуры модели, которые удовлетворяют constraint запросите с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".

пример

[paths, elements] = find(___) возвращает elements компонента и их paths это удовлетворяет constraint запрос. Если rootArch не обеспечивается, затем функция находит элементы модели в корневой архитектуре модели. Выходной аргумент paths содержит полностью определенный именованный путь для каждого компонента в elements от данной корневой архитектуры.

пример

[elements] = find(___) находит весь компонент, порт или коннектор elements это удовлетворяет constraint запросите с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение", которые должны включать 'Port' или 'Connector' для 'ElementType'.

пример

[paths] = find(object,constraint,rootArch,Name,Value) находит все пути к элементу, начинающие с заданной корневой архитектуры, которые удовлетворяют constraint запросите с дополнительными опциями, заданными одним или несколькими аргументами пары "имя-значение".

Примеры

свернуть все

Импортируйте модель и запустите запрос, чтобы выбрать элементы архитектуры, которые имеют стереотип на основе заданного подограничения.

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

Создайте запрос, чтобы найти компоненты, которые содержат букву 'c' в их 'Name' свойство.

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

В этом примере показано, как найти элементы в архитектуре основанными на модели на запросе.

Создайте модель

Создайте модель архитектуры с двумя компонентами.

m = systemcomposer.createModel('exModel');
comps = m.Architecture.addComponent({'c1','c2'});

Создайте профиль и стереотипы

Создайте профиль и стереотипы для вашей модели архитектуры.

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

Примените профиль и стереотипы

Примените профиль и стереотипы к вашей модели архитектуры.

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

Найдите элемент

Найдите элемент в своей архитектуре основанным на модели на запросе System Composer.

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 65]
                  Model: [1x1 systemcomposer.arch.Model]
         SimulinkHandle: 2.0004
    SimulinkModelHandle: 3.6621e-04
                   UUID: '984b1ca4-e3d2-4b61-86d2-690f91a37f48'
            ExternalUID: ''

Очистка

Не прокомментируйте, чтобы удалить модель и профиль.

% m.close('force');
% systemcomposer.profile.Profile.closeAll;
  1. Создайте модель, чтобы запросить и создать два компонента.

    m = systemcomposer.createModel('exModel');
    comps = m.Architecture.addComponent({'c1','c2'});
    port = comps(1).Architecture.addPort('cport1','in');
  2. Создайте запрос, чтобы найти порты, которые содержат букву 'c' в их 'Name' свойство, которое возвращает только элементы.

    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)

Входные параметры

свернуть все

Модель в виде systemcomposer.arch.Model возразите, чтобы запросить использование constraint.

Запросите в виде systemcomposer.query.Constraint объект, представляющий особые условия. Ограничение может содержать подограничение, которое может быть объединено с другим ограничением с помощью AND или OR. Ограничение может также отрицаться с помощью NOT.

Запросите объекты и условия для ограничений

Объект запросаУсловие
PropertyНеоцененное значение для данного свойства или стереотипного свойства.
PropertyValueОцененное значение свойства от объекта System Composer или стереотипного свойства.
HasPortКомпонент имеет порт, который удовлетворяет данному подограничению.
HasInterfaceПорт имеет интерфейс, который удовлетворяет данному подограничению.
HasInterfaceElementИнтерфейс имеет интерфейсный элемент, который удовлетворяет данному подограничению.
HasStereotypeЭлемент архитектуры имеет стереотип, который удовлетворяет данному подограничению.
IsInRangeЗначение свойства в данной области значений.
AnyComponentЭлементом является компонент и не порт или коннектор.
IsStereotypeDerivedFrom Стереотип выведен из данного стереотипа.

Корневая архитектура модели в виде вектора символов.

Типы данных: char

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: find(model,constraint,'Recurse',true,'IncludeReferenceModels',true)

Опция, чтобы рекурсивно перерыть модель, или только искать определенный слой в виде разделенной запятой пары, состоящей из 'Recurse' и числовое или логическая единица (true) рекурсивно искать или 0 (false) только искать определенный слой.

Пример: find(model,constraint,'Recurse',true)

Типы данных: логический

Опция, чтобы искать эталонные архитектуры или не включать архитектуры, на которые ссылаются, в виде разделенной запятой пары, состоящей из 'IncludeReferenceModels' и числовое или логический ноль (false) не включать архитектуры, на которые ссылаются, или 1 (true) искать архитектуры, на которые ссылаются.

Пример: find(model,constraint,'IncludeReferenceModels',true)

Типы данных: логический

Опция, чтобы искать типом в виде разделенной запятой пары, состоящей из 'ElementType' и 'Component' выбрать компоненты, чтобы удовлетворить запросу, 'Port' выбрать порты, чтобы удовлетворить запросу или 'Connector' выбрать коннекторы, чтобы удовлетворить запросу.

Пример: find(model,constraint,'ElementType','Port')

Типы данных: char

Выходные аргументы

свернуть все

Пути к элементу, возвращенные как массив ячеек путей к элементу, которые удовлетворяют constraint.

Элементы, возвращенные как systemcomposer.arch.Element объекты, которые удовлетворяют constraint.

Введенный в R2019a
Для просмотра документации необходимо авторизоваться на сайте