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 76]
                  Model: [1x1 systemcomposer.arch.Model]
         SimulinkHandle: 2.0027
    SimulinkModelHandle: 0.0027
                   UUID: 'a9e74d08-304a-4d4a-9759-65cbaa4dab95'
            ExternalUID: ''

Очистка

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

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

Создайте модель, чтобы запросить и создать два компонента.

m = systemcomposer.createModel('exModel');
comps = m.Architecture.addComponent({'c1','c2'});
port = comps(1).Architecture.addPort('cport1','in');

Создайте запрос для поиска портов, которые содержат букву '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' и числовой или логический 1 (true) для рекурсивного поиска или 0 (false) для поиска только по конкретному слою.

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

Подробнее о

свернуть все

Определения

ТерминОпределениеПриложениеДополнительная информация
архитектураАрхитектура System Composer™ представляет систему компонентов и то, как они взаимодействуют друг с другом структурно и поведенчески. Представлять определенные архитектуры можно с помощью альтернативных представлений.

Различные типы архитектур описывают различные аспекты систем:

  • Функциональная архитектура описывает поток данных в системе.

  • Логическая архитектура описывает предполагаемую операцию системы.

  • Физическая архитектура описывает платформу или оборудование в системе.

Составьте архитектуру визуально
модельМодель System Composer является файлом, содержащим архитектурную информацию, включая компоненты, порты, соединители, интерфейсы и поведение.

Выполните операции над моделью:

  • Извлеките архитектуру корневого уровня, содержащуюся в модели.

  • Применить профили.

  • Соедините словари данных интерфейса.

  • Сгенерируйте образцы из архитектуры модели.

Модели System Composer хранятся как .slx файлы.

Создайте модель Архитектуры
компонентКомпонент является нетривиальной, почти независимой и заменяемой частью системы, которая удовлетворяет функцию clear в контексте архитектуры. Компонент определяет элемент архитектуры, такой как функция, система, оборудование, программное обеспечение или другая концептуальная сущность. Компонент может также быть подсистемой или подфункцией.Представленный как блок, компонент является частью модели архитектуры, которая может быть разделена на переиспользуемые программные продукты.Компоненты
портПорт является узлом компонента или архитектуры, который представляет точку взаимодействия с его окружением. Порт разрешает поток информации к другим компонентам или системам и из них.

Существуют различные типы портов:

  • Порты компонента являются точками взаимодействия компонента с другими компонентами.

  • Архитектуры порты являются портами на контур системы, будь то контур внутри компонента или общая модель архитектуры.

Порты
соединительКоннекторы являются линиями, которые обеспечивают соединения между портами. Коннекторы описывают, как информация переходит между компонентами или архитектурами.Соединитель позволяет двум компонентам взаимодействовать, не определяя характер взаимодействия. Установите интерфейс на порте, чтобы определить, как взаимодействуют компоненты.Связи

ТерминОпределениеПриложениеДополнительная информация
посмотретьПредставление показывает настраиваемый подмножество элементов в модели. Представления могут фильтроваться на основе стереотипов или имен компонентов, портов и интерфейсов, а также имени, типа или модулей элемента интерфейса. Конструкция видов путем втягивания элементов вручную. Представления создают упрощенный способ работы со сложными архитектурами, ориентируясь на определенные части проекта архитектуры.

Для представления системы можно использовать различные типы представлений:

  • Оперативные мнения показывают, как система будет использоваться и должна быть хорошо интегрирована с анализом требований.

  • Функциональные представления фокусируются на том, что система должна сделать для работы.

  • Физические представления показывают, как сконструирована и сконфигурирована система.

Точка зрения представляет перспективу заинтересованных сторон, которая задает содержимое представления.

группа элементовГруппа элементов является группировкой компонентов в виде.Используйте группы элементов для программного заполнения вида.Создание архитектурных представлений программно
вопросЗапрос является спецификацией, которая описывает определенные ограничения или критерии, которые должны удовлетворяться элементами модели.Используйте запросы для поиска элементов с критериями ограничений и для фильтрации представлений.Поиск элементов в модели с использованием запросов

Введенный в R2019a