Управляйте пользовательскими атрибутами для требований при помощи Simulink® Requirements™ API

То В этом примере показано, как использовать 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;

Смотрите также

| | | | | |

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