ToolApHookerの使用方法

Webtribe開発環境のServerであるToolApServerに対して、以下のタイミングで独自の処理の実行を可能にする仕組みです。

ソースコードについては簡単なサンプルも用意してありますので、そちらも合わせてご覧ください。

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 無し

Valid XHTML 1.1