@Published(tag="architect") public class AsyncMessageReceiveAction extends BatchAction<RequestMessage>
RequestMessage.getRequestPath())を元に、
受信テーブルに電文を保存する。
受信テーブルの構造は、必ず下記構造にすること。
----------------- -----------------------------------------------------
受信電文連番 主キー
受信した電文(メッセージ)を一意に識別するためのIDを格納するカラム。
本カラムに設定する値は、#generateReceivedSequence()にて採番を行う。
カラムの桁数は、任意の桁数を設定可能となっている。
----------------- -----------------------------------------------------
業務電文部 業務電文を格納するカラムを定義する。
電文の種類に応じて、業務電文の各項目に対するカラムを定義すれば良い。
----------------- -----------------------------------------------------
共通項目部 各プロジェクトの方式に応じて必要なカラムを定義する。
たとえば、下記のカラムを定義することが想定される。
・登録情報(ユーザID、タイムスタンプ、リクエストID、実行時ID)
・更新情報(ユーザID、タイムスタンプ)
----------------- -----------------------------------------------------
本クラスは1電文を1レコードとして受信テーブルに保存する場合に利用できる。
1電文を複数レコードとして登録する場合や、複数テーブルに保存する場合は本クラスを継承し
#handle(nablarch.fw.messaging.RequestMessage, nablarch.fw.ExecutionContext)や
#insertMessageTable(String, Object)をオーバライドすること。TransactionEventCallback.Provider<TData>REQUEST_DATA_REQUEST_SCOPE_KEY| コンストラクタと説明 |
|---|
AsyncMessageReceiveAction() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
protected java.lang.Object |
createForm(java.lang.String requestId,
RequestMessage message)
受信テーブルにINSERTを行うためのFormオブジェクトを生成する。
|
DataReader<RequestMessage> |
createReader(ExecutionContext ctx)
このタスクの入力データを読み込むデータリーダを生成して返す。
|
protected java.lang.String |
generateReceivedSequence()
受信電文連番を採番する。
|
protected AsyncMessageReceiveActionSettings |
getSettings()
本アクションを実行するために必要となる設定値を保持するオブジェクトを取得する。
|
Result |
handle(RequestMessage inputData,
ExecutionContext ctx)
データリーダによって読み込まれた1件分の入力データに対する業務処理を実行する。
|
protected void |
insertMessageTable(java.lang.String requestId,
java.lang.Object form)
業務用の受信テーブルに受信電文を登録する。
|
error, errorInExecution, initialize, postExecution, preExecution, terminate, transactionAbnormalEnd, transactionFailure, transactionNormalEnd, transactionSuccess, writeErrorLog, writeFatalLog, writeLogcountByParameterizedSql, countByStatementSql, getParameterizedSqlStatement, getParameterizedSqlStatement, getSqlCStatement, getSqlPStatement, searchpublic Result handle(RequestMessage inputData, ExecutionContext ctx)
RequestMessage.getRequestPath()
より取得したリクエストIDに対応する受信テーブルに格納する。
リクエストIDに対応した受信テーブルに格納する際には、下記オブジェクトや定義が必要になるため、
リクエストID単位に作成する必要がある。
handle インタフェース内 Handler<RequestMessage,Result>handle クラス内 BatchAction<RequestMessage>inputData - 入力データctx - 実行コンテキストpublic DataReader<RequestMessage> createReader(ExecutionContext ctx)
DataReaderの生成は行わない。
このため、メッセージキューからメッセージをリードするためのDataReaderの設定は、
コンポーネント設定ファイル側に行う必要がある。createReader インタフェース内 DataReaderFactory<RequestMessage>createReader クラス内 BatchAction<RequestMessage>ctx - 実行コンテキストprotected void insertMessageTable(java.lang.String requestId,
java.lang.Object form)
requestId - リクエストIDform - 登録対象の電文を持ったオブジェクトprotected java.lang.Object createForm(java.lang.String requestId,
RequestMessage message)
StringRequestMessagerequestId - リクエストIDmessage - リクエストメッセージprotected java.lang.String generateReceivedSequence()
protected AsyncMessageReceiveActionSettings getSettings()
SystemRepository)から設定オブジェクトを取得する。