ToolApHookerの使用方法
Webtribe開発環境のServerであるToolApServerに対して、以下のタイミングで独自の処理の実行を可能にする仕組みです。
- ToolClientからToolApServerまで要求が来たタイミング
- ToolApServerで処理が終わり、ToolClientへ応答するタイミング
ソースコードについては簡単なサンプルも用意してありますので、そちらも合わせてご覧ください。
- jp.ne.mki.wedge.pub.toolap.DmcHooker
- Dmc情報への操作を感知し、操作の種類などを独自のログに出力する。
- jp.ne.mki.wedge.pub.toolap.SamcHooker
- Samc情報への操作を感知し、操作の種類などを独自のログに出力する。操作が成功した場合は、Clientから送信されてきたデータをファイルに出力する。
Hookerを使用するときは「ToolApServerの機能名称」と「機能で送受信されるデータのInterface」が必要となります。これについては、更新系の機能について別途一覧を作成してありますのでそちらをご覧ください。
注意点:
Webtribe1.2.0用に作成したToolApHookerは、今後のWebtribe1.3.0以降のバージョンでは使用できなくなる事が想定できます。簡単な移行手順等は用意しますが、今後の1.2系よりも後のバージョンを使用する際はソードコードの移行が必要となりますのでご了承ください。
ToolApServerの処理に対してなんらかの制御を行うことはできません。
使用方法
ToolApServerの設定
「/config/module」の子要素として、「hookers」要素を作成します。その子要素として「hooker」要素を作成し、その属性「class」の値にHookerとして登録するClass名称を記述してください。
「hooker」要素より下の子要素についてはToolApServerでは使用しませんが、登録するHookerに「hooker」要素が渡されますので、もしそのHookerが外部からの設定を必要とするのであればそのHookerに応じて「hooker」配下にHookerに対する設定を行ってください。つまり「hooker」要素の子要素については登録するHookerの仕様しだい、となります。
ToolApServer.wdgサンプル
この例ですと、「SamcHooker」「DmcHooker」のふたつのHookerを作成し、ToolApServerにHookerとして登録しています。さらに、それらふたつのHookerに対して「file」「dir」にふたつの子要素を外部からの設定として指定しています。
<config> <include file="common.wdg" merge="true" /> <module name="ToolApServer"> <execute mode="run" /> <network> <regist protocol="${rmi}" url="${RmiUrl}ToolApServer" /> <server name="ToolDBServer" refer="ToolDBServer" /> </network> <!-- Hooker の登録 --> <hookers> <!-- <hooker class="jp.ne.mki.wedge.pub.toolap.SampleHooker"> <file name="logs/SampleHooker.log" /> <dir before="logs/requests" after="logs/response" /> </hooker> --> <hooker class="jp.ne.mki.wedge.pub.toolap.SamcHooker"> <log name="logs/SamcHooker.log" /> <dir name="logs/samc" /> </hooker> <hooker class="jp.ne.mki.wedge.pub.toolap.DmcHooker"> <log name="logs/DmcHooker.log" /> <dir name="logs/dmc" /> </hooker> </hookers>
ToolApHookerを作成する際のInterfaceについて
Hookerを独自に作成する際は、interface jp.ne.mki.wedge.tool.interfaces.IToolApServerHookerを実装したClassとして作成する必要があります。直接このinterfaceを実装するのではなく、abstract class jp.ne.mki.wedge.pub.toolap.AbstractToolApHookerを継承する方法がおすすめです。
jp.ne.mki.wedge.tool.interfaces.IToolApServerHooker
jp.ne.mki.wedge.pub.toolap.AbstractToolApHooker
Interface引数:制御情報「WedgeServerDataRecord controlRecord」について
ToolClientからToolApServerへ渡される情報は実データだけではなく、「ClientのIPアドレス」「開発環境へのログインユーザ名」「Server側の機能名」などの情報が渡されます。
これらの取得については以下のように記述します。
clientIp = controlRecord.getObjectValue(CR_CLIENTPIP);
getObjectValue()メソッドの引数「CR_CLIENTPIP」は制御情報の種類で、何が取得できるか?はIToolApServerHookerで「CR_」から始まる定数としてString定義されているfieldを参考に指定ください。
例えば、CR_SERVERとCR_SERVERTRANの値の組み合わせで「どの機能が実行されようとしているか?」を判断したり、CR_STATUSの値により「ToolApServerの処理が成功したのか、失敗したのか」の判断をしたりすることが可能です。
Interface引数:データ構造「WedgeObjectIterator [in|out]Records」について
executeBefore()、executeAfter()で渡される「WedgeObjectIterator inRecords」や「WedgeObjectIterator outRecords」ですが、これらが実データとなります。「inRecords」はToolClientからToolApServerに送信されてきたデータ、「outRecords」はToolApServerで処理を行った結果ToolClientに返すことになるデータのコンテナです。
以下にそのコンテナの使用方法、構造を説明します。
WedgeObjectIterator
WedgeServerRecordを複数持つコンテナです。
- getObject(String)
- レコード名称(CS_FRAMEなど)を渡すと、その名称に対応するWedgeServerRecordを返します。
- getObject(int)
- Indexを渡すと、それに対応するWedgeServerRecordを返します。
- getSize()
- 格納されているWedgeServerRecordの数を返します。
WedgeServerRecord
DBでいうとひとつのテーブルに相当するもので、複数件のWedgeServerDataRecordを持つコンテナです。
- getSize()
- 格納されているWedgeServerDataRecordの数を返します。
- getObject(int)
- Indexを渡すと、それに対応するWedgeServerDataRecordを返します。
- Export()
- 保持している全ての行(WedgeServerDataRecord)のデータをWebtribe形式のXMLで出力します。
- firstObject()
- 最初の一行目のWedgeServerDataRecordを返します。
WedgeServerDataRecord
実際にDBへ格納されるデータ一件の単位です。
- getObjectValue(String)
- フィールド名称(ID、PHYSICAL_NAMEなど)を渡すと、その名称に対応するFieldで保持している値を返します。
ソースコードの例
制御情報の取得例
データのExportの例
IDの判断の例
ToolApServer機能一覧(更新系のみ)
対象 | 新規作成 | 保存 | 削除 | ||
---|---|---|---|---|---|
OMC | 名称 | 機能名 | PSYS_NAME update | ||
In | in(0)=SYS_NAME_H in(1)=SYS_NAME_D |
||||
Out | out(0)=TRAN_ID | ||||
基本クラス | 機能名 | PSYS_BASE update | |||
In | in(0)=SYS_BASE_H in(1)=SYS_BASE_D |
||||
Out | out(0)=TRAN_ID | ||||
マッパー クラス | 機能名 | PSYS_DLCP update | |||
In | in(0)=SYS_DLCP_H in(1)=SYS_DLCP_D |
||||
Out | out(0)=TRAN_ID | ||||
ロジック クラス | 機能名 | PSYS_BUSINESSRULE insert | PSYS_BUSINESSRULE update | PSYS_BUSINESSRULE TRAN_DELETE_SYS_BUSINESSRULE_HD | |
In | in(0)=SYS_BUSINESSRULE_H in(1)=SYS_BUSINESSRULE_D |
in(0)=SYS_BUSINESSRULE_H in(1)=SYS_BUSINESSRULE_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
データ クラス | 機能名 | PSYS_DATA TRAN_SAVE | PSYS_DATA TRAN_SAVE | PSYS_DATA TRAN_DELETE | |
In | in(0)=SELECT_ID in(1)=OMC_DATA |
in(0)=SELECT_ID in(1)=OMC_DATA |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
PMC | ユーザ分類 | 機能名 | PMC_USER_CLASS TRAN_SAVE | PMC_USER_CLASS TRAN_SAVE | PMC_USER_CLASS TRAN_DELETE |
In | in(1)=PMC_USER_CLASS in(2)=PMC_USER_CLASS_USER |
in(1)=PMC_USER_CLASS in(2)=PMC_USER_CLASS_USER |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | out(0)=TRAN_ID | ||
ユーザ | 機能名 | PMC_USER TRAN_SAVE | PMC_USER TRAN_SAVE | PMC_USER TRAN_DELETE | |
In | in(0)=SELECT_ID in(1)=PMC_USER |
in(0)=SELECT_ID in(1)=PMC_USER |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | out(0)=TRAN_ID | ||
デスクトップ | 機能名 | PMC_DESKTOP_MENUBAR TRAN_SAVE | PMC_DESKTOP_MENUBAR TRAN_SAVE | PMC_DESKTOP_MENUBAR TRAN_DELETE | |
In | in(0)=SELECT_ID in(1)=PMC_DESKTOP_MENUBAR_H in(2)=PMC_DESKTOP_MENUBAR_D in(3)=PMC_DESKTOP_USER_CLASS in(4)=PMC_DESKTOP_USER |
in(0)=SELECT_ID in(1)=PMC_DESKTOP_MENUBAR_H in(2)=PMC_DESKTOP_MENUBAR_D in(3)=PMC_DESKTOP_USER_CLASS in(4)=PMC_DESKTOP_USER |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID out(1)=PMC_DESKTOP_MENUBAR_H out(2)=PMC_DESKTOP_MENUBAR_D out(3)=PMC_DESKTOP_USER_CLASS out(4)=PMC_DESKTOP_USER | out(0)=TRAN_ID out(1)=PMC_DESKTOP_MENUBAR_H out(2)=PMC_DESKTOP_MENUBAR_D out(3)=PMC_DESKTOP_USER_CLASS out(4)=PMC_DESKTOP_USER | out(0)=TRAN_ID | ||
ツールバー | 機能名 | PMC_TOOLBAR TRAN_SAVE | PMC_TOOLBAR TRAN_SAVE | PMC_TOOLBAR TRAN_DELETE | |
In | in(0)=SELECT_ID in(1)=PMC_TOOLBAR_H in(2)=PMC_TOOLBAR_D |
in(0)=SELECT_ID in(1)=PMC_TOOLBAR_H in(2)=PMC_TOOLBAR_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | out(0)=TRAN_ID | ||
メニュー | 機能名 | PMC_MENU TRAN_SAVE | PMC_MENU TRAN_SAVE | PMC_MENU TRAN_DELETE | |
In | in(0)=SELECT_ID in(1)=PMC_MENU_H in(2)=PMC_MENU_D |
in(0)=SELECT_ID in(1)=PMC_MENU_H in(2)=PMC_MENU_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID out(1)=PMC_MENU_H out(2)=PMC_MENU_D | out(0)=TRAN_ID out(1)=PMC_MENU_H out(2)=PMC_MENU_D | out(0)=TRAN_ID | ||
DMC | 基本データ | 機能名 | DAT_DATA insert | DAT_DATA update | DAT_DATA TRAN_DELETE_DAT_DATA_HD |
In | in(0)=DAT_DATA_H in(1)=DAT_DATA_D |
in(0)=DAT_DATA_H in(1)=DAT_DATA_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
レコード | 機能名 | DAT_RECORD insert | DAT_RECORD update | DAT_RECORD TRAN_DELETE_DAT_RECORD_HD | |
In | in(0)=DAT_RECORD_H in(1)=DAT_RECORD_D |
in(0)=DAT_RECORD_H in(1)=DAT_RECORD_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
テーブル | 機能名 | DAT_TABLE insert | DAT_TABLE update | DAT_TABLE TRAN_DELETE_DAT_TABLE_HD | |
In | in(0)=DAT_TABLE_H in(1)=DAT_TABLE_D |
in(0)=DAT_TABLE_H in(1)=DAT_TABLE_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
テーブル 主キー | 機能名 | DAT_TABLE TRAN_SAVE_TABLE_PKEY | DAT_TABLE TRAN_SAVE_TABLE_PKEY | ||
In | in(0)=DAT_TABLE_H in(1)=DAT_TABLE_KEY_D |
in(0)=DAT_TABLE_H in(1)=DAT_TABLE_KEY_D |
|||
Out | out(0)=SELECT_ID | out(0)=SELECT_ID | |||
SqlMapper | 機能名 | DAT_DLCP insert | DAT_DLCP update | DAT_DLCP TRAN_DELETE_DAT_DLCP_HD | |
In | in(0)=DAT_DLCP_H in(1)=DAT_DLCP_D in(2)=DAT_DLCP_INPUT_RECORD in(3)=DAT_DLCP_OUTPUT_RECORD in(4)=SELECT_ID |
in(0)=DAT_DLCP_H in(1)=DAT_DLCP_D in(2)=DAT_DLCP_INPUT_RECORD in(3)=DAT_DLCP_OUTPUT_RECORD in(4)=SELECT_ID |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
IoMapper | 機能名 | DAT_DLCP insert | DAT_DLCP update | DAT_DLCP TRAN_DELETE_DAT_DLCP_HD | |
In | in(0)=DAT_DLCP_H in(1)=DAT_DLCP_D in(2)=DAT_DLCP_INPUT_RECORD in(3)=DAT_DLCP_OUTPUT_RECORD in(4)=SELECT_ID |
in(0)=DAT_DLCP_H in(1)=DAT_DLCP_D in(2)=DAT_DLCP_INPUT_RECORD in(3)=DAT_DLCP_OUTPUT_RECORD in(4)=SELECT_ID |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
HTML | HTML | 機能名 | HTML TRAN_SAVE_HTML | HTML TRAN_SAVE_HTML | HTML TRAN_DELETE_HTML |
In | in(0)=SELECT_ID in(1)=CS_HTML_H in(2)=CS_HTML_D |
in(0)=SELECT_ID in(1)=CS_HTML_H in(2)=CS_HTML_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
UserAgent | 機能名 | HTML TRAN_SAVE_UA | HTML TRAN_SAVE_UA | HTML TRAN_DELETE_UA | |
In | in(0)=SELECT_ID in(1)=HTML_UA |
in(0)=SELECT_ID in(1)=HTML_UA |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
SAMC | 機能名 | AMC_SERVER_SAVE_PROGRAM TRAN_SAVE_PROGRAM | AMC_SERVER_SAVE_PROGRAM TRAN_SAVE_PROGRAM | AMC_SERVER_DELETE_PROGRAM TRAN_DELETE_PROGRAM | |
In | in(0)=SELECT_ID in(1)=CS_SERVERSUB in(2)=CS_SERVERDATA in(3)=CS_DLCP in(4)=CS_STRAN in(5)=CS_STRAN_IN_RECORD in(6)=CS_STRAN_OUT_RECORD in(7)=CS_CALL_STRAN in(8)=CS_CALL_STRAN_IN_RECORD in(9)=CS_CALL_STRAN_OUT_RECORD in(10)=CS_DLCP_IN_RECORD in(11)=CS_DLCP_OUT_RECORD in(12)=CS_SRULE in(13)=CS_SRULE_IN_RECORD in(14)=CS_SRULE_OUT_RECORD in(15)=CS_DECISION_TABLE in(16)=CS_DECISION_TYPE in(17)=CS_DECISION_DLCP |
in(0)=SELECT_ID in(1)=CS_SERVERSUB in(2)=CS_SERVERDATA in(3)=CS_DLCP in(4)=CS_STRAN in(5)=CS_STRAN_IN_RECORD in(6)=CS_STRAN_OUT_RECORD in(7)=CS_CALL_STRAN in(8)=CS_CALL_STRAN_IN_RECORD in(9)=CS_CALL_STRAN_OUT_RECORD in(10)=CS_DLCP_IN_RECORD in(11)=CS_DLCP_OUT_RECORD in(12)=CS_SRULE in(13)=CS_SRULE_IN_RECORD in(14)=CS_SRULE_OUT_RECORD in(15)=CS_DECISION_TABLE in(16)=CS_DECISION_TYPE in(17)=CS_DECISION_DLCP |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
CAMC | 機能名 | AMC_CLIENT_SAVE_PROGRAM TRAN_SAVE_PROGRAM | AMC_CLIENT_SAVE_PROGRAM TRAN_SAVE_PROGRAM | AMC_CLIENT_DELETE_PROGRAM TRAN_DELETE_PROGRAM | |
In | in(0)=SELECT_ID in(1)=CS_FRAME in(2)=CS_FRAME_IN_RECORD in(3)=CS_FRAME_OUT_RECORD in(4)=CS_COMPONENT in(5)=CS_LAYOUT in(6)=CS_PROPERTY in(7)=CS_ITEM in(8)=CS_TABLE_H in(9)=CS_TABLE_D in(10)=CS_CTRAN in(11)=CS_CTRAN_IN_RECORD in(12)=CS_CTRAN_OUT_RECORD in(13)=CS_CRULE in(14)=CS_CRULE_IN_RECORD in(15)=CS_CRULE_OUT_RECORD in(16)=CS_EXECUTE_TIMING in(17)=CS_ORDER in(18)=CS_GROUP_H in(19)=CS_GROUP_D |
in(0)=SELECT_ID in(1)=CS_FRAME in(2)=CS_FRAME_IN_RECORD in(3)=CS_FRAME_OUT_RECORD in(4)=CS_COMPONENT in(5)=CS_LAYOUT in(6)=CS_PROPERTY in(7)=CS_ITEM in(8)=CS_TABLE_H in(9)=CS_TABLE_D in(10)=CS_CTRAN in(11)=CS_CTRAN_IN_RECORD in(12)=CS_CTRAN_OUT_RECORD in(13)=CS_CRULE in(14)=CS_CRULE_IN_RECORD in(15)=CS_CRULE_OUT_RECORD in(16)=CS_EXECUTE_TIMING in(17)=CS_ORDER in(18)=CS_GROUP_H in(19)=CS_GROUP_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
HAMC | 機能名 | HTMLAMC_SAVE_PROGRAM TRAN_SAVE_PROGRAM | HTMLAMC_SAVE_PROGRAM TRAN_SAVE_PROGRAM | HTMLAMC_DELETE_PROGRAM TRAN_DELETE_PROGRAM | |
In | in(0)=SELECT_ID in(1)=CS_FRAME in(2)=CS_FRAME_IN_RECORD in(3)=CS_FRAME_OUT_RECORD in(4)=CS_ITEM in(5)=CS_CTRAN in(6)=CS_CTRAN_IN_RECORD in(7)=CS_CTRAN_OUT_RECORD in(8)=CS_CRULE in(9)=CS_CRULE_IN_RECORD in(10)=CS_CRULE_OUT_RECORD in(11)=CS_EXECUTION_H in(12)=CS_EXECUTION_D |
in(0)=SELECT_ID in(1)=CS_FRAME in(2)=CS_FRAME_IN_RECORD in(3)=CS_FRAME_OUT_RECORD in(4)=CS_ITEM in(5)=CS_CTRAN in(6)=CS_CTRAN_IN_RECORD in(7)=CS_CTRAN_OUT_RECORD in(8)=CS_CRULE in(9)=CS_CRULE_IN_RECORD in(10)=CS_CRULE_OUT_RECORD in(11)=CS_EXECUTION_H in(12)=CS_EXECUTION_D |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し | ||
SMC | 機能名 | BAT_SAVE_SUB TRAN_SAVE_SUB | BAT_SAVE_SUB TRAN_SAVE_SUB | BAT_DELETE_SUB TRAN_DELETE_SUB | |
In | in(0)=SELECT_ID in(1)=BAT_SUB in(2)=BAT_TRAN in(3)=BAT_DATA in(4)=BAT_DLCP in(5)=BAT_DLCP_IN_RECORD in(6)=BAT_DLCP_OUT_RECORD in(7)=BAT_RULE in(8)=BAT_RULE_IN_RECORD in(9)=BAT_RULE_OUT_RECORD in(10)=BAT_CALL_STRAN in(11)=BAT_CALL_STRAN_IN_RECORD in(12)=BAT_CALL_STRAN_OUT_RECORD in(13)=BAT_DECISION_TABLE in(14)=BAT_DECISION_TYPE in(15)=BAT_DECISION_DLCP |
in(0)=SELECT_ID in(1)=BAT_SUB in(2)=BAT_TRAN in(3)=BAT_DATA in(4)=BAT_DLCP in(5)=BAT_DLCP_IN_RECORD in(6)=BAT_DLCP_OUT_RECORD in(7)=BAT_RULE in(8)=BAT_RULE_IN_RECORD in(9)=BAT_RULE_OUT_RECORD in(10)=BAT_CALL_STRAN in(11)=BAT_CALL_STRAN_IN_RECORD in(12)=BAT_CALL_STRAN_OUT_RECORD in(13)=BAT_DECISION_TABLE in(14)=BAT_DECISION_TYPE in(15)=BAT_DECISION_DLCP |
in(0)=SELECT_ID | ||
Out | out(0)=TRAN_ID | out(0)=TRAN_ID | 無し |