Datentypen in Java Actions
Hin und wieder kommt man bei Mendix an den Punkt, an dem man mehr will. Das ist meist der Moment in dem man anfängt eigene Java Actions zu benutzen. Um das zu tun muss man natürlich Daten/Parameter an eine Java Action übergeben und Daten wieder zurückbekommen. Welche Datentypen in Java entsprechen aber welchen Datentypen in Mendix? Besonders wenn man mit nicht definierten Objekten arbeitet muss man wissen welche Daten man in welches Attribut packen kann. Hier mal eine Übersicht welche Datentypen aus Mendix wie in einer Java Action landen wenn diese als Parameter übergeben werden.
Übergabeparameter Datentypen
Type in Modeler | Type in Java Action | Javadoc |
---|---|---|
Object of Entity | Proxy Object | |
Any Object | IMendixObject | |
Microflow | java.lang.String | https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/String.html |
Boolean | java.lang.Boolean | https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/Boolean.html |
Date and Time | java.util.Date | https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Date.html |
Decimal | java.math.BigDecimal | https://docs.oracle.com/javase/8/docs/api/index.html?java/math/BigDecimal.html |
Enumeration | Proxy Enum | |
Integer/Long | java.lang.Long | https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/Long.html |
String | java.lang.String | https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/String.html |
Wie man sieht werden grundsätzlich keine primitiven Datentypen verwendet. Wenn man mit primitiven Datentypen arbeitet muss man also gegebenenfalls ein Objekt erzeugen, sofern man sie zurückgeben oder auf ein Attribut speichern will. Weiß man was Mendix erwartet ist dies natürlich kein Problem.
Ähnlich sieht das ganze auf den Proxy Klassen aus die Mendix für die Entities im Domain Model generiert. Folgende Attributtypen haben folgende Entsprechung in der Proxy Klasse.
Datentypen Proxy Attribute
Interessant hierbei ist vielleicht unter Anderem, dass zwischen Integer und Long unterschieden wird, während dies bei Übergabeparametern nicht der Fall ist. Hier ist also unter Umständen Vorsicht geboten.
Arbeitet man mit IMendixObject Objekten (etwas was man immer tut wenn man eine Java Action für beliebige Objekte erstellt), so werden auf diesem Objekt die gleichen Datentypen wie auf Proxy Klassen verwendet.