18.2.1 ユーザファンクションの流れ
ユーザファンクションの流れを次の図に示します。
- 〈この項の構成〉
(1) ユーザファンクションのサンプルプログラム
Developerを使用している場合,ユーザファンクションのサンプルプログラムは次のディレクトリに格納されています。
<運用ディレクトリ>\project\java\user-function
ユーザファンクションのサンプルプログラムを次に示します。
// EADsが提供するパッケージをインポートする import com.hitachi.software.xeads.func.Function; import com.hitachi.software.xeads.func.FunctionContext; public class FunctionSample implements Function { // ユーザファンクションの初期化処理を実装する public void init(FunctionContext context) { context.getLogger().log("init function at " + context.getServerName()); } // ユーザファンクションの処理を実装する public Object execute(FunctionContext context) { context.getLogger().log("execute function at " + context.getServerName() + ", group name=" + context.getGroupName()); return null; } // ユーザファンクションの終了処理を実装する public void destroy(FunctionContext context) { context.getLogger().log("destroy function at " + context.getServerName()); } }
(2) EADsが提供するパッケージをインポートする
EADsが提供する次のパッケージをインポートします。
import com.hitachi.software.xeads.func.Function;
import com.hitachi.software.xeads.func.FunctionContext;
(3) ユーザファンクションの初期化処理を実装する
Functionインタフェースのinit()を使用して,EADsサーバの開始時に呼び出される,ユーザファンクションの初期化処理を実装します。
init()の引数FunctionContextを通じて,EADsサーバの情報を取得できます。ただし,init()はEADsサーバ起動時に呼び出されるため,キャッシュのデータは取得できません。
なお,init()の実行時に例外が発生した場合,このユーザファンクションは使用できません。
(4) ユーザファンクションの処理を実装する
Functionインタフェースのexecute()を使用して,EADsクライアントからの要求時にEADsサーバで実行するユーザファンクションの処理を実装します。
execute()の引数FunctionContextを通じて,EADsサーバの情報を取得したり,キャッシュのデータを操作したりできます。
実行できる操作を次に示します。
-
ユーザファンクションの実行に必要な情報の取得(FunctionContextインタフェース)
-
ファンクション定義の情報の取得(InitConfigインタフェース)
-
EADsクライアントの情報の取得(ClientInfoインタフェース)
-
EADsサーバの情報の取得(ServerInfoインタフェース)
-
データ操作(Storeインタフェース)
-
ユーザログの出力(UserLoggerインタフェース)
(5) ユーザファンクションの終了処理を実装する
Functionインタフェースのdestroy()を使用して,EADsサーバの終了時に呼び出される,ユーザファンクションの終了処理を実装します。
destroy()の引数FunctionContextを通じて,EADsサーバの情報を取得できます。
なお,ユーザファンクションの初期化処理に失敗した場合,destroy()は呼び出されません。