Mercurial > hg > Papers > 2016 > tatsuki-prosym
view bbs.tex @ 24:24a324c76245
Modify
author | tatsuki |
---|---|
date | Tue, 29 Nov 2016 17:31:07 +0900 |
parents | 27f92e7af1fc |
children | 11dc58bf5a2b |
line wrap: on
line source
\section{Jungle Tree ブラウザ} Jungleの木に対する変更において、JungleTreeEditorクラスを用いる方法はプログラム上では便利だが、手動で変更するのには向いていない。 よって、組み込みWEBサーバーであるJettyを使用し、Servletとして木の表示と編集を実現した。 \subsection{木構造の表示} Jungle DBはWEBサーバー内に存在し、それから表示に必要なHTMLを生成してブラウザに転送する。 図\ref{printNode}は、サーバからデータを送りブラウザ上でノードを可視化するまでの流れである。 この流れはJungleのNodePathの処理を除けば通常のデータベースのレコードの表示と同等である。 \begin{figure}[h] \begin{center} \includegraphics[height = 6cm , bb=0 0 622 497]{images/printNodeValue.pdf} \caption{ブラウザを使用したNodeの可視化} \label{printNode} \end{center} \end{figure} \begin{enumerate} \item ユーザーは表示したいノードのパスをJungleTreeブラウザに送る。 \item JungleTreeブラウザは、WEBサーバ内にあるJungleから、対応した木を取得する。 \item JungleTreブラウザは、パスで指定した位置のノードを返す関数tree.getNodeOfPath()を用いて、木から表示するノードを取得する。 \item (3)で取得したノードの中身を、JungleTreeブラウザが表示する。 \end{enumerate} \subsection{ブラウザを使った木の編集} 図\ref{JungleEdit}はブラウザを用いたJungleの木の更新の流れである。 編集するノードのパスはURLで記述されている。例えば、 {\small \verb! http://localhost/showBoardMessage?! \verb! bname=Layout&path=-1,0,2! } などとなる。 \begin{figure}[h] \begin{center} \includegraphics[height = 10cm , bb=0 0 622 971]{images/TreeEdit.pdf} \caption{ブラウザを介した木の編集} \label{JungleEdit} \end{center} \end{figure} \begin{enumerate} \item ユーザーはJungleTreeブラウザで編集したいノードを表示するページに移動する \item ユーザーはJungleTreeブラウザに木の変更要求を送る \item JungleTreeブラウザはWebサーバー内にあるJungleから、対応した木を取得する \item 木からJungleTreeEditorクラスを取得する \item JungleTreeEditorクラスを使用して木の変更を行う \item 木の変更をJungleにコミットする \item 木の変更の結果を表示する \end{enumerate} パスを使用することにより木の変更をRestfulに行うことができるように見えるが、木のパスは特定の木の版に固有のものである。 ブラウザとWEBサーバはセッションで結合されており、そのセッションが同じ版の木を編集していれば問題なく成功する。 ただし、編集し終わった時に、他の編集が割り込んでいたら、その編集は無効となる。この点が既存のRDBとは異なる。 また巨大な木を操作する時には、Pathを直接URLに含むことはできないので、他の工夫が必要になると考えられる。 このアプリケーションでは任意の木を取り扱うので、木の大きさの現実的な制限を除けば木の設計の問題はない。