リファレンスガイド
目次
概要
Tuigwaaは 100% Java で記述された Web アプリケーションプラットフォームです。以下の図は Tuigwaa の外部環境を表したものです。
Tuigwaa の特徴として既存環境との融和性を考慮している点が一つの特徴となっています。上図のようにミドルウェアとして、
- Web アプリケーション自体を動作させる為の J2EE コンテナ
- ユーザ認証の為の LDAP サーバ
- データを格納する為のデータベースサーバ
を必要とします。これらのミドルウェアコンポーネントについて既存環境の物を利用することも可能ですし、同梱の LDAP サーバ (ApacheDS)、データベースサーバ (HSQLDB)を利用することも可能です。Tuigwaa はデフォルトでは後者の同梱の LDAP サーバ及びデータベースサーバを利用するように構成されており、その際特別にそれらのミドルウェア環境の構築や設定を行う必要はなく、J2EE コンテナの設定と配備のみで利用を開始できます。
これは、既に上記のミドルウェアを利用しているユーザに対しては、既存の動作環境に加えて新たなものを構築しなければならないというリスクを低減 し、またそうでないユーザに対してはミドルウェア環境を構築してからでないと利用を開始出来ないという制約を低減する為です。勿論前者の場合でも、 Tuigwaa 同梱の LDAP サーバ、データベースサーバの利用に関しては特別な設定を行う必要が無いので、Tuigwaa 専用のミドルウェアとして同梱のものを利用するという選択も可能です。
また Tuigwaa で管理しているコンテンツ及びデータへのアクセス手段としては、通常のブラウザからの HTML アクセスに加え、コンテンツに関しては PDF ファイル、データに関しては Excel ファイル、また WEB-DAV クライアントを利用したアクセスといった、様々な外部インターフェースを標準で備えていることも特徴となっています。
上図は Tuigwaa の内部構成を示しています。ここにあるように Tuigwaa は大きく分けて8つのコンポーネントから構成されています。メンテナンス性を向上させるため、それらのコンポーネントを各々別個のJava のパッケージとし、パッケージ間の依存性を低くしています。例としては、Tuigwaa の CMS (Contents Management System) コンポーネントでは、Jakarta Slide、Database コンポーネントでは Hibernate、Model コンポーネントでは Javassist、Controller コンポーネントでは Struts と、依存性の高い外部ライブラリを有するが、その依存関係は上述のパッケージ内で閉じています。
またこれらのサービスを結合し、また後述のロジックのような機能を実現する為に、DI & AOP コンテナである Seasar を利用しています。これにより、先述のコンポーネント感の依存性を低減させる事が可能となっています。
機能的な側面から言うと、Tuigwaa ではWeb アプリケーション を以下の三要素をもつものと定義しています。
- コンテンツ
- データ
- フロー
コンテンツは、Web 初期から存在し、また昨今はブログといった形注目を集めている非定型なドキュメントで、データは RDBMS で管理されるような、データの型がある程度決まった定型なもの、そしてフローというのは例えばあるページにアクセスした際 (イベント)に、データがある状態の場合(条件) は、メールを送信する (処理)という、イベント、条件、処理の組み合わせの一連の動作です。Tuigwaa ではこれらの機能の組み合わせを一つの「サイト」という単位で管理し、様々な機能をもつ Web アプリケーションを構築することが可能です。
次項からはTuigwaa の各機能について詳細を記述します。
ページ
ページは、「コンテンツ」の主要素で非定型で、基本的には静的なデータです。CMS のツールと同様に、Tuigwaa はFTP 等のファイル転送を利用せずとも、ブラウザ上からコンテンツの作成、編集、削除といった作業を可能としています。以下ではページに関する機能を紹介してい きます。
編集
ページコンテンツの管理には以下の二つの編集モードが存在します。
- Wiki 編集
-
Wiki 文法にてコンテンツを作成します。Wiki の文法は独自実装の解析エンジンにて処理されます。解析エンジンは JavaCC というコンパイラコンパイラを利用して作成されており、解析結果をツリー状で保持し、Visitor パターンと合わせる事により一つのコンテンツから様々な形式 (HTML/PDF/Text) での出力を可能としています。
- リッチ編集
-
WYSIWYG (What You See Is What You Get) にて、編集画面で作成したコンテンツがそのままHTML 化されます。見出し単位での編集は出来ません。
新規作成する場合には、そのページコンテンツを管理する編集モードを選択する事が可能であり、一度保存されたコンテンツは、それ以降は新規作成の際 に選択した編集モードを変更することは不可能です。また、新規作成時のデフォルトの編集モードは Tuigwaa Manager のサイト設定にて変更することが可能です。
- 入力補助機能について
-
Tuigwaa の各種機能はプラグイン形式でコンテンツに含めることが出来ます。その書式がプラグイン個々によって異なるために、プラグイン入力補助を編集画面に用意することにより、プラグインを容易に利用しやすくしています。
- コンフリクトについて
-
同じページコンテンツを同一のタイミングで別の二人以上のユーザが 編集した場合、バージョン管理機構により、より後に編集したユーザの保存画面に変更されたコンテンツが表示され、そのまま保存するか、さらに変更するかの チェックを促します。そのまま保存した場合には、変更は上書きされます。見出し編集をしている場合には、同一の見出し配下のコンテンツではない場合には マージ処理がなされます。
添付ファイル
ページに対してファイルを添付をすることができます。その添付ファイルをページ内から参照することが可能です。また添付されたファイルは WebDAV のレポジトリに追加されるため、WebDAV クライアントから以下の URL にてその領域にアクセスする事が可能となります。
<配備URL>/WEB-DAV/<サイト名>
- WebDAV クライアントからのアクセス
-
上記のサイト名以下には添付したページのフォルダが作成されており、そのフォルダに対してファイルをコピーすることにより、上記の添付と同等の結果を得ることが出来ます。
WebDAV クライアントを用いた場合には、サーバ上のファイルを直接編集することが可能となり、該当ファイルをサーバからダウンロードし、編集し、再度アップロードするといった作業を避ける事が出来ます。
履歴
ページの変更履歴を閲覧することが可能です。最新のコンテンツとの差分を表示することによって、どのユーザがどのような変更を加えたのかの確認をすることが出来ます。
RSS
ページの更新情報を RSS にて配信する機能です。最新更新10件を配信しています。形式は以下の三種類です。
- RSS 1.0
- RSS 2.0
- Atom 0.3
FireFox のライブブックマークのような機能を有するブラウザであれば自動的に RSS を認識することも可能です。
ページ設定
ページに関して以下の設定を行う事が出来ます。
- ファイルタイプ
- 隠しファイルか、通常のファイルかを選択できます。隠しファイルの場合、folderlist プラグインや、list プラグインでは表示されません。デフォルトは通常のファイルです。
- PDFスタイル
- ペー ジをPDF出力する際の設定で、ヘッダの有無、ページサイズ、縦平方向か、横方向かの選択を行います。また、レポートスタイルという、ドキュメントが 「トップページをタイトルページとして扱い、ドキュメントは見出しから始まる」という前提のスタイルも選択が可能です。デフォルトは「ヘッダ有り、A4、 縦方向」です。
- メニューページ
- このページを表示する際のレイアウト内のメニューページで表示するページ名を指定します。
- 右サイドページ
- 三段組スタイルを選択時に右側に表示されるページを指定します。
またページに対する特殊な機能としては、以下のロックが設定可能です。
- ロックについて
-
ロック機能を設定することによって、該当のページのコンテンツを変更出来ない状態にすることが可能です。
ロックには以下のルールがあります。- ロックされたページは明示的にロック解除されるまでは編集が出来ません。
- 未承認のユーザはページをロック出来ません。
- ページのロックの解除は、そのロックをしたユーザかもしくは、管理者権限を有するユーザに許可されます。
データベース
データベースは、先述の「データ」を扱う機能で、Tuigwaa のデータベース機能の最も大きな特徴は、ブラウザ上の操作を行ったタイミングで動的にテーブルが作成され、またそれに対応する数々の設定が自動的になされ ることです。まず、その仕組みのアーキテクチャから記載をはじめます。
アーキテクチャ
Tuigwaa のデータベース機能は、昨今注目を集めている Web アプリケーション開発手法を応用して実現しています。その開発手法とは POJO (Plain Old Java Object) というデータの設定、及び取得といったシンプルな機能のみを持ったデータを表現するクラスを作成し、それに対応した入力フォーム、入力チェック、及びそこ からデータベースへのテーブルの作成を行うというものです。
Tuigwaa では、これらの開発手法で行なわれている事を、ユーザがブラウザ上でデータモデルを定義した時点で、それに対応する POJO の生成、対応する入力フォーム、入力チェック、テーブルの作成などを自動的に行う事によって、開発ツールや開発者の介在を必要とせずにデータベースを利用 できる環境を実現しています。
また、データベース上のデータを Java アプリケーションから POJO として利用する際には、Hibernate という O/R マッピングツールを利用しており、これは Hibernate が対応している種々のデータベースを Tuigwaa で利用することが可能であることを意味しています。
テーブルの作成
上述の通り、データモデルを定義することによって、自動的に対応するテーブル、入力フォームが作成されます。その際に必要な設定は以下の通りです。
- テーブルの表示名
- テーブルの名前
- テーブルの説明
- 通常カラムの設定
- 特殊カラムの設定
また作成したテーブルはその後からも、編集、削除が可能です。尚サイト作成時に「簡易テーブル作成モード」を選択した場合には、テーブルの名前は Tuigwaa で一意の名前を自動で作成するので、設定の必要がありません。
通常カラムの種類
作成したカラムに対応して、入力フォームの種類、テーブルのカラムの型、Java 上の型、そして入力チェックの方法などが決定されます。
対応するフィールド | 対応する Java | 対応する Hibernate の属性 | オプション | |
文字列 | テキストフィールド or テキストエリア | java.lang.String | string | 通常の文字列,Eメール,短い文章,文章,Wikiの選択 |
整数 | テキストフィールド | java.util.Integer | integer | |
小数 | テキストフィールド | java.util.Float | float | |
日付 | コンボボックス x 3 | java.util.Date | date | |
2択 | ラジオボタン | java.lang.Boolean | boolean | true, false のラベル作成 |
リストから文字列選択 | コンボボックス or ラジオボタン | java.lang.String | string | 選択するリスト作成 |
リストから整数選択 | コンボボックス | java.lang.Integer | integer | 最小値、最大値、間隔 |
リストから文字列複数選択 | チェックボックス | java.util.Set | one-to-many | リストを作成 |
ファイル | ファイル挿入 | byte[] | binary | |
関連データ | コンボボックス | 参照するテーブルのクラス | many-to-one SQL 的には forein key | 関連するテーブルを選択 |
関連データのリスト | 表示されない | java.util.Set | one-to-many | そのテーブルに既に関連付けられテーブルの中から選択 |
自己関連データ | コンボボックス | 自分自身のクラス | many-to-one | |
時刻 | 表示されない | java.util.Date | timestamp |
上記表の一番左の項目をユーザが選択した際に、自動的に Java のクラス、及び Hibernate の指定の設定が作成されます。
特殊カラム
特殊カラムというのは、そのデータが作成された時間といったユーザが直接関心のあるデータそのものではなく、例えば「今日登録されたデータ」を閲覧 したい、といった際に利用されるデータで、データの入力時にはそれに対応するフォームは表示されず自動的にデータが挿入されます。特殊カラムにはは次の 5種類のものが提供されています。
- ID (連番もしくはランダムに生成される一意なID)
- レコード作成ユーザ (一意にすることも可能)
- レコード更新ユーザ
- レコード作成時間
- レコード更新時間
関連データについて
Tuigwaa では関連データとして、テーブル同士を関連づけることが可能です。RDBMS レイヤで実現される全ての関連モデルは実現されていませんが、入力フォームと組み合わせることで以下の一般的なモデルを実現することが可能となっています。
- one-to-one (一対一関連)
-
実際にはテーブルは一つ作成され、カスタムフォーム(後述)で、一対一対応している要素の入力フォームを二つ以上に分けることによって、仮想的に実現しています。
- many-to-one (多対一関連)
-
RDBMS レイヤと同様に二つのテーブルを外部キーで関連づけます。入力フォーム上でコンボボックスにて参照先のデータを選択することが可能です。テーブルのカラムの種類は関連データという名前で扱われます。
- one-to-many (一対多関連)
-
後述のレコード指定ページと組み合わせることで one-to-many の関連づけを行います。 one 側を削除するとそれに関連する many 側のデータも同時に削除される (ON DELETE CASCADE) といった RDBMS の機能を実現します。テーブルのカラムは関連データのリストという名前で扱われます。
- many-to-many (多対多関連)
-
三つのテーブルを many-to-one 及び one-to-many の組み合わせで関連付けをすることにより仮想的に実現します。中間のテーブルが関連データ二つのみで構成されるテーブルあれば、自動的に many-to-many と判断されます。入力フォームとしては、チェックボックスで複数のデータが選択可能となっています。リストから文字列複数選択というカラムは内部的には many-to-many の概念を利用しています。
データの挿入、編集、削除
ここでは、ページ連携のフォームではなく、サイト管理機能におけるデータの挿入、編集、削除方法を記述します。まずデータの挿入方法として以下の二つが存在します。
- 一レコードに一つのフォームで編集
-
作成したテーブルに対応するフォームが自動で作られ、そのフォームに入力することでデータを挿入することが出来ます。また、データ入力後送信する前に自動的にブラウザで入力チェックが行われ、不正な値があれば再入力を促します。
例えば、文字列でオプションとしてeメールを選んだカラムに対して、Eメール形式(xxx@example.com 等)でないデータが入力されたときは不正とみなされます。 - 複数のレコードを一つのフォームで一括編集
-
データベースの内容をスプレッドシートのよう に編集することが出来ます。TAB キーや十字キー押した時の動作も、通常のブラウザの動作と異なり、スプレッドシートの操作に近いものとなっており、通常テキストエリアを表示する場所もテ キストフィールドを表示して一括編集により効率的にデータ入力を行う事が可能となっています。
この機能では
- 変更したセルを含む行のみを更新します
- Ajax により複数のユーザが同じテーブルを編集した場合に、自分が編集したセルが自動的に相手に伝わり、相手の表示画面でそれを通知します (セルを赤にて表示)
- 入力チェックはサーバ側で行われます
テーブル、データに対する操作
作成したテーブル、入力したデータに対し以下の種々の操作を行う事が可能です。
- フィルタ
-
フィルタとはデータに対し、あるカラムの内容が xxx である、といった様々な条件を指定してデータを絞り込む機能のことを指します。またそこで指定出来るものとして最大件数、カラム選択、表示順序といった データそのものの条件ではないものも指定が可能となっています。このようにフィルタは、対象とするカラム、検索方法、値の指定の組み合わせにて設定されま す。SQL のレイヤでは where 句の実行と同義となります。
検索方法とその検索方法が使えるカラムの種類は以下の通りとなっています。
検索方法 カラムの種類 一致する 全ての種類のカラム 異なる 全ての種類のカラム 値以上である 整数、小数、リストから整数選択 値より大きい 整数、小数、リストから整数選択 値以下である 整数、小数、リストから整数選択 値より小さい 整数、小数、リストから整数選択 前方一致する 文字列、2択、リストから文字列選択、リストから文字列複数選択 後方一致する 文字列、2択、リストから文字列選択、リストから文字列複数選択 含む 文字列、2択、リストから文字列選択、リストから文字列複数選択 期間である 日付型 指定と一致する 日付型 アクセスしたユーザ名と一致する 文字列、2択、リストから文字列選択、リストから文字列複数選択
また関連データの検索は、関連データの型に依存します。 - 集計表
-
RDBMS の集約関数 (合計、平均、最大値等)を用いて、一次元の表、二次元の集計表を作成することが可能となっています。SQL のレイヤでは group by と同義です。また作成した集計表は、また graph プラグインにより、グラフ表示することも出来ます。
- 集計値
-
例えば、AAA という条件を満たすレコードの行数を取得するといったフィルタの指定と集約関数の組み合わせにより、集計値を設定することが出来ます。
以下から説明するフォーム群に関しては、後述のページとデータベースの連動部分で利用されます。これは作成された Web アプリケーションのユーザがデータの入力、編集等に利用する為の機能です。
- カスタムフォーム
-
テーブルに対して全てのカラムを挿入、編集するフォームではなく、一部分を挿入、編集するフォームを作成することが出来ます。
※ 表示しないカラムに対しては、挿入するデータをあらかじめ決めておく、もしくは設定しないといった選択が可能です
※ 入力だけでなく、既存データの更新専用にすることも可能です - 検索フォーム
-
検索対象のカラムとその条件を定義すると、それに対応するフォームが作成されます。詳細は後述します。
- 更新ルール
-
ロジック機能と組み合わせる事によりーブルのデータをどのように変更するか設定することが出来ます。詳細は後述します。
テーブル新規レコードの RSS
テーブルに新規レコードが追加、編集があった場合に RSS で通知します。どのような条件のレコードが追加されれば RSS で知らせるかは Tuigwaa のWebDB のフィル多機能を使って作成することも可能です。RSS 用の URL は、tablefeed プラグインを利用します。
テーブル新規レコードの RSS の利用方法は以下のようになります。
- 最新更新を降順で20件といった RSS として取得したい情報のフィルタを作成します
- レコードに対応したページを作成します
- tablefeed プラグインにて Feed の URL が作成されます
- 利用している RSS リーダにてその URL を登録します
ページとデータベースの連動
ページとデータベースを連携することにより、静的なページの中に例えば、テーブルの表データや、データ入力そのものを促すフォームをページ上に表示 させるといった事が出来ます。この機能によって静的で非定型なコンテンツデータと、動的に変化する定型データであるデータベースデータを、一つのWeb ページ内で扱うことを可能としています。
このデータベースとの連携を管理するために、Tuigwaa には以下の二種類のページが存在します。
- 通常のページ
- レコード指定のページ
通常のページにおいても、データベース機能で作成した様々なデータを表示や編集を行う事が出来ますが、より高度な機能を利用する場合にはレコード指 定のページも利用することが出来ます。また、これはアプリケーションのアーキテクチャ上の分類であり、ユーザにとってはページの作成や変更に関して、特に その違いを意識をする必要はありません。
通常のページ
通常のページにはデータベース機能で作成した様々なデータを挿入することが出来ます。以下はすべてプラグイン入力補助機能により、複雑なプラグイン文法を直接入力することなく、必要な事項を選択、または入力することでコンテンツに組み込む事が可能となっています。
- テーブルの挿入
-
table プラグインにてテーブルのデータを表形式で挿入します。フィルタまたは集計表を選択すると該当テーブルの指定された条件のデータを表示することが出来ます。
- 集計値の挿入
-
value プラグインで集計値を挿入します。出力されるデータは数字であるため、文中などに表示することが出来ます。
- グラフの挿入
-
graph プラグインで、集計表に対してグラフを作成することが出来ます。作成出来るグラフは以下の三種類です。
- 棒グラフ
- 折れ線グラフ
- 円グラフ (2次元の表は不可) - excel ファイルへのリンク
-
テーブルのデータを excel にてダウンロードするリンクを挿入することが出来ます。
- フォームの挿入
-
form プラグインで、データを入力するためのフォームを挿入することが出来ます。また edittable とカスタムフォームを組み合わせることで、特定のカラムの一括編集フォームをページに表示することも可能です。
レコード指定ページ
レコード指定ページとはあるテーブルの特定レコードと結びついたページのことを指します。レコードを特定することによりテーブル全体の内容だけではなく、特定レコードの情報をページ内に表示する事を可能とします。レコード指定ページで実現できることは以下の通りです。
- レコードの詳細ページの作成
- レコードの編集ページの作成
- 関連データ機能と組み合わせによる、通常とは異なったデータ入力
- 更新ルール、ロジックと組み合わせることによる、レコード指定ページにアクセスした際の、特定レコードを定義されたルールで更新(詳細はロジックの項で記述)
- レコードの詳細ページの一覧表示
- レコードの詳細ページについて
-
レコード指定ページでは、data プラグインを使って、そのレコードの項目を任意の位置に表示することが出来ます。
例えば以下のページが名簿の各レコードの詳細ページとした場合に、
&data(名簿,苗字); さん あなたの名前は &data(名簿,名前); さんですね。
苗字カラムが「山田」、名前カラムが「小鳥」というレコードが指定された場合には以下のように変換されて出力されます。
山田 さん あなたの名前は小鳥さんですね。
- レコードの編集ページについて
-
レコード指定ページで、そのテーブルに対応するフォームを挿入すると自動的にフォームにそのレコードのデータがセットされ、編集することが出来ます。さらにカスタムフォームを使うと、そのレコードの一部分のみの編集などが可能となります。
- レコード詳細ページを並べて表示することついて
-
table プラグインでは複数のレコードを表として出力するが、datalist プラグインでは例えば掲示板のように各々のレコードをレコード詳細ページの形式で表示することが可能となります。
レコード指定ページ作成のナビゲーション
レコード指定ページは以下のような形式となっています。
<配備 URL>/top.do?_pageName_=(ページ名)&_ENTITY.(テーブル名)_=(ID)
このページは以下のような場合に自動的にリンク及び、動作の遷移先として設定されます。
- table プラグインのアクションからのリンク
- table プラグインの引数でアクションを設定した際のそれぞれの行の詳細カラムのリンク
- form プラグインからのデータ入力直後
- form でデータを入力した直後の遷移先ページ
- レコード指定ページで datalink プラグインで作られたリンク
- レコード指定ページの中で同じレコードを指定したページへのリンク
- レコード指定ページで、fklink プラグインで作られたリンク
- レコード指定ページの中の関連データのレコード指定ページ
これらのページは事前に作成することも可能ですが、ナビゲーション方式でページ作成前に上記のプラグインでページ名を先に指定しておき、以下のように後から作成することも可能です。
- レコード指定ページのリンクをクリック
- レコード指定ページが存在しなければ「作成しますか」というナビげージョンが表示されます
- 作成するを選ぶとレコード指定ページの作成画面が現れ、その画面にはレコードデータを入力する補助機能がついています
レコード指定ページに、レコードが指定されていない状態で遷移すると &data (...); と表示されて、意味が通じないページとなっています。このような状況を避けるためにレコード指定ページを隠しページにすることが推奨されます。隠しページ については、ページの設定の項を参照。
レコード指定ページと関連データ機能
レコード指定ページと関連データ機能を組み合わせることでさらに高度な処理が可能となります。例えば以下のようなケースを考えます。
- 「テーブル A」 が「テーブル B」 への関連データのリストというカラムをもつ
(A->B に対する one-to-may の関連) - 「テーブル B」 が「テーブル A」 への関連データというカラム
(B->A に対する many-to-one の関連)
これは RDBMS レイヤで表現すると テーブル B がテーブル A を参照している、ということになります。ここで、「テーブル A」のレコード指定のページがある場合、そのページ上で「テーブル B 」に対するform プラグインと datalist プラグインがある場合、以下のように動作します。
- form プラグイン
-
通常「テーブル A」 への関連データというカラムの入力としてコンボボックスが表示されるが、ここでは指定された A に対するレコード指定ページなので、「テーブル A」 のレコードが自動的に設定されます。
- datalist プラグイン
-
通常フィルタを指定しなければ「テーブル B」 の全てのレコードが一覧表示されますが、ここでは指定された「テーブル A」 のレコードに関連したレコードのみが表示されます。
これらの機能を使うことによって、one-to-many のデータを入力、表示が簡単に行うことができます。
具体的な例でいうと上記の
A が「部署テーブル」、B
が「社員テーブル」であるとすると、「部署」の詳細を表示するページで、その「部署」に所属する社員のデータのみを表示したり、ここの社員情報を入力する
ことによって、その「部署」に対して選択なしに社員情報を入力することが出来ます。
ロジック
ロジックは先述の「フロー」を実現する機能です。このロジックによってページの遷移やメールの送信といった「コンテンツ」や「データ」の送信に関わるフローを制御することが出来ます。Tuigwaa ではロジックは
- イベント (event)
- 条件 (condition)
- 処理 (action)
の三つの要素から構成され、これらで実行される一連の処理を指します。
アーキテクチャ
ロジック機能の実現の為に、AOP を利用します。ページ閲覧時、レコード挿入時に Interceptor を利用して通常の動きとは違い特定の条件下でのみ動作する処理を挿入します。
ロジックの詳細
ロジックは以下のように各々のパターンの組み合わせに対して作成が可能です。
イベントとして選択できるのは以下の通りです。
- ページにアクセスしたとき
- テーブルにデータが追加される前
- テーブルにデータが追加された後
- カスタムフォームからデータが追加される前
- カスタムフォームからデータが追加された後
条件として選択できるのは以下の通りです。
- 何時でも
- 集計値が一定の条件を満たす場合
処理として選択できるのは以下の通りです。
- ユーザが選択したものとは別のページに遷移
- テーブルの指定行を削除
- テーブルの指定行に対して更新ルールを実行
- 入力されたデータの Email 項目に対して、ページをメールで送信
Tuigwaa Manager
Tuigwaa は個々のユーザ、もしくはグループが管理するアプリケーション単位をサイトと呼びます。Tuigwaa Manager はそのサイト管理やバックアップ、リストアなどの Tuigwaa システム全体に関わる設定や、情報の閲覧をする機能を提供する管理コンソールです。
Tuigwaa Manager を利用する為には以下の URL にアクセスをします。
<配備URL>/tgw-manager/top.do
Tuigwaa Manager は Tuigwaa に対する全ての権限を有するため、アクセスは、admin ロールを持つユーザに限定されています。
サイトの作成・編集
サイトの新規作成や、既存のサイトの設定を編集する機能で、以下の項目を設定します。
基本設定
- タイトル
- サイトの名前。サイトのヘッダ部に表示されます。
- サイトID
- サイトのID。この値が Tuigwaa を配備したパスからの URL の一部となります。また、編集の際にこの値の変更は出来ません。
- サイトの説明
- サイトの説明。サイトのヘッダ部に表示されます。
- ページ作成
- サイトのページ編集モードでデフォルトで表示される編集モードを wiki かリッチ編集かを選択します。
- テーブル作成
- サイトのテーブル作成で利用される編集モードを、実際のテーブルのカラム名を指定する標準モードか簡易モードから選択します。
サイトを作成すると、自動的にサイト ID のスキーマがデータベース上に生成されます。これにより各サイトで同一名のテーブルを持つ事を可能となります。
セキュリティ設定
- セキュリティ
- セキュリティ保護を行うか否かの設定。
- ロール
- セキュリティ保護が有効な場合、そのサイトを利用可能なロールを設定します。
- オプション
- セキュリティ保護されたサイトで、未承認のユーザを閲覧可能とするかを指定します。
データベース設定
- データベース
- 基本データベースか、外部データベースかを選択します。
- 名前
- 外部データベースを利用する場合、その名前を指定します。
- スキーマ名
- 外部データベースを利用する場合、そのスキーマ名を指定します。
サイトのバックアップ・リストア
サイトの設定、コンテンツ、及びテーブルのデータをバックアップ、及びリストアします。バックアップは Tuigwaa の配備されたローカルディスク上にファイルの形で保存され、日付管理されます。リストアの際には、そのバックアップの日付を選択しそのバックアップ時点で のサイト状態に復旧することが出来ます。
バックアップ機能においては、添付ファイル領域、及びテーブルのカラムタイプがファイルのデータは対象としません。また、バックアップデータは先述のように配備されたローカルディスク上に保存される為、Tuigwaa 自体を再配備した場合にはバックアップデータ自体が破棄されます。
サイトテンプレート機能
サイトテンプレート機能は、サイト単位にその設定、コンテンツ、テーブルデータをアーカイブ化する機能で、ある環境で作成した Tuigwaa サイトを、別の環境に移行するといった移行作業を容易に行うことが出来ます。
サイトのデータをアーカイブ化し、ダウンロード及びアップロードする機能。ダウンロードの際にはバックアップ機能を用いて最新のデータを取得した後に、「サイトID.tgwar」の形式でダウンロードを行います。
またアップロード機能では、ローカルシステムにある、tgwar ファイルをサイト上にアップロードする事によってアーカイブ化されたサイトを展開する事が出来ます。
これを利用して、例えば「受付サイトテンプレート」といった形でこのサイトテンプレートを配信し、ユーザはそのデータ定義やコンテンツをカスタマイズすることで、ユーザ独自の「受付サイト」Webアプリケーションを簡単に作成することが出来ます。
外部データベースの追加
Tuigwaa では、同梱の HSQLDB や、既に稼動しているデータベースの準備を行う事により、コンテンツの保存やデータベースの利用を可能としており、これを「基本データベース」と呼んでいます。
またこれとは別に外部で既に稼動しているデータベースを「外部データベース」として設定することにより、基本 データベース上で作成したテーブルと同様に、外部の既存テーブルのデータを閲覧、編集、コンテンツ上での表示といったことが可能となります。これにより、 コンテンツは基本データベースに格納するが、テーブルデータに関しては外部データベースを利用する、という方法が可能となります。
外部データベースの設定では以下の項目を入力します。
- 説明
- 外部データベースの説明。この名前をサイト設定時に選択が可能となります。
- ユーザ名
- データベースへのアクセスユーザ名
- パスワード
- 上記ユーザのパスワード
- URL
- JDBC のアクセス URL。
動作確認を行った外部データベースは PostgreSQL と HSQLDB です。
ユーザ、ロールの作成・編集
Tuigwaa 上で利用できるユーザやロールの追加・変更・削除が出来ます。設定するのは、ユーザ名 (ロール名)、パスワード、説明の三項目です。
尚、組込みの LDAP サーバを利用する場合には、tuigwaa ユーザがデフォルトで設定され、このユーザが Tuigwaa Administrator として作成されており、このユーザを削除することは出来ません。
各種情報の閲覧
Tuigwaa Manager のトップページでは、現在の Tuigwaa に対するセッション数、サイト数、登録ユーザ数、及び各サイトのコンテンツ数、テーブル数、セキュリティ保護の有無、データベースモードを閲覧できます。 また、システム状態では、動的に生成された各サイト用の Struts の設定を閲覧することが出来ます。
セキュリティ
LDAP サーバによりユーザを認証して、コンテンツやアクションに対して様々なレベルで権限を設定することが出来ます。また、認証機能を利用しユーザ毎に違ったデータを表示することが可能です。
認証
先述の通り Tuigwaa のユーザは LDAP で一元管理されます。ユーザとロールの作成や編集、及び個々のサイトに対するロールの割り振りについては Tuigwaa Manager から行う事が出来ます。
承認
Tuigwaa では、ロールベースで以下のアクセス権限を設定します。
- サイトに対するアクセス権限
- サイト内でのアクションに対するアクセス権限
- フォルダに対するアクセス権限
サイトに対するアクセス権限は Tuigwaa Manager で設定し、これは、サイトを一つのアプリケーションと考えているため他のセキュリティ事項はサイト内で設定を行います。
Tuigwaa のロールベースでは、一人のユーザが複数のロールを持っていた場合にはどれか一つのロールが権限をクリアすればその動作を実行することが可能となります。
- サイトに対するアクセス権限
-
この項目は Tuigwaa Manager のサイトの新規作成または編集で設定します。セキュリティ設定の制限つきのサイトというラジオボタンにチェックすることで有効となり、サイト内でのセキュリティ設定はここで割り振ったロールに対して行われます。
例えば、インターネットに公開するような場合、制限つきのサイトで未認証の人も一部ページを見ることが可能 としておき、このようにすることで、認証なしでサイト閲覧可能ではあるが、データベースの編集や、あるフォルダの中身を閲覧出来ないというサイト構築が可能となります。
注意点として、Tuigwaa Manager の設定がサイトにおける設定よりも優先されるので、Tuigwaa Manager でサイトの編集を行うと、サイト内で設定したセキュリティ情報は全て初期化されます。 - サイト内でのアクションに対するアクセス権限
-
セキュリティつきサイトで設定した場合、サイト内のメニューバーに 設定->セキュリティ が表示されます。以下のアクションに対して、それぞれのロールに対しそのサイトに割り振られたロールに対する権限設定を行うことが出来ます。
- データベース情報閲覧
- データベース変更
- ページ閲覧
- ページ変更
- ロジック閲覧
- ロジック変更
- サイト管理
アクションに対するセキュリティを設定することによって、アクセスしたロールによってメニューバーのメニューが動的に変更されます。
上記で割り振られたロールの中で[unauthenticated] は未認証を表す。未認証の人が閲覧できるセキュリティつきサイト の場合は、初期化時は未認証の人はページ閲覧のみとなっています。 - フォルダに対するアクセス権限
-
どのロールがどのフォルダにアクセスできるかを設定出来ます。メニューバーの設定->フォルダ管理 でフォルダ一覧を表示したときにセキュリティつきのサイトであれば、フォルダの右にセキュリティというリンクが表示されます。そこでどのロールがそのフォルダにアクセスできるを設定を行うことが出来ます。
例 えば、インターネットに公開しているサイトを作成している場合、「管理フォルダ」を作成し、ユーザに見られたくないページをそのフォルダ以下に保存しま す。そしてそのフォルダは admin ロールのみに閲覧許可しておくと、未認証の人がアクセスできるページと、セキュリティがかかったページを一つのサイト内に作成することが可能となります。
添付ファイルのセキュリティについて
添付ファイルに対するセキュリティの概念として
- アクセス手段に対するアクセス権限
- ファイル自身のアクセス権限
という二種類の権限が Tuigwaa では採用されています。ファイルへのアクセス手段としては、サイト内からのアクセスと、WebDAV からのアクセスという二つがあります。それぞれのアクセス権限とアクセス可能条件は以下の通りです。
WebDAV からのアクセス権限 (閲覧) | 未認証ユーザが閲覧可能なサイトでも認証が必要。認証していればどのロールでもアクセス可能。 |
WebDAV からのアクセス権限 (編集) | 閲覧の場合と同じ |
サイト内からのアクセス権限 (閲覧) | サイト管理の閲覧権限をもつユーザがアクセス可能 |
サイト内からのアクセス権限 (編集) | サイト管理のアクション権限をもつユーザがアクセス可能。 |
ファイル自身のアクセス権限 | サイトで使われるロールのみアクセス可能 |
上記のようにサイトに割り振られたロールや、特定のフォルダに対するアクセス制限がファイルに設定されていた場合にはアクセス権限として、閲覧権限を所有していても、そのファイルへのアクセス権限がない場合には許可されません。
その他の機能
- ページの作成者、閲覧者の記録
-
誰がどのページを作成して、誰が編集したかなどを追跡することが可能。
- セキュリティリンク
-
アクセス権限のないドキュメントや、ページ作成に対するリンクは表示されず、権限のないユーザにはそのようなリンクがあること自体を意識させないようにすることが可能。
サイト設定
サイト設定では、サイト毎にその配下のフォルダ管理やデザインの設定を行う事が出来ます。
フォルダ管理
- フォルダの作成機能
-
指定の名前でフォルダを作成出来ます。
- フォルダ・ファイル操作
-
各フォルダ・ファイルの名前の変更や移動、削除を行う事が出来ます。また、フォルダの場合にはそのフォルダ以下のコンテンツを閲覧できるロールを指定することも可能です。
デザイン
デザイン設定ではサイトのロゴファイルのアップロードやレイアウト指定などの設定を行う事が出来ます。
- サイトロゴ
- サイトロゴをアップロードします。ロゴファイルはサイトのヘッダ部に表示されます。
- サイトカラー
- ベーシック (デフォルト)、オレンジ、グリーンからサイトのベースカラーを選択できます。
- ページスタイル
- ページのレイアウトを選択できます。選択できるのは、二段組 [左:メニュー/右:コンテンツタイプ] 、二段組 [左:コンテンツ/右:メニュータイプ] 、三段組の三種類。
- メニューページ
- このページを表示する際のレイアウト内のメニューページで表示するページ名を指定します。
- 右サイドページ
- 三段組スタイルを選択時に右側に表示されるページを指定します。
プラグイン
前述したように、コンテンツからデータベースの内容を表示したり、様々な処理を行うのに、プラグインが用いられます。プラグインは、表示処理以外に、直接 URL による指定でその処理を行うものもあります。以下にプラグインの一覧を示します。
プラグイン名 | カテゴリ | 機能概略 |
table | 基本データベース | テーブルや集計表の内容を表形式で出力します。フィルタの指定も可能。 |
edittable | 拡張データベース | テーブル内容の一括編集を行います。カスタムフォームと合わせて利用することを推奨します。 |
sresult | 基本データベース | 検索フォームの結果を表示します。 |
form | 基本データベース | テーブルの全カラムのデータを入力するフォームを表示します。 |
cform | 基本データベース | カスタムフォームを表示します。 |
sform | 基本データベース | 検索フォームを表示します。 |
data | 基本データベース | テーブルのレコードの各カラムのデータを指定して表示します。 |
datalink | 拡張データベース | レコード詳細ページへのリンクを表示します。 |
fklink | 拡張データベース | 関連テーブルへのレコード詳細ページへのリンクを表示します。 |
value | 集計関連 | 集計値を表示します。 |
datalist | 拡張データベース | レコード詳細ページを並べて表示します。 |
graph | 集計関連 | 集計表からグラフを生成します。 |
excellink | 集計関連 | テーブルのデータからエクセルデータを生成します。 |
include | 特殊 | 指定されたページのコンテンツを表示します。 |
calendar_viewer | Blog | 指定されたカレンダーの内容を一覧表示します。 |
trackback | Blog | トラックバックURLの表示と、トラックバックピング受付時の処理を行います。 |
comment | Blog | コメント入力フォームの表示と、コメント入力処理を行います。 |
webalbum | 添付ファイル | ページに添付されたデータから画像データを認識し、サムネイルの生成処理及び表示を行います。 |
gmap | 特殊 | Google Map を表示します。 |
特殊 | email の送信フォームを表示と、メール送信処理を行います。 | |
tablefeed | 拡張データベース | テーブルの更新情報の RSS を生成します。 |
counter | 特殊 | そのページに対するカウンターの表示と、カウント処理を行います。 |
ref | 特殊 | 添付ファイルや、URL に対するリンクを表示します。 |
br | 特殊 | 改行を表示します。 |
page | 特殊 | ページ名を表示します。 |
fpage | 特殊 | ページの絶対パスを表示します。 |
pageinfo | 特殊 | ページのバージョン情報、更新日時、更新ユーザ、作成日時、作成ユーザを表示します。 |
contents | 特殊 | 目次を表示します。 |
recent | 特殊 | 最新更新ページ名を表示します。 |
clear | 特殊 | スタイルシートの float をクリアします。 |
folderlist | 特殊 | 指定されたフォルダ以下のファイルを表示します。 |
list | 特殊 | 現在のページのフォルダ以下のファイルを表示します。 |
navi | 特殊 | DocBook 風のナビゲーションを表示します。 |
calendar | Blog | カレンダーを表示します。 |
rssreader | Blog | 指定した RSS feed の内容を表示します。 |
newpage | 特殊 | 印刷時にその位置で改ページを行います。 |
color | 標準 | 子要素を指定した色にて表示します。 |
size | 標準 | 子要素を指定したサイズにて表示します。 |
date | 特殊 | 現在日付を表示します。 |
time | 特殊 | 現在時間を表示します。 |
now | 特殊 | 現在日時を表示します。 |
lastmod | 特殊 | 最終更新日時を表示します。 |
calc | 標準 | 四則演算の結果を表示します。 |