Angepasste Transformation mit Java Code (Custom Java)
In Editor für grafische Datenzuordnungkönnen Sie die Angepasstes Java™ -Transformation verwenden, um Java-Code in Nachrichtenzuordnungeinzugeben.
Übersicht
Sie können eine Angepasstes Java -Transformation verwenden, um Elemente mit einem einfachen Typ zu verarbeiten, und der Typ stimmt mit einem nativen Java-Typ überein.
Sie können eine Angepasstes Java -Transformation verwenden, um Eingaben und Ausgaben zu verarbeiten, die Arrays oder komplexe Typen sind. Weitere Informationen finden Sie unter Komplexe oder sich wiederholende Elemente in einer Custom Java-Transformation verarbeiten.
Richtlinien für den Entwurf einer Java-Methode zum Umsetzen einfacher Typen
Die Java-Klasse, die Sie für die Zuordnung bereitstellen, muss eine statische Methode haben, die den entsprechenden Typ für den Wert des Ausgabeelements zurückgibt und Parameter des entsprechenden Typs für die verbundenen Eingaben verwendet.
Die folgende Java-Methode kann beispielsweise in einer Angepasstes Java -Transformation verwendet werden, die drei Eingabeelemente des folgenden Typs enthält:xs:string,xs:decimalundxs:boolean, und das Ausgabeelement hat einenxs:decimalTyp:
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;
} Richtlinien für den Entwurf einer Java-Methode zur Umsetzung komplexer oder sich wiederholender Typen
Sie können eine Angepasstes Java -Transformation verwenden, um Eingaben und Ausgaben zu verarbeiten, die Arrays oder komplexe Typen sind. IBM® Integration BusJava plugin
API MbElement Java classübergibt Daten nur in einer angepassten Java-Umsetzung. DieJava DOM APIübergibt Daten in angepassten Java-Umsetzungen und in Bedingungsausdrücken für die Umsetzung.
Sie können die Klasse MbElement in einer Java-Methode verwenden, um einen komplexen Typ, einen Platzhalter 'xsd:any'oder einen Platzhalter xsd:anySimpleTypezu übergeben.
Java-Klasse sichtbar machen
- Klicken Sie auf der Seite Anwendungsentwicklung mit der rechten Maustaste auf das Projekt, in dem die Zuordnung definiert ist.
- Wählen Sie Managed included projects aus.
- Wählen Sie das Java-Projekt aus und klicken Sie anschließend auf OK.
Java-Methode aufrufen
Sie können nur einen Aufruf einer Java-Methode in einer angepassten Java-Umsetzung konfigurieren. Sie können weitere Operationen (Java-Methode oder XPath-Ausdruck) in den Parametern definieren, die von der Methode benötigt werden.
Sie können die Java-Klasse und eine Java-Methode auf der Registerkarte Allgemein der Seite Eigenschaften der Umsetzung konfigurieren. Die von Ihnen angegebene Methode definiert die Transformationslogik, die von der Angepasstes Java -Transformation angewendet wird.

Wenn Sie auf der Registerkarte Allgemein der Seite Eigenschaften einer Angepasstes Java -Transformation in Ihrer Zuordnung einen Java-Aufruf hinzufügen, wird automatisch ein Import zur Zuordnung hinzugefügt, um auf die paketqualifizierte Java-Klasse zu verweisen, und es wird ein Präfix basierend auf dem Klassennamen hinzugefügt. Alle Öffentliche statische Methoden in dieser Java-Klasse sind dann in der Inhaltshilfe verfügbar, wenn Ausdrücke in anderen Umsetzungen erstellt werden.
Weitere Informationen finden Sie unter Element mithilfe einer Custom Java-Transformation zuordnen.
Definieren, wenn die Transformation zur Laufzeit angewendet wird
Sie können Ergänzung -Verbindungen zwischen Eingabeelementen und der Angepasstes Java -Transformation definieren. Anschließend können Sie jedes Eingabeelement in einem Bedingungsausdruck verwenden, der die Bedingung definiert, unter der die Transformation angewendet wird. Wenn die Bedingung den Wert true ergibt, wird die Transformation angewendet.
Zum Konfigurieren des bedingten Ausdrucks definieren Sie einen XPath-Ausdruck oder einen Java-Ausdruck auf der Registerkarte Bedingung , der auf der Seite Eigenschaften der Transformation verfügbar ist.

Zum Definieren des Bedingungsausdrucks können Sie einen XPath-Ausdruck oder einen Aufruf einer statischen Methode in einer importierten Java-Klasse definieren. Sie können auch einen komplexen Ausdruck erstellen, der XPath-, Java-und Erweiterungsfunktionen wie iib:getUserDefinedProperty ("Eigenschaftsname")enthält.
Wenn die Java-Methode keinen Wert bereitstellt, erstellt die Umsetzung standardmäßig ein Element mit einem leeren Wert. Soll kein Element erstellt werden, können Sie auf der Registerkarte Bedingung einen Bedingungsausdruck hinzufügen.
Weitere Informationen finden Sie in Eigenschaften einer Transformation konfigurieren, XPath-Bedingungsausdruck für eine Transformation definierenund Java-Bedingungsausdruck für eine Umsetzung definieren.
Zuordnungen zwischen dem Schematyp, dem Java-Typ und dem IBM Integration Bus -Nachrichtenassemblierungstyp
Die folgende Tabelle zeigt die Zuordnungen zwischen dem Schematyp, dem Java-Typ und dem IBM Integration Bus -Nachrichtenassemblierungstyp:
| Schematyp | Java-Typ | Elementtyp der IBM Integration Bus -Nachrichtenassemblierungsbaumstruktur |
|---|---|---|
| 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 | Zeit |
| xs:unsignedByte | Short | INTEGER |
| xs:unsignedInt | Lang | INTEGER |
| xs:unsignedLong | java.math.BigInteger | DECIMAL |
| xs:unsignedShort | Int | INTEGER |
| xs:yearMonthDuration | javax.xml.datatype.Duration | INTERVAL |