Discussions
Categories
Groups
Documentation
Knowledge base
Developer portal
App catalog
The Hub
GitHub
Home
Newly Imported
Restricted
ZF
Profile Script aus 21R1.1 funktioniert in 22R1.1 nicht mehr
medini_1026949627
Hallo zusammen, ich habe in einem FMEA Worksheet ein Profile mittels OCL Script eingefügt, um den Element Type anzuzeigen. Den Element Type kann ich dann zum "Filtern" benutzen. Hier das zugehörige OCL-Script: let tc:String = self.element.oclAsType(sysml::SysMLElement).typeCode
in
if tc.oclIsUndefined() or tc = '' -- this is a work-around for undefined default type codes
then
if self.element.oclIsKindOf(sysml::SysMLPort) or self.element.oclIsKindOf(sysml::SysMLPortUsage)
then 'Port'
else
if self.element.oclIsTypeOf(sysml::SysMLAction)
then 'Action'
else
if self.element.oclIsTypeOf(sysml::SysMLActivity)
then 'Activity'
else
'Element'
endif
endif
endif
else
tc
endif Dieses Script funktioniert jetzt in 22R1.1 nicht mehr und ich bekomme eine Fehlermeldung: Woran liegt das? Viele Grüße Günter Gäbelein
Find more posts tagged with
medini
medini legacy
Accepted answers
medini_1024169437
Günter, Nils, after a short call with Günter I figured that the these version properties are only available for batch scripting, <?WORD FLAGGED?>. So we can extend that for the future but for time being we need a simpler solution. My proposal: var is221orLater = "SysMLPortDefinition" in Metamodel.sysml;
is221orLater; This is a simple solution that checks for the "SysMLPortDefinition" class in the Metamodel.sysml package and derives from it whether you are before or after 221. I hope this works for you Jan
All comments
medini_1059007410
Hi Günter, The Metamodel changed in 2022 R1 for SysML 2.0 introduction (even if you didn't activate the SysML 2.0 modeling switch for the GUI in the Project Settings). sysml::SysMLPort was renamed sysml::SysMLPortDefinition. So just replace that in the first half of line 5, then it works again. Happy Scripting, Nils
medini_1026949627
Hallo Nils, das löst erst einmal das Problem. Um nicht mehrere Versionen des Templates pflegen zu müssen, muss ich abhängig von der medini Version entweder sysml::SysMLPort oder sysml::SysMLPortDefinition verwenden. Wie kann ich die medini Version mittels JS oder OCL abfragen oder ein Profile Variable zuordnen? Viele Grüße Günter
medini_1059007410
Hi Günter, Jan uses the following in the factory.js ( see here for the libraries ): // after a certain version (e.g. 2000 == 20.0.0, 340 = 3.4.0)
Factory.isV310OrLater = (__tool_version_number && __tool_version_number >= 310);
Factory.isV340OrLater = (__tool_version_number && __tool_version_number >= 340);
Factory.isV2000OrLater = (__tool_version_number && __tool_version_number >= 2000);
Factory.isV2110OrLater = (__tool_version_number && __tool_version_number >= 2100);
// Note: __tool_version_object was introduced with 21.2.0 and __tool_version_number frozen at 2120
Factory.isV2120OrLater = "__tool_version_object" in this;
Factory.isV2210OrLater = Factory.isV2120OrLater && __tool_version_object.major >= 22;
// before a certain version
Factory.isBeforeV1930 = (__tool_version_number && __tool_version_number < 1930); Happy Scripting, Nils
medini_1026949627
Hallo Nils, ich habe einiges versucht, bekomme aber entweder Fehlermeldungen "bind" is not defined... var Factory = load("/.lib/factory.js");
var toolVersion = __tool_version_number && __tool_version_number ; oder nichts angezeigt: var toolVersion = Global.__tool_version_number; Ich benötige die Version in einer Profile-Variable. Viele Grüße Günter
medini_1059007410
Hi Günter, You will need to use $EXPERIMENTAL$ in your script to allow bind():
https://medini.freshdesk.com/a/forums/topics/1000105848
Regards, Nils
medini_1024169437
Günter, Nils, after a short call with Günter I figured that the these version properties are only available for batch scripting, <?WORD FLAGGED?>. So we can extend that for the future but for time being we need a simpler solution. My proposal: var is221orLater = "SysMLPortDefinition" in Metamodel.sysml;
is221orLater; This is a simple solution that checks for the "SysMLPortDefinition" class in the Metamodel.sysml package and derives from it whether you are before or after 221. I hope this works for you Jan
Quick Links
All Categories
Recent Posts
Activity
Unanswered
Groups
Help
Best Of