提供ツール及びアプリケーションの改修及び新規アプリケーションの開発方法

 画面の表示関係を変更する場合

ツールで表示される文言を変更する

 HikyakuCmsで表示している画面のタイトルや項目名称及びボタンイメージの文言は、"classes"フォルダの直下にある"AppCommonMessages.properties"の内容で表示されています。従って、"AppCommonMessages.properties"の内容を変更することにより表示させる文言を変更することができます。 なお、"AppCommonMessages.properties"には Unicode コード(\ udddd 表記)文字 で登録する必要があるので、日本語等を使用する場合は、"native2ascii"ツール等で変換して設定してください。
 同様にシステムエラーメッセージやログ出力メッセージは"DistributeMessage.properties"で、項目チェック等のエラーメッセージは "ItemErrorMessage.properties"で設定されています。これらの内容を変更することによりメッセージの表示文言を変更することができます。
 JavaやJSPに固定的に定義されている文言はないので、上記のファイル内容を変更することにより、表示させる文言のへん子は可能となります。
 提供しているアプリケーションのスケジュール管理、簡易社内SNSに関しては、上記のような方式を取っていないため、Javaソース、JSP等を修正する必要があります。

全体的なデザインを追加する

 画面のデザインは"skins"フォルダ内のCSS(カスケードスタイルシート)とイメージファイルを使用しています。規定値では "skins/default" フォルダーが使用されます。 "skins"フォルダの中にフォルダを作成し、"default"と同じフォルダ構成で各ファイルを用意すれば、トップ画面の右上にある[情報変更]をクリックすると表示される[ユーザー情報の変更]画面において[スタイル]欄で追加したフォルダ選択できるようになり、個人別に表示スタイルを選択できるようになります。
 参照されるスタイルシータは右表にあるCSSになります。

Common.css ベースとなるCSSでbody,tableタグなどのスタイルが指定されています。
default.css "input","button"クラス指定時のスタイルが指定されています。
leftmenu.css 左側のシステムメニュ用のスタイルが指定されています。
popwin.css カレンダや選択画面などのダイアログ用のスタイルが指定されています。
rectpre.css 枠線を表示する"rectpre"タグリブ用のスタイルが指定されています。
アプリケーションの表示内容や配置などを変更する

 この場合は、JSPを修正する必要があります。JSPは通常のテキストファイルなので、特別なツールがなくても修正は可能です。ただし、"utf-8"で保管する必要があるので、Windowsのメモ帳などの"utf-8"が扱えるエディッタで修正してください。
 JSPの修正に当たっては、データの表示などタグリブが使用されていますし、表示の制御等にスクリプトレット(javaソース)が記載されているので、ある程度の知識が必要だと思われます。
 JSPは右表のように設定されています。

control/jsp/common 共通的に使用するJavaScriptファイルやinclude用のJSPやカレンダ、選択画面用のJSPが入っています。
control/jsp/contents プラグイン管理、セキュリティ管理処理用のJSPが入っています。
plugins/schedule/jsp スケジュール管理で使用されるJSPが入っています。
plugins/sns/jsps 簡易社内用SNSで使用されるJSPが入っています。

 アプリケーション機能の追加・変更及び新規開発を行う場合


開発用環境の設定方法

 提供しているアプリケーションの改修や新規のアプリケーションを作成する場合は、Javaの開発環境が必要となります。JavaもJSPもテキストファイルなので、一般のエディッタとJ2SDK(JavaTM 2 Software Development Kit)があれば開発は可能ですが、開発効率や管理等を考えればEclipsやNetBeansなどのIDE (Integrated Development Environment)を利用するのが一般的だと思われます。
 提供システムはJ2SE(Java 2 Standard Edition)6.0で作成されています。Oracleのjavaサイトより "Java SE 6" のSDKをダウンロードして利用してください。 また、JSP2.0の機能を利用しているので、Tomcatも6.0以降のものを使用してください。(データベースの接続にTomcatのコネクションプールを利用しているので、APサーバとしてはTomcatを推奨しています)
 通常であれば、配布している "cms_development" の内容を新しいフォルダにすべて展開し、IDEのプロジェクトでそのフォルダを指定すれば(Eclipsであれば "Java プロジェクト"の新規作成で[ロケーション]に展開したフォルダを指定する)開発用の環境はできます。 "cms_development"に開発で必要となるライブラリ、tldファイル、include用のJSP、JavScript及びスタイルシートが入っています。

