Mithilfe der Transformation 'Custom Java™' können Sie einen eigenen Java-Code zur Verwendung in der Zuordnung eingeben.
Wählen Sie im Editor für die grafische Datenzuordnung in der Liste Angepasste Transformationen die Option Custom Java (Angepasstes Java) aus. Danach können Sie in den Transformationseigenschaften eine Java-Methode in einer Java-Klasse aus einem Java-Projekt Ihres Arbeitsbereichs auswählen. Der Inhaltsassistent hilft Ihnen in der Spalte Werte bei der Zuordnung der für das Quellenschema erforderlichen Elemente.
Die Java-Klasse, die Sie für die Zuordnung bereitstellen, muss über eine statische Methode verfügen, die den geeigneten Typ für den Wert des Ausgabeelements zurückgibt und Parameter des geeigneten Typs für die verbundenen Eingaben entgegennimmt.
Es könnte beispielsweise folgende Java-Methode in einer Custom Java-Transformation mit drei Eingabeelementen des Typs xs:string, xs:decimal und xs:boolean und einem Ausgabeelement des Typs xs:decimal verwendet werden:
public static BigDecimal calSomething(String memType, BigDecimal stdCost, boolean flag) {
BigDecimal actualCost = stdCost;
if (flag & memType.startsWith("gold")) {
BigDecimal discRate = new BigDecimal(0.9);
actualCost = actualCost.multiply(discRate);
}
return actualCost;
}
Die folgende Tabelle zeigt die Zuordnungen zwischen dem Schematyp, dem Java-Typ und dem WebSphere Message Broker-Baumstrukturtyp:
Schematyp | Java-Typ | Message Broker-Baumstrukturtyp |
---|---|---|
xs:anyURI | java.lang.String | CHARACTER |
xs:base64Binary | byte[] | BLOB |
xs:boolean | boolean, java.lang.Boolean | BOOLEAN |
xs:byte | byte, java.lang.Byte | INTEGER |
xs:date | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:dateTime | javax.xml.datatype.XMLGregorianCalendar | TIMESTAMP |
xs:dayTimeDuration | javax.xml.datatype.Duration | INTERVAL |
xs:decimal | java.math.BigDecimal | DECIMAL |
xs:double | double, java.lang.Double | FLOAT |
xs:duration | javax.xml.datatype.Duration | INTERVAL |
xs:float | float, java.lang.Float | FLOAT |
xs:gDay | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gMonth | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gMonthDay | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gYear | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:gYearMonth | javax.xml.datatype.XMLGregorianCalendar | DATE |
xs:hexBinary | byte[] | BLOB |
xs:int | int, java.lang.Integer | INTEGER |
xs:integer | java.math.BigInteger | DECIMAL |
xs:long | long, java.lang.Long | INTEGER |
xs:negativeInteger | java.math.BigInteger | DECIMAL |
xs:nonNegativeInteger | java.math.BigInteger | DECIMAL |
xs:nonPositiveInteger | java.math.BigInteger | DECIMAL |
xs:normalizedString | java.lang.String | CHARACTER |
xs:positiveInteger | java.math.BigInteger | DECIMAL |
xs:short | short, java.lang.Short | INTEGER |
xs:string | java.lang.String | CHARACTER |
xs:time | javax.xml.datatype.XMLGregorianCalendar | TIME |
xs:unsignedByte | Short | INTEGER |
xs:unsignedInt | Long | INTEGER |
xs:unsignedLong | java.math.BigInteger | DECIMAL |
xs:unsignedShort | Int | INTEGER |
xs:yearMonthDuration | javax.xml.datatype.Duration | INTERVAL |
Sie können auch Custom Java-Transformationen für die Verarbeitung von Ein- und Ausgaben erstellen, bei denen es sich um Feldgruppen oder komplexe Typen handelt. Diese können nicht von einem Schematyp in einen definierten Java-Typ (siehe vorherige Tabelle) konvertiert werden.
In diesem Fall muss Ihre Java-Klasse die Klasse MbElement für den Verweis auf das Eingabe- oder Ausgabeelement verwenden. Informationen zur Verwendung von Java und der Klasse 'MbElement' finden Sie im Abschnitt Verwendung von Java-API-Klassen für angepasste Java-Zuordnungstransformationen.