diff jungleTreeBrowser.tex @ 8:c1d7270965c5

add databases.tex jungleTreeBrowser renderingEngine.tex
author tatsuki
date Wed, 01 Feb 2017 08:25:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jungleTreeBrowser.tex	Wed Feb 01 08:25:09 2017 +0900
@@ -0,0 +1,49 @@
+\chapter{Jungleを使ったアプリケーション}
+本章では、Jungleを使用した例題アプリケーションを記述する。
+
+
+\section{Jungle Tree ブラウザ}
+
+Jungleの木に対する変更において、{\tt JungleTreeEditor}クラスを用いる方法はプログラム上では便利だが、手動で変更するのには向いていない。
+よって、組み込みWEBサーバーであるJettyを使用し、Servletとして木の表示と編集を実現した。
+
+\subsection{木構造の表示}
+JungleTreeブラウザにおいて、Jungle DBはWEBサーバー内に存在し、それから表示に必要なHTMLを生成してブラウザに転送する。
+%図\ref{printNode}は、サーバからデータを送り、ブラウザ上でノードを可視化するまでの流れである。
+この流れは、Jungleの{\tt NodePath}の処理を除けば通常のデータベースのレコードの表示と同等である。
+
+編集するノードのパスはURLで記述されている。例えば、
+{\small
+  \verb! http://localhost/showBoardMessage?!
+    \verb!           bname=Layout&path=-1,0,2!
+}
+などとなる。
+
+以下にJungleTreeブラウザを用いて、ノードを表示するまでの流れを記述する。
+\begin{enumerate}
+\item ユーザーは表示したいノードのパスをURLでJungleTreeブラウザに送る。
+\item JungleTreeブラウザは、WEBサーバ内にあるJungleから、対応した木を取得する。
+\item JungleTreブラウザは、パスで指定した位置のノードを木から取得する。
+\item 取得したノードの中身を、JungleTreeブラウザが表示する。
+\end{enumerate}
+
+
+\subsection{Jungle Tree ブラウザを使った木の編集}
+%図\ref{JungleEdit}はブラウザを用いたJungleの木の更新の流れである。
+以下にJungle Treeブラウザを用いた木の編集の流れを示す。
+\begin{enumerate}
+\item ユーザーはJungleTreeブラウザで編集したいノードを表示するページに移動する 。
+\item ユーザーはJungleTreeブラウザに木の変更要求を送る。
+\item JungleTreeブラウザはWebサーバー内にあるJungleから、対応した木を取得する。
+\item 編集を行う木から、{\tt JungleTreeEditor}クラスを取得し、木の変更を行う。
+\item 木の変更をJungleにコミットする。
+\item 木の変更の結果を表示する。
+\end{enumerate}
+
+パスを使用することにより、木の変更をRestfulに行うことができるように見えるが、木のパスは特定の木の版に固有のものである。
+ブラウザとWEBサーバは、セッションで結合されており、そのセッションが同じ版の木を編集していれば問題なく成功する。
+ただし、編集し終わった時に、他の編集が割り込んでいたら、その編集は無効となる。
+%この点が既存のRDBとは異なる。
+また巨大な木を操作する時には、Pathを直接URLに含むことはできないので、他の工夫が必要になると考えられる。
+このアプリケーションでは任意の木を取り扱うので、木の大きさの現実的な制限を除けば木の設計の問題はない。
+