В этом примере показано, как использовать API Simulink ® Requirements™ для создания пользовательских атрибутов для наборов требований и задания пользовательских значений атрибутов для требований.
Загрузить файл требований crs_req_func_spec, которая описывает систему круиз-контроля и присваивает ее переменной.
rs = slreq.load('crs_req_func_spec');Добавьте пользовательский атрибут каждого типа в набор требований. Создание Edit пользовательский атрибут с описанием.
addAttribute(rs,'MyEditAttribute','Edit','Description',... 'You can enter text as the custom attribute value.')
Создать Checkbox введите атрибут и задайте его DefaultValue свойство для true.
addAttribute(rs,'MyCheckboxAttribute','Checkbox','DefaultValue',true)
Создать Combobox пользовательский атрибут. Потому что первый параметр должен быть 'Unset', добавьте параметры 'Unset', 'A', 'B', and 'C'.
addAttribute(rs,'MyComboboxAttribute','Combobox','List',{'Unset','A','B','C'})
Создать DateTime пользовательский атрибут.
addAttribute(rs,'MyDateTimeAttribute','DateTime')
Проверьте определенные пользовательские атрибуты для набора требований. Получить информацию о MyComboboxAttribute для просмотра добавленных параметров.
rs.CustomAttributeNames
ans = 1x4 cell
Columns 1 through 3
{'MyCheckboxAttr...'} {'MyComboboxAttr...'} {'MyDateTimeAttr...'}
Column 4
{'MyEditAttribute'}
atrb = inspectAttribute(rs,'MyComboboxAttribute')atrb = struct with fields:
name: 'MyComboboxAttribute'
type: Combobox
description: ''
list: {'Unset' 'A' 'B' 'C'}
Найдите требование в наборе требований и задайте значение пользовательского атрибута для всех четырех созданных пользовательских атрибутов.
req = find(rs,'Type','Requirement','SID',3); setAttribute(req,'MyEditAttribute','Value for edit attribute.'); setAttribute(req,'MyCheckboxAttribute',false); setAttribute(req,'MyComboboxAttribute','B');
Набор MyDateTimeAttribute с требуемым языковым стандартом для обеспечения установки даты и времени в правильном формате в системах других языковых стандартов. Дополнительные сведения см. в разделе Языковой стандарт.
localDateTimeStr = datestr(datetime('15-Jul-2018 11:00:00','Locale','en_US'),'Local'); setAttribute(req,'MyDateTimeAttribute',localDateTimeStr);
Просмотрите значения атрибутов.
getAttribute(req,'MyEditAttribute')ans = 'Value for edit attribute.'
getAttribute(req,'MyCheckboxAttribute')ans = logical
0
getAttribute(req,'MyComboboxAttribute')ans = 'B'
getAttribute(req,'MyDateTimeAttribute')ans = datetime
15-Jul-2018 11:00:00
После определения пользовательского атрибута для набора связей можно внести ограниченные изменения в пользовательский атрибут.
Добавление описания к MyCheckboxAttribute и MyComboboxAttributeи измените список опций для MyComboboxAttribute. Поскольку вы не можете обновить значение по умолчанию Checkbox атрибуты, вы можете только обновить описание MyCheckboxAttribute. Просмотр изменений.
updateAttribute(rs,'MyCheckboxAttribute','Description',... 'The checkbox value can be true or false.'); updateAttribute(rs,'MyComboboxAttribute','Description',... 'Choose an option from the list.','List',{'Unset','1','2','3'}); atrb2 = inspectAttribute(rs,'MyCheckboxAttribute')
atrb2 = struct with fields:
name: 'MyCheckboxAttribute'
type: Checkbox
description: 'The checkbox value can be true or false.'
default: 1
atrb3 = inspectAttribute(rs,'MyComboboxAttribute')atrb3 = struct with fields:
name: 'MyComboboxAttribute'
type: Combobox
description: 'Choose an option from the list.'
list: {'Unset' '1' '2' '3'}
Поиск набора требований по всем требованиям, где 'MyEditAttribute' имеет значение 'Value for edit attribute.'
req2 = find(rs,'Type','Requirement','MyEditAttribute','Value for edit attribute.')
req2 =
Requirement with properties:
Type: 'Functional'
Id: '#3'
Summary: 'Avoid repeating commands'
Description: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">...'
Keywords: {}
Rationale: ''
CreatedOn: 27-Feb-2017 10:15:38
CreatedBy: 'itoy'
ModifiedBy: 'batserve'
SID: 3
FileRevision: 46
ModifiedOn: 23-Apr-2021 10:46:08
Dirty: 1
Comments: [0x0 struct]
Index: '1.2'
Поиск набора требований по всем требованиям, где 'MyCheckboxAtribute' имеет значение true.
reqsArray = find(rs,'Type','Requirement','MyCheckboxAttribute',true)
reqsArray=1×69 object
1x69 Requirement array with properties:
Type
Id
Summary
Description
Keywords
Rationale
CreatedOn
CreatedBy
ModifiedBy
SID
FileRevision
ModifiedOn
Dirty
Comments
Index
Поиск набора требований по всем требованиям, где 'MyComboboxAttribute' имеет значение 'Unset'.
reqsArray2 = find(rs,'Type','Requirement','MyComboboxAttribute','Unset')
reqsArray2=1×70 object
1x70 Requirement array with properties:
Type
Id
Summary
Description
Keywords
Rationale
CreatedOn
CreatedBy
ModifiedBy
SID
FileRevision
ModifiedOn
Dirty
Comments
Index
Вы можете использовать deleteAttribute для удаления атрибутов. Однако, поскольку пользовательские атрибуты, созданные в этом примере, присвоены требованиям, необходимо задать 'Force' кому true для удаления атрибутов. Удалить 'MyEditAttribute' и подтвердите изменение.
deleteAttribute(rs,'MyEditAttribute','Force',true); rs.CustomAttributeNames
ans = 1x3 cell
{'MyCheckboxAttri...'} {'MyComboboxAttri...'} {'MyDateTimeAttri...'}
Добавьте новый пользовательский атрибут, но не устанавливайте значения пользовательских атрибутов требований.
addAttribute(rs,'NewEditAttribute','Edit'); rs.CustomAttributeNames
ans = 1x4 cell
Columns 1 through 3
{'MyCheckboxAttr...'} {'MyComboboxAttr...'} {'MyDateTimeAttr...'}
Column 4
{'NewEditAttribute'}
Поскольку 'NewEditAttribute' не используется никакими требованиями, его можно удалить с помощью deleteAttribute путем установки 'Force' кому false. Подтвердите изменение.
deleteAttribute(rs,'NewEditAttribute','Force',false); rs.CustomAttributeNames
ans = 1x3 cell
{'MyCheckboxAttri...'} {'MyComboboxAttri...'} {'MyDateTimeAttri...'}
Очистите открытые наборы требований без сохранения изменений и закройте открытые модели без сохранения изменений.
slreq.clear;
bdclose all;addAttribute | deleteAttribute | getAttribute | inspectAttribute | setAttribute | slreq.ReqSet | updateAttribute