view bbs.tex @ 32:8512227869d5

zemi
author tatsuki
date Tue, 29 Nov 2016 19:52:37 +0900
parents 11dc58bf5a2b
children 388da5c83f48
line wrap: on
line source

\section{Jungle Tree ブラウザ}

Jungleの木に対する変更において、JungleTreeEditorクラスを用いる方法はプログラム上では便利だが、手動で変更するのには向いていない。
よって、組み込みWEBサーバーであるJettyを使用し、Servletとして木の表示と編集を実現した。

\subsection{木構造の表示}
JungleTreeブラウザにおいて、Jungle DBはWEBサーバー内に存在し、それから表示に必要なHTMLを生成してブラウザに転送する。
%図\ref{printNode}は、サーバからデータを送り、ブラウザ上でノードを可視化するまでの流れである。
この流れは、JungleのNodePathの処理を除けば通常のデータベースのレコードの表示と同等である。

編集するノードのパスはURLで記述されている。例えば、
{\small
\verb! http://localhost/showBoardMessage?!
\verb!           bname=Layout&path=-1,0,2!
}
などとなる。
\begin{enumerate}
\item ユーザーは表示したいノードのパスをURLでJungleTreeブラウザに送る。
\item JungleTreeブラウザは、WEBサーバ内にあるJungleから、対応した木を取得する。
\item JungleTreブラウザは、パスで指定した位置のノードを返す関数、tree.getNodeOfPath()を用いて、木から表示するノードを取得する。
\item 取得したノードの中身を、JungleTreeブラウザが表示する。
\end{enumerate}


\subsection{ブラウザを使った木の編集}
%図\ref{JungleEdit}はブラウザを用いたJungleの木の更新の流れである。

\begin{enumerate}
\item ユーザーはJungleTreeブラウザで編集したいノードを表示するページに移動する 。
\item ユーザーはJungleTreeブラウザに木の変更要求を送る。
\item JungleTreeブラウザはWebサーバー内にあるJungleから、対応した木を取得する。
\item 編集を行う木から、JungleTreeEditorクラスを取得する。
\item JungleTreeEditorクラスを使用して木の変更を行う。
\item 木の変更をJungleにコミットする。
\item 木の変更の結果を表示する。
\end{enumerate}

パスを使用することにより、木の変更をRestfulに行うことができるように見えるが、木のパスは特定の木の版に固有のものである。
ブラウザとWEBサーバは、セッションで結合されており、そのセッションが同じ版の木を編集していれば問題なく成功する。
ただし、編集し終わった時に、他の編集が割り込んでいたら、その編集は無効となる。
%この点が既存のRDBとは異なる。
また巨大な木を操作する時には、Pathを直接URLに含むことはできないので、他の工夫が必要になると考えられる。
このアプリケーションでは任意の木を取り扱うので、木の大きさの現実的な制限を除けば木の設計の問題はない。