То В этом примере показано, как использовать Simulink® Requirements™ API, чтобы создать пользовательские атрибуты для требования, устанавливает и устанавливать значения пользовательского атрибута для требований.
Загрузите файл требования 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
атрибут type и набор его 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 = 1×4 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'} {'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'); setAttribute(req,'MyDateTimeAttribute','15-Jul-2018 11:00:00');
Просмотрите значения атрибута.
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' is set to '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">↵<html><head><meta name="qrichtext" content="1" /><style type="text/css">↵p, li { white-space: pre-wrap; }↵</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:10pt; font-weight:400; font-style:normal;">↵<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the following switch operations are repeated, the system should output <span style=" font-style:italic;">NoRequest</span> the second time and after as long as the same switch is enabled:</p>↵<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cancel</li>↵<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cruise</li>↵<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Set</li>↵<li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Resume</li></ul>↵<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>' Keywords: {} Rationale: '' CreatedOn: 27-Feb-2017 10:15:38 CreatedBy: 'itoy' ModifiedBy: 'ahoward' SID: 3 FileRevision: 46 ModifiedOn: 15-Jul-2020 10:36:52 Dirty: 1 Comments: [0×0 struct] Index: '1.2'
Ищите набор требования все требования где 'MyCheckboxAtribute'
установлен в true
.
reqsArray = find(rs,'Type','Requirement','MyCheckboxAttribute',true)
reqsArray=1×69 object
1×69 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
1×70 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 = 1×3 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'}
Добавьте новый пользовательский атрибут, но не устанавливайте значения пользовательского атрибута требования для требований.
addAttribute(rs,'NewEditAttribute','Edit'); rs.CustomAttributeNames
ans = 1×4 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'} {'NewEditAttribute'}
Поскольку 'NewEditAttribute'
не используется никакими требованиями, можно удалить его с deleteAttribute
установкой 'Force'
к false
. Подтвердите изменение.
deleteAttribute(rs,'NewEditAttribute','Force',false); rs.CustomAttributeNames
ans = 1×3 cell
{'MyCheckboxAttribute'} {'MyComboboxAttribute'} {'MyDateTimeAttribute'}
Очистите открытые наборы требования, не сохраняя изменения и закройте открытые модели, не сохраняя изменения.
slreq.clear;
bdclose all;
addAttribute
| deleteAttribute
| getAttribute
| inspectAttribute
| setAttribute
| slreq.ReqSet
| updateAttribute