カスタム Java™ 変換を使用すると、マッピングに使用される独自の Java コードを入力できます。
グラフィカル・データ・マッピング・エディターで、「カスタム変換」リストから「カスタム Java」を選択します。 変換プロパティーを使用して、ワークスペースの Java プロジェクトから Java クラスの Java メソッドを選択できます。 「値」列のコンテンツ・アシストを使用して、ソース・スキーマの必要なエレメントを割り当てることができます。
マップに指定する Java クラスには、出力エレメントの値の適切なタイプを返し、接続入力の適切なタイプを指定したパラメーターをとる静的メソッドが含まれている必要があります。
例えば、タイプが xs:string、xs:decimal、および xs:boolean の 3 つの入力エレメントと xs:decimal の出力エレメントを持つカスタム Java 変換で使用できる Java メソッドを以下に示します。
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;
}
以下の表は、スキーマ・タイプ、Java タイプ、およびWebSphere® Message Broker・ツリー・タイプの間のマッピングを示しています。
スキーマ・タイプ | Java タイプ | ブローカー・メッセージ・ツリー・タイプ |
---|---|---|
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 |
カスタム Java 変換を作成して、配列または複合タイプの入力と出力を処理することもできます。これらは、前述の表で示した、スキーマ・タイプから定義された Java タイプへの変換を行うことはできません。
この場合、Java クラスは MbElement クラスを使用して入力エレメントまたは出力エレメントを参照する必要があります。Java および MbElement クラスの使用について詳しくは、カスタム Java マッピング変換に対する Java API クラスの使用を参照してください。