カスタムファンクションを使用すると,任意のJavaプログラムをファンクションとして使用できます。Service Architectが提供するほかのファンクションでできる加工以外の加工をしたい場合にカスタムファンクションを使用します。
カスタムファンクションには次の種類があります。
- 文字列型カスタムファンクション
引数および戻り値が文字列型のカスタムファンクションです。
引数の型 |
java.lang.String |
戻り値の型 |
java.lang.String |
- ノード一覧型カスタムファンクション
引数および戻り値がノード一覧型のカスタムファンクションです。引数には,単純内容要素,複合内容要素,any要素,またはanyAttribute属性などノード自身を渡すことができます。また,戻り値として,ノードを直接返すことができます。
引数の型 |
java.lang.Object |
戻り値の型 |
org.w3c.dom.NodeList |
実際に引数に渡されるデータ型は,次のように引数の内容によって異なります。
表6-7 引数の定義内容
引数の内容 |
引数の実際の型 |
単純内容要素・複合内容要素 |
org.w3c.dom.NodeList |
属性 |
org.w3c.dom.NodeList |
any要素 |
org.w3c.dom.NodeList |
anyAttribute属性 |
org.w3c.dom.NodeList |
文字列型カスタムファンクション |
java.lang.String |
ノード一覧型カスタムファンクション |
org.w3c.dom.NodeList |
そのほかのファンクション(くり返しファンクション,選択ファンクションは除く) |
java.lang.String |
ここでは,カスタムファンクションから呼び出すJavaプログラムの作成方法について説明します。なお,カスタムファンクションでは,呼び出すJavaプログラムのことを変換ファンクションと呼びます。Javaプログラムを呼び出す方法については,「6.5.23 ユーザが作成した任意のJavaプログラムを呼び出す」を参照してください。
変換ファンクションは,次の手順で作成します。
- 変換ファンクション定義ファイルの作成
変換ファンクションの構成を定義した変換ファンクション定義ファイルを作成します。変換ファンクション定義ファイルの作成方法については,「6.9.1 変換ファンクション定義ファイルの作成」を参照してください。
- Java雛形ファイルの生成
作成した変換ファンクション定義ファイルを基に,Javaプログラムのコーディング時に使用するJava雛形ファイルを生成します。Java雛形ファイルの生成方法については,「6.9.2 Java雛形ファイルの生成」を参照してください。
- Javaプログラムのコーディング,ビルド,およびデバッグ
Java開発ツールを使用して,Javaプログラムのコーディング,ビルド,およびデバッグを実施します。Javaプログラムのコーディング,ビルド,およびデバッグ方法については,「6.9.4 Javaプログラムのコーディング,ビルド,およびデバッグ」を参照してください。
- Javaプログラムのパッケージング
ビルドツールを使用して,作成したJavaプログラムをjarファイルにパッケージングします。Javaプログラムのパッケージング方法については,「6.9.5 Javaプログラムのパッケージング」を参照してください。
- 注意
- 呼び出すJavaプログラムの引数の数に応じてメモリ所要量(スタックメモリ)が増加します。そのため,引数が多いとスタックオーバーフローのエラーが発生するおそれがあります。引数は,多くても10個程度を目安としてください。
- Javaプログラムの呼び出し時に確保したリソースは,処理が終了しても保持し続けるため,システム全体に高い負荷がかかった場合に,Javaヒープ不足やMetaspace領域不足などが原因でOutOfMemoryErrorが発生することがあります。そのため,OutOfMemoryErrorが発生したときに適切にリソースを解放する処理や,ロールバックなどのエラー処理を実装しておく必要があります。
- <この節の構成>
- 6.9.1 変換ファンクション定義ファイルの作成
- 6.9.2 Java雛形ファイルの生成
- 6.9.3 変換ファンクションからの外部jarの参照
- 6.9.4 Javaプログラムのコーディング,ビルド,およびデバッグ
- 6.9.5 Javaプログラムのパッケージング
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.