Main Content

setParent

Class: slreq.Reference
Namespace: slreq

Set parent of referenced requirement in PostImportFcn callback

Since R2022a

Syntax

setParent(ref,parentID)

Description

setParent(ref,parentID) moves the referenced requirement ref under the parent referenced requirement specified by parentID. You can only use this method in the PostImportFcn callback.

Input Arguments

expand all

Referenced requirement, specified as a slreq.Reference object.

SID of the parent referenced requirement, specified as an int32 or a double.

Examples

expand all

This example shows how to assign a script as the PostImportFcn callback for an Import node. You get the contents of the PostImportFcn callback for an Import node and register a different script after you import the requirements.

Import the Requirements

Use slreq.import to import the ReqIF file mySpec.reqif into Requirements Toolbox™. Name the imported requirement set myReqSet, register the script myPreImportScript2 as the PreImportFcn, and register the script myPostImportScript as the PostImportFcn callback. Return a handle to the requirement set.

[~,~,rs] = slreq.import("mySpec.reqif",ReqSet="myReqSet",preImportFcn="myPreImportScript2",postImportFcn="myPostImportScript");

The script myPreImportScript2 uses slreq.getCurrentImportOptions to get the import options, then specifies the attribute mapping file to use during import.

type myPreImportScript2.m
importOptions = slreq.getCurrentImportOptions;
importOptions.MappingFile = "myMappingFile2.xml";

The mapping file myMappingFile2.xml maps these attributes from the ReqIF™ file to these properties in Requirements Toolbox™:

  • ReqSum to Summary

  • Desc to Description

  • ID to Custom ID

The script myPostImportScript uses slreq.getCurrentObject to get a handle to the Import node, gets the requirement set that the Import node belongs to, and then finds requirements that have the summary Requirement 1 and Requirement 2. Then, the script moves Requirement 2 under Requirement 1.

type myPostImportScript.m
topRef = slreq.getCurrentObject;
rsScratch = reqSet(topRef);
ref = find(rsScratch,Type="Reference",Summary="Requirement 2");
parentRef = find(rsScratch,Type="Reference",Summary="Requirement 1");
parentID = parentRef.SID;
setParent(ref,parentID);

Confirm that Requirement 2 is a child of Requirement 1.

req1 = find(rs,Summary="Requirement 1");
req2 = children(req1);
reqSummary = req2.Summary
reqSummary = 
'Requirement 2'

Get and Set the PostImportFcn Callback

Get a handle to the Import node, then register the script myPostImportScrip2 as the PostImportFcn callback. Confirm that the contents of the callback changed.

topRef = children(rs);
setPostImportFcn(topRef,"myPostImportScript2")
newCallback = getPostImportFcn(topRef)
newCallback = 
'myPostImportScript2'

The myPostImportScript2 script moves Requirement 2 under Requirement 3.

type myPostImportScript2.m
topRef = slreq.getCurrentObject;
rsSc = reqSet(topRef);
ref = find(rsSc,Type="Reference",Summary="Requirement 2");
parentRef = find(rsSc,Type="Reference",Summary="Requirement 3");
parentID = parentRef.SID;
setParent(ref,parentID);

Update the requirement set. The PostImportFcn callback executes after you update the requirement set.

updateReferences(rs,topRef);

Confirm that Requirement 2 is a child of Requirement 3.

req3 = find(rs,Summary="Requirement 3");
req2 = children(req3);
reqSummary = req2.Summary
reqSummary = 
'Requirement 2'

Version History

Introduced in R2022a