Filter löschen
Filter löschen

How to get string value from instances ?

2 Ansichten (letzte 30 Tage)
Frédéric Schenker
Frédéric Schenker am 23 Aug. 2021
Hello,
A stereotype contains a string property. I want to get the string value from this property when I perform an analysis with the instance of my system under analysis.
I use the command "getValue", but when I execute my script the following error appear :
Error using systemcomposer.analysis.AbstractInstanceElement/getValuePropertySetByName
Can't find value 'baseEnv' in set 'System_profile.stereotypeX'
Error in systemcomposer.analysis.AbstractInstanceElement/getValue
I can assure that the 'baseEnv' value exists. If I convert the 'baseEnv' property into a "double" value instead of a "string", the command pass without any problem. In addition, if I use the command "hasValue" with string property the result is False.
Do you have a solution for this problem ?
Thanks in adavance

Akzeptierte Antwort

Josh Kahn
Josh Kahn am 7 Sep. 2021
Hi Frédéric!
The System Composer Analysis function does not currently support string methods. A workaround is to operate on the Specification in your analysis function. The Specification is the element in your architecture model as opposed to the element that has been added to the analysis instantiation.
In 20b (note, this will return an empty string value if the property is not assigned):
function rollup(instance, varargin)
stereotypeProperty = 'SampleProfile.Stereotype1.StringProp1';
disp(instance.Name);
if isComponent(instance)
fprintf(" %s : %s\n", stereotypeProperty, getPropertyValue(instance.Specification, stereotypeProperty));
else
fprintf(" Not a component\n");
end
end
In 21a (with the introduction of the hasProperty method):
function rollup(instance, varargin)
stereotypeProperty = 'SampleProfile.Stereotype1.StringProp1';
disp(instance.Name);
if isComponent(instance)
if hasProperty(instance.Specification, stereotypeProperty)
fprintf(" %s : %s\n", stereotypeProperty, getPropertyValue(instance.Specification, stereotypeProperty));
else
fprintf(" Property '%s' not found\n", stereotypeProperty);
end
else
fprintf(" Not a component\n");
end
end
Regards,
Josh
  1 Kommentar
Frédéric Schenker
Frédéric Schenker am 10 Sep. 2021
Hi Josh,
Indeed your workaround works in my case (20b).
Thanks a lot for your support !
Regards,
Frédéric

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu System Composer finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by