基本となる制御ファイルについて

 当システムは管理用に "プラグイン定義","実行制御","固定値管理" の3つのXML形式のテキストファイルを使用します。

"プラグイン定義" - プラグインの名称などの情報を定義する。 ファイル名は "plugininfo.xml" とし、プラグインフォルダの直下に配置する。
プラグインの登録時に読み込まれ、データベースに登録される。以降はデータベースで管理されるため、変更しても反映されません。
"実行制御" - フレームワークにて参照される実行制御用のファイルでファイル名およびファイルの配置場所は"プラグイン定義"の<controlxmlpass>で指定されたものとなる。添付の "h6Cntl.xls" を利用すれば直接XMLを記述する必要がなくExcel上で管理することが可能となります。
"固定値管理" - アプリケーションで利用される各種固定値が管理される。ファイル名およびファイルの配置場所は"実行制御"の<MasterXml>で指定されたものとなる。

制御ファイル

 フレームワークの開発サポート機能


 フレームワークの基本的な機能や仕組みの詳細は "cms_doc"にある "HkcmsFramework.ppt"などを参照してください。また、スケジュール管理や簡易社内向けSNSを参照していただければ、利用方法等は分かって頂けるのではないかと思います。
 開発時におけるフレームワークが提供している基本となる機能を述べておきます。
画面処理関係のサポート機能

 クライアントとのやり取りを行う処理に対して、スケルトン形式でのベースとなるクラスの提供とJSPの項目とデータクラスのデータとの定義付けを制御するクラスを提供しています。

StandardListProcess 一覧表示形式データ作成用ベースクラス
StandardDetail
Process
詳細情報のデータ表示用ベースクラス
StandardCheck
AndUpdate
データベースの更新用のベースクラス
NoProcess 何も処理が必要でない場合(画面遷移のみを行うなど)に利用するクラス
JspItemsMapping JSPと詳細用データクラスの項目の関連付けを定義するベースクラス
NoProcess 何も処理が必要でない場合(画面遷移のみを行うなど)に利用するクラス

 一般的な表示やデータベースの更新であれば、"Standard______" クラスを継承して作成すれば、画面処理におけるコーディングは非常に少なくなります。
 特殊な編集などがなければ、データクラスのインスタンス化と業務処理用メソッドの呼び出しのみの記述で済みます。リクエストデータからのデータクラスへの設定やデータクラス内データのJSP用のメッセージクラスの設定などは元のクラスで行われます。
 アプリケーションソースの "ui"パッケージの各クラスを参照していただければ、使用方法等は理解できるのではないかと思います。  何の処理がない場合は、実行クラスとして "NoProcess"クラスを指定することができます。リクエスト情報のみが設定された共通メセージクラスが生成されJSPに渡されることになります。

データベース処理関係のサポート機能

 データベース処理のサポートは大別して、テーブル、ビューへのアクセス機能とのデータ保持用のデータクラスになります。

データ保持用のベースクラス
・"RetrieveKeysBase" - テーブル、ビューで検索に使用する項目名 及び 取得する項目名を定義する
・"DetailItemsBase" - テーブル、ビューの項目名を定義する
・"PreparedItems" - 外部ファイルに定義したSQL文を実行するときに使用する

RetrieveKeysBase 検索処理で利用するデータクラスのベースクラスで、検索条件及び検索結果で取得されたPrimaryKey値のListを保持します
DetailItemsBase 1インスタンス(行)に対応したデータクラスのベースクラス
PreparedItems 外部定義のSQLを実行し、その結果で取得したデータを保持するクラス

データアクセス用のクラス
・"DefaultTableAccess" - 通常利用されるアクセス用のベースクラス
・"MultipleTableAccess" - 複数テーブルの更新用のベースクラス
・"PreparedSqlAccess" - 外部ファイルに定義したSQL文を実行するときに使用するベースクラス

DefaultTableAccess アクセスごとにcommitし、接続を切断します
MultipleTableAccess commit, rollbackを自分でコントロールする場合に使用する
PreparedSqlAccess 外部定義のSQLを実行する場合のベースクラス

テーブル、ビューで必須となるフィールド
 フレームワークのデータベースアクセスを利用するには、右表の5つの項目(属性)が必須となります。
 これらの項目は必ず定義してください。なお、データクラスでは定義する必要はありません。

UPD_DATE varchar (10) 更新日 排他制御で使用
UPD_TIME varchar (8) 更新時間 排他制御で使用
UPD_PGM varchar (256) 更新プログラム
UPD_USER varchar (256) 更新者
DEL_FLG char (1) 削除フラグ 論理削除用
ユーティリティ関係

 フレームワークには、開発サポート用に幾つかのユーティティ的なクラスが用意されています。大半は static メソッドとして定義されています。
 利用回数が多いと思われるクラスを右表に記載しておきます。メソッドの詳細やその他のクラスに関しては "cms_doc" に含まれている JavaDoc を参照してください。

SecurityCheckUtils ユーザー情報、グループ情報の取得など
PreparedSqlUtil "PreparedItems" から "Retrieve KeysInterface"への変換(setKeys),
"DetailItemsInterface"への変換(setVals)
MasterXmlFactory
MasterXmlControl
固定値管理Xmlからのデータの取得を行う
DateUtil 当日取得などの各種日付関係の処理
MessageUtil 共通メッセージクラスからのデータの取得
NumUtil 四捨五入などの数値関係の処理
TextUtil 大小文字変換などの文字列関係の処理

 フレームワークの活用

項目チェック機能を利用する

 項目ごとにチェック内容を記述した "XMLencoder"形式のXMLファイルを、画面毎のフォルダ内に置いておく。
 "ItemChecks"クラスの "check"メソッドを上記のフォルダ名を引数に指定して実行すると、共通メッセージにエラーの有無と項目ごとのエラーメッセージが設定されます。 全体的なイメージは右図のようになります。
 項目ごとのファイルの作成用に "h6item4Xml_jsp.xls" を用意しています。このExcelを使用することにより、直接ファイルを作成することなく、フォルダ単位で項目のチェック内容を管理することができます。

項目チェック

データベースとの接続を独自のクラスで行う

DBコネクション

 データベースとの接続は、標準ではTomcatのコネクションプールを使用するようになっています。接続先の設定は "context.xml" の"name"属性の値(jdbc/以降の名称)を固定値管理ファイルの<DbConnect>タグ内の<parameter>に設定します。 また、<DbConnect>の指定は <DbConnectCode>タグの値を "DefaultTableAccess", "MultipleTableAccess", "PreparedSqlAccess"の各クラスの "setConnectionParameter"メソッドの引数で指定します。(左図参照)
 <DbConnect>/<class>に "DbConnectInterface"を実装したクラスを指定すれば、データベースとの接続時に使用されます。

DIコンテナーを利用する

 DIコンテナ(Dependency Injection Container)によるコンポーネント(JavaBeans)の管理にも対応しています。標準で"PicoContainer" の利用が可能になっており、右図の様に設定します。
 1.プラグイン定義ファイルの<diclass>で "DiContainer"インターフェースを実装したクラスを指定します。未指定時は"PicoContener"が使用されます。
 2.実行制御ファイルの<ExecClass>の "di"属性に"yes"を指定し、Diコンテナ用のキー値を"key"属性に設定します。"key"属性に"class"を指定すると<ExecClass>で指定しているクラスのClassオブジェクトがキーとなります。

DIコンテナ