Enumerations
No edit summary
(Automatically adding template at the end of the page.)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
You edit enumerations by right-clicking on any model element in the "model content" window.
You can edit enumerations by right-clicking on any model element in the "model content" window.
[[File:Edit enumerations menu.png|none|thumb|469x469px]]
[[File:Edit enumerations menu.png|none|thumb|469x469px]]
The enumeration editing window[[File:Defining enumerations.png|none|thumb|685x685px]]
The enumeration editing window:[[File:Defining enumerations.png|none|thumb|685x685px]]


The defined enumeration is a class in the model's typesystem.
The defined enumeration is a class in the model's type system.


For example, you can returning a list of the values. This return a collection of ImportColumn [[Tuple]]<nowiki/>s
For example, you can return a list of the values. This returns a collection of ImportColumn [[Tuple]]<nowiki/>s.
  ImportColumn.allInstances
  ImportColumn.allInstances
Converting this to a list of strings for each Enum value (for example to be used in a list on screen)
Convert this to a list of strings for each Enum value (for example to be used in a list on screen):
  ImportColumn.allInstances.asString
  ImportColumn.allInstances.asString


===== Select an enum value from the list, then getting the string value from that =====
===== Select an Enum value from the list, then get the string value from that: =====
  ImportColumn.allInstances->select(ic|ic = #JournalName).asString
  ImportColumn.allInstances->select(ic|ic = #JournalName).asString


===== Getting the value of an Enum [[tuple]] =====
===== Get the value of an Enum [[tuple]]: =====
  (#JournalName).toString
  (#JournalName).toString
('''note: asString''' don't work on enum tuples)
('''note: asString''' does not work on Enum tuples)


===== Checking if a collection includes a value =====
===== Checking if a collection includes a value =====
You can't user the [[OCLOperators includes|includes]] operator on collections of enum. You have to select on the value and check if you get a "hit".
You can't use the [[OCLOperators includes|includes]] operator on collections of Enum. You have to select the value and check if you get a "hit".


This works;
This works:
  SysSingleton.SO.ActiveUser.UserModes->select(x|x = #Consultant)->notEmpty
  SysSingleton.SO.ActiveUser.UserModes->select(x|x = #Consultant)->notEmpty
''This does not work''''':''' SysSingleton.SO.ActiveUser.UserModes->includes(#Consultant)
'''''This does not work'':''' SysSingleton.SO.ActiveUser.UserModes->includes(#Consultant)
[[Category:MDriven Designer]]
[[Category:OCL]]
{{Edited|July|12|2024}}

Latest revision as of 15:34, 10 February 2024

You can edit enumerations by right-clicking on any model element in the "model content" window.

Edit enumerations menu.png

The enumeration editing window:

Defining enumerations.png

The defined enumeration is a class in the model's type system.

For example, you can return a list of the values. This returns a collection of ImportColumn Tuples.

ImportColumn.allInstances

Convert this to a list of strings for each Enum value (for example to be used in a list on screen):

ImportColumn.allInstances.asString
Select an Enum value from the list, then get the string value from that:
ImportColumn.allInstances->select(ic|ic = #JournalName).asString
Get the value of an Enum tuple:
(#JournalName).toString

(note: asString does not work on Enum tuples)

Checking if a collection includes a value

You can't use the includes operator on collections of Enum. You have to select the value and check if you get a "hit".

This works:

SysSingleton.SO.ActiveUser.UserModes->select(x|x = #Consultant)->notEmpty

This does not work: SysSingleton.SO.ActiveUser.UserModes->includes(#Consultant)

This page was edited 97 days ago on 02/10/2024. What links here