How to get string value from instances ?

2 visualizaciones (últimos 30 días)
Frédéric Schenker
Frédéric Schenker el 23 de Ag. de 2021
Comentada: Frédéric Schenker el 10 de Sept. de 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

Respuesta aceptada

Josh Kahn
Josh Kahn el 7 de Sept. de 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 comentario
Frédéric Schenker
Frédéric Schenker el 10 de Sept. de 2021
Hi Josh,
Indeed your workaround works in my case (20b).
Thanks a lot for your support !
Regards,
Frédéric

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre System Composer en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